ECS多网卡从单机切换到双机主备HA
著作权属于斌哥
使用该方案切换完成后的最终双可用区高可用架构部署图如下:
《ECS多网卡从单机切换到双机主备HA操作参考》
准备工作和说明:
当前为一台虚机ecs-guobin-01 (可用区2),部署运行web接入服务nginx(所有网站访问的总入口),存在单点故障问题,现在需要增加冗余高可用,在另一个可用区1新增加1台ecs -guobin-02 并按照和01同样的配置文件启动运行nginx
Ecs-guobin-01有三张内网网卡:
Eth0:172.16.1.1 当前对应弹性IP地址:114.116.3.183
Eth1:172.16.1.2 当前对应弹性IP地址:114.116.30.54
Eth2:172.16.1.3 当前对应弹性IP地址:114.116.19.172
Ecs-guobin-02 有三张内网网卡:
Eth0:172.16.1.4
Eth1:172.16.1.5
Eth2:172.16.1.6
规划VIP(虚拟IP地址)和私网IP对应关系如下:
172.16.1.1、172.16.1.4结对 对应VIP 172.16.100.101 对应弹性IP地址:114.116.3.183
172.16.1.2、172.16.1.5结对 对应VIP 172.16.100.102 对应弹性IP地址:114.116.30.54
172.16.1.3、172.16.1.6结对 对应VIP 172.16.100.103 对应弹性IP地址:114.116.19.172
两个主机上分别配置添加完整的策略路由:
Ecs-guobin-01:(在原有私网IP的策略路由上,增加VIP的策略路由)
Ecs-guobin-02:
在配置了正确的策略路由后,当前直接从互联网请求3个EIP都可以正常访问到ecs-guobin-01主机上的网站内容:
一、先在控制台上绑定私网IP和VIP的关系,注意在绑定服务器时候,选择正确的网卡。
最终全部绑定完成后如图所示:
二、在2台主机上分别配置并启用keepalived
配置注意事项:vrrp通告采用单播方式,避免相互干扰。
1、Ecs-guobin-01这台(优先级为100,默认为主节点)的keepalived 配置文件参考:
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "/etc/keepalived/check_alive.sh"
interval 3
timeout 10
fall 2
rise 2
weight 20
}
vrrp_instance eth0 {
unicast_src_ip 172.16.1.1
unicast_peer {
172.16.1.4
}
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
172.16.100.101
}
track_script {
check_nginx
}
}
vrrp_instance eth1 {
unicast_src_ip 172.16.1.2
unicast_peer {
172.16.1.5
}
state MASTER
interface eth1
virtual_router_id 52
priority 100
advert_int 1
virtual_ipaddress {
172.16.100.102
}
track_script {
check_nginx
}
}
vrrp_instance eth2 {
unicast_src_ip 172.16.1.3
unicast_peer {
172.16.1.6
}
state MASTER
interface eth2
virtual_router_id 53
priority 100
advert_int 1
virtual_ipaddress {
172.16.100.103
}
track_script {
check_nginx
}
}
2、ecs-guobin-02这台(优先级为90,默认为备节点)的keepalived配置文件参考:
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "/etc/keepalived/check_alive.sh"
interval 3
timeout 10
fall 2
rise 2
weight 20
}
vrrp_instance eth0 {
unicast_src_ip 172.16.1.4
unicast_peer {
172.16.1.1
}
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
virtual_ipaddress {
172.16.100.101
}
track_script {
check_nginx
}
}
vrrp_instance eth1 {
unicast_src_ip 172.16.1.5
unicast_peer {
172.16.1.2
}
state BACKUP
interface eth1
virtual_router_id 52
priority 90
advert_int 1
virtual_ipaddress {
172.16.100.102
}
track_script {
check_nginx
}
}
vrrp_instance eth2 {
unicast_src_ip 172.16.1.6
unicast_peer {
172.16.1.3
}
state BACKUP
interface eth2
virtual_router_id 53
priority 90
advert_int 1
virtual_ipaddress {
172.16.100.103
}
track_script {
check_nginx
}
}
补充脚本文件/etc/keepalived/check_alive.sh内容:
#!/bin/sh
/bin/killall -0 nginx
ret1=`echo $?`
function test_gw()
{
gw=`/sbin/ip route |grep default |/bin/awk '{print $3}'`
/bin/ping $gw -c3 -W1 -i0.2 >/dev/null 2>&1
return $?
}
test_gw
ret2=`echo $?`
if [ $ret1 -eq 0 ];then
if [ $ret2 -eq 0 ];then
exit 0
else
sleep 1
test_gw
if [ $? -ne 0 ];then
/sbin/service keepalived stop
fi
fi
else
exit 1
fi
三、业务割接
1、把原来绑定在网卡上的弹性IP地址先执行”解绑“,然后按照前期规划绑定到对应VIP上:
(注意此操作过程中,业务会中断受损,中断时间取决于从解绑到新绑定完成过程的操作时间)
按此步骤重复操作后,完成所有弹性IP的割接:
2、简单验证下业务访问正常:
四、验证HA的常规故障切换
1、 01主机执行关机(模拟意外宕机),VIP漂移到02主机,业务正常运行。
2、 在01主机上kill杀掉nginx,VIP漂移到02主机,业务正常运行。
3、 防脑裂场景
在两台主机之间网络中断情况下,需要考虑避免出现脑裂情况。比如可以做个判断,到网关是否连通,如果出现连续几次ping不通 gateway,则可以(停掉keepalived释放VIP地址)。
- 点赞
- 收藏
- 关注作者
评论(0)