【雷池】软件版-反向代理WAF(集群)安装部署教程
各位师傅们好,欢迎来到SafeLine下一代 Web 应用防火墙安装部署-软件集群反向代理章节,本次教程中相关版本号仅做举例,实际以安装时的安装版本号为准。
本文会以常见安装步骤作为举例,如有完整部署文档需求可咨询长亭技术支持人员获取。
安装说明
名词定义
【节点】指一台服务器,可以是物理服务器、云服务器
【安装目录】指雷池资源主要保存目录,通常为 /data/safeline
【数据盘】指安装目录所在的硬盘
【管理节点】指雷池集群中的管理服务、日志服务等所在节点
【Agent节点】指雷池集群中的转发和检测服务所在节点
- 此部署模式分为
管理节点
和Agent节点
两部分,需要负载均衡设备
负责转发流量到WAF设备实现业务负载和集群的效果,不支持VRRP的VIP模式去实现业务集群效果。
安装前准备
常用工具列表
Linux 下常用工具列表,可以参考进行安装:
tcpdump:网络抓包工具
curl:HTTP 请求工具
vim:编辑文件工具
strace:跟踪系统调用工具
tmux:终端窗口工具
net-tools:其他网络工具
sysstat:性能监控
Ubuntu
下安装,执行 apt install -y tcpdump curl vim strace net-tools sysstat
CentOS
下安装,执行 yum install -y tcpdump curl vim strace net-tools sysstat
资源准备
【节点基本要求】
管理节点
CPU:>= 8 核
内存:>= 16 GB
数据盘容量:>= 500 GB,云服务器需要检查所选数据盘 IOPS 值大于 1000
Agent节点
CPU:>= 4 核
内存:>= 8 GB
数据盘容量:>= 200 GB
操作系统:Ubuntu >= 16.04、CentOS >= 7.4、Debian >= 8,其他 Linux 系统需实际测试,通常都可以安装
推荐系统 Ubuntu 18.04、CentOS 7.8
【节点配置说明】
对于 CPU、内存,节点不可低于上述基本要求,Agent节点参考以下数据选择:
模式 | 节点类型 | 单核承载流量 |
---|---|---|
反向代理 | 物理服务器 | HTTP:2000qps |
HTTPS:250qps | ||
云服务器 | HTTP:1000qps | |
HTTPS:100qps |
- qps 为每秒请求数;cps 为每秒新建连接数
注意:
-计算时,应该满足瓶颈需求,比如 HTTPS 的 cps
-如果客户原来有 nginx 节点配置,也可以参考选配
-对于内存,数值上可以简单认为 CPU 核数的两倍
节点基础配置
以下操作默认在所有节点
的 root
权限下操作
【校准节点时间】
使用 date
命令检查服务器时间是否正确,如不准确需要进行修改:
方案一:让客户提供 NTPServer,配置NTP自动化同步时间,配置方法见:链接
方案二:如客户没有 NTPServer、服务器也不能通公网,手动修改为正确的时间,配置方法见:链接
【确认数据盘可用情况】执行 df -Th /data/safeline
检查安装目录所在数据盘 Type
,数据盘格式推荐 ext4
【拷贝安装包到节点】
主要为安装文件 safeline-2-software-installer-*.bin
,如果为 OEM 版本、arm 版本,名字可能有区别,但安装方式基本一致
通常文件名包含一个 md5 校验值,可以运行如下命令校验 md5 数值是否一致
md5sum safeline-2-software-installer-*.bin
【运行安装包】
将安装文件 safeline-2-software-installer-*.bin
拷贝到节点上,运行时通常会解压出文件,建议放在单独目录执行安装包
执行(需要输入密码):
INSTALL_DIR=safeline-2-`date +%F`
mkdir $INSTALL_DIR
mv safeline-2-software-installer-*.bin $INSTALL_DIR
cd $INSTALL_DIR
chmod +x safeline-2-software-installer-*.bin
./safeline-2-software-installer-*.bin
此步骤检查是否安装 docker
,如果没有安装则进行自动安装;
docker
推荐从这里默认安装,日志会输出「Docker 18.06.3-ce installed」
类似字样
如果为升级安装,提示是否升级引擎时,默认回车升级到最新引擎:
【调整机器配置】
使用自动化脚本配置机器:
在运行安装包的目录下,进入 waf-tools
子目录,阅读 README.md
使用相关脚本优化机器配置和格式化多余磁盘
【运行安装前检查】
执行 minion check run before-install
,如输出 Failed
项,需要进一步确认后再继续
【使用数据盘存储 docker 数据】
docker 镜像通常位于 /var/lib/docker 目录下,假设数据盘挂载 /data 目录中,可以执行以下命令将 docker 数据存储到数据盘:
systemctl stop docker
mv /var/lib/docker /data/
ln -s /data/docker /var/lib/
systemctl start docker
开始安装
管理节点
【初始化配置】
执行 minion setup -p /data/safeline -t S20Management
- 记录输出中的「Postgres Password」「Minion API Token」「Minion Cert」,一个样例:
- 管理节点不接入,即不安装流量转发服务、流量监测服务,侧执行
minion setup -p /data/safeline -t S20Management --block-service detector --blockservice mario-collector --block-service tengine
【启动服务】
执行systemctl start minion
【检查状态】
- 执行
docker ps -a
,检查容器状态都是 Up、Healthy
【导入证书】 - 浏览器打开
https://当前机器 IP :9443
访问管理界面,导入证书后登录管理界面进行使用
- 登录管理界面后,查看「系统信息-节点状态」确认节点正常
Agent节点
【安装前准备】
各节点的主机名不允许重复,如有重复先使用 hostnamectl set-hostname
命令修改主机名
【初始化配置】
执行 minion setup -p /data/safeline -t S20Agent
,按照提示输入并回车:
「Database Password」
:输入部署管理时输出的「Postgres Password」
,或者在管理节点上获取,执行 minion db get /minion/v1/services/postgres_password
「Minion API TOKEN」
:输入部署管理时输出的「Minion API Token」
,或者在管理节点上获取,执行 minion db get /minion/v1/services/minion_api_token
「Management Address with Port and Protocol」
:输入管理界面访问地址,https://{管理节点 IP}:9443
「Minion Certificate」
:输入部署管理时输出的「Minion Cert」
,或者在管理节点上获取,执行(已自动把换行全
部换成 \n):cat /data/safeline/resources/management/certs/minion.crt | awk '{printf "%s\\n", $0}';echo
- 一个样例:
【启动服务】
执行 systemctl start minion
【检查状态】
- 执行
docker ps -a
,检查容器状态都是Up
、Healthy
- 从管理界面上「系统信息-节点状态」查看 Agent 节点的状态