开始使用
安全组规则修改(可选)
安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。
如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。
访问服务端
- 访问Flexus云服务器X实例控制台,打开浏览器,输入3.2快速部署步骤3创建资源的EIP地址,验证目的端Web是否正常,如下图所示。
图1 web1
图2 web2
动态添加路由
- 动态添加路由(keepalived):源端通过公网访问目的端时,对应的业务需要使用自己的源端公网IP作为出口IP,因此需要配置虚拟IP的转发路由。
由于虚拟IP地址会进行漂移,并且在未绑定虚拟IP地址的服务器上不能添加虚拟IP对应的路由规则,所以当虚拟IP漂移到主备云服务器中的一台时,需要为主备服务器动态添加路由。
请登录源端(上海一)的主备服务器,执行步骤1-步骤2的操作。
创建添加路由脚本 命令:vim /etc/keepalived/addRoute.sh
替换以下字段的值:
destination1:web1服务EIP1
destination2:web2服务EIP2
destinationVip1:虚拟IP1
destinationVip2:虚拟IP2
添加如下内容
#!/bin/bash # 要检查的路由目的地 destination1="1.94.xx.22" destination2="113.44.xx.99" destinationVip1="172.16.0.203" destinationVip2="172.16.0.47" # 使用ip route show查找路由,通过grep检查输出 if ip route show | grep -q "$destination1" ; then echo "路由到 $destination1 存在。" else echo "路由到 $destination1 不存在。" ip route add $destination1 via 172.16.0.1 dev eth0 src $destinationVip1 fi if ip route show | grep -q "$destination2" ; then echo "路由到 $destination2 存在。" else echo "路由到 $destination2 不存在。" ip route add $destination2 via 172.16.0.1 dev eth0 src $destinationVip2 fi
为路由脚本添加可执行权限
命令:chmod +x /etc/keepalived/addRoute.sh
- 添加路由脚本:在Nginx监控脚本中加入添加路由脚本,替换原有内容。
vim /etc/keepalived/chk_nginx.sh
加入添加以下路由执行脚本
#!/bin/bash sh /etc/keepalived/addRoute.sh counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl start nginx.service sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then systemctl stop keepalived.service fi fi
- 在主服务器上可以查看已配置的路由信息
命令:ip route
配置转发规则
- 在源端(上海一)的主备服务器上分别配置Nginx的转发规则,执行以下命令,创建转发配置文件,添加如下内容。
命令:vim /etc/nginx/conf.d/web-src.conf
修改替换以下内容
server:web服务绑定的两个EIP
server_name:虚拟IP绑定的两个EIP
upstream web1 { server 1.94.xx.22:80; } upstream web2 { server 113.44.xx.99:80; } server { listen 80; server_name 1.94.xxx.236; access_log /var/log/nginx/web1.access.log main; error_log /var/log/nginx/web1.error.log crit; location / { proxy_pass http://web1; proxy_set_header Host $http_host; } } server { listen 80; server_name 115.120.xxx.252; access_log /var/log/nginx/web2.access.log main; error_log /var/log/nginx/web3.error.log crit; location / { proxy_pass http://web2; proxy_set_header Host $http_host; } }
- 执行以下命令热加载生效Nginx配置
命令:nginx -s reload
验证不同业务IP访问转发
- 打开浏览器,输入绑定在虚拟IP1上的EIP1(1.94.xxx.236),验证是否转发到目的端web1上,网页如下图所示,表示转发成功。
图3 web1
- 打开浏览器,输入绑定在虚拟IP2上的EIP2(115.120.xxx.252),验证是否转发到目的端web2上。网页如下图所示,表示转发成功。
图4 web2
验证主备服务器的自动切换功能
- 接验证主备切换所示,主服务器为Flexus-X-HA2,远程登录Flexus-X-HA2,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA2。回显类似如下信息,可以看到虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,再次确认Flexus-X-HA2为主服务器。
命令:ip a
图5 网卡信息
- 执行以下命令,停止主服务器的Keepalived服务或者重启主ECS二选一,本示例中主服务器为Flexus-X-HA2。
停止Keepalived服务 命令:systemctl stop keepalived.service 重启主ECS reboot
- 打开浏览器,输入绑定在虚拟IP1上的EIP1(1.94.xxx.236)、输入绑定在虚拟IP2上的EIP2(115.120.xxx.252),验证主服务器挂掉之后能否正常访问网页。
网页如下图所示,表示网页访问正常。
图6 web1
图7 web2
- 执行以下命令,验证主ECS是否切换成Flexus-X-HA1。远程登录Flexus-X-HA1,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA1的eth0网卡上。
回显类似如下信息,可以看到虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,此时确认Flexus-X-HA1为主ECS。
命令:ip addr show
图8 网卡信息