使用LVS+Nginx配置NAT模式的Web集群
准备条件
需要最少准备三台虚拟机,关闭selinx和防火墙。
主机名 | 身份 | 网络接口 | 连接模式 | IP地址 | 网关 | 软件 |
---|---|---|---|---|---|---|
DS | 调度服务器 | ens160 | nat | 192.168.20.40/24 | 192.168.20.254 | ipvsadm |
DS | 调度服务器 | ens224 | 仅主机 | 172.21.8.10/24 | - | ipvsadm |
web1 | 真实服务器 | ens224 | 仅主机 | 172.21.8.20/24 | 172.21.8.10/24 | nginx |
web2 | 真实服务器 | ens224 | 仅主机 | 172.21.8.30/24 | 172.21.8.10/24 | nginx |
PS:
- DS一定是两块网卡,并且用一张网卡去作为真实服务器的网关。
- DS的两块网卡最好模式是不一样的。
DS的配置
下载ipvsadm
1 | yum install -y ipvsadm |
添加一个虚拟服务指定运输层协议为TCP、VIP为192.168.20.40、端口为80、调度算法为加权轮训。
1 | ipvsadm -A -t 192.168.20.40:80 -s rr |
为虚拟服务器添加后端真实服务器
1 | ipvsadm -a -t 192.168.20.40:80 -r 172.21.8.20:80 -m |
1 | ipvsadm -a -t 192.168.20.40:80 -r 172.21.8.20:80 -m |
使用命令查看生成的策略
1 | ipvsadm -Ln |
开启路由转发功能
1 | echo "1" > /proc/sys/net/ipv4/ip_forward |
使用命令修改轮训的时间
1 | ipvsadm --set 1 1 1 |
使用命令查看超时时间设置
1 | ipvsadm -L --timeout |
WEB1配置
下载Nginx
1 | yum install -y nginx |
nginx的配置文件保存在/etc/nginx/nginx.conf
使用命令去掉Nginx配置文件的空行和注释行
1 | egrep -v "^[[:space:]]*#|^$" nginx.conf.default > nginx.conf |
修改配置文件
1 | worker_processes 1; |
创建HTML资源文件
1 | mkdir /web |
编辑网页入口文件
1 | touch /web/index.html |
开启Nginx服务
1 | nginx |
验证服务开启
1 | lsof -i:80 |
WEB2配置
web2配置基本同web1。
使用命令去掉Nginx配置文件的空行和注释行
1 | egrep -v "^[[:space:]]*#|^$" nginx.conf.default > nginx.conf |
修改配置文件
1 | worker_processes 1; |
创建HTML资源文件
1 | mkdir /web |
编辑网页入口文件
1 | touch /web/index.html |
开启Nginx服务
1 | nginx |
验证服务开启
1 | lsof -i:80 |
测试
先在web1主机
1 | curl 172.21.8.20 |
然后在web2主机
1 | curl 172.21.8.30 |
最后在DS主机上
1 | curl 192.168.20.40 |
如果观察到web1111
和web2222
来回显示在页面上则配置成功。
其他可能用到的命令
Linux查看路由表
1 | ip r s |
重启Nginx的命令
1 | nginx -s reload |
关闭Nginx的命令
1 | nginx -s stop |