ECS多网卡从单机切换到双机主备HA

举报
腓特烈大帝的前女友 发表于 2018/08/02 20:33:26 2018/08/02
【摘要】 著作权属于斌哥使用该方案切换完成后的最终双可用区高可用架构部署图如下:《ECS多网卡从单机切换到双机主备HA操作参考》 准备工作和说明:当前为一台虚机ecs-guobin-01 (可用区2),部署运行web接入服务nginx(所有网站访问的总入口),存在单点故障问题,现在需要增加冗余高可用,在另一个可用区1新增加1台ecs -guobin-02 并按照和01同样的配置文件启动运行nginx ...

著作权属于斌哥

使用该方案切换完成后的最终双可用区高可用架构部署图如下:

image.png

《ECS多网卡从单机切换到双机主备HA操作参考》

 

准备工作和说明:

当前为一台虚机ecs-guobin-01 (可用区2),部署运行web接入服务nginx(所有网站访问的总入口),存在单点故障问题,现在需要增加冗余高可用,在另一个可用区1新增加1ecs -guobin-02 并按照和01同样的配置文件启动运行nginx

 

 

Ecs-guobin-01有三张内网网卡:

Eth0172.16.1.1    当前对应弹性IP地址:114.116.3.183

Eth1172.16.1.2    当前对应弹性IP地址:114.116.30.54

Eth2172.16.1.3    当前对应弹性IP地址:114.116.19.172

 

Ecs-guobin-02 有三张内网网卡:

Eth0172.16.1.4

Eth1172.16.1.5

Eth2172.16.1.6

 

规划VIP(虚拟IP地址)和私网IP对应关系如下:

172.16.1.1172.16.1.4结对   对应VIP 172.16.100.101  对应弹性IP地址:114.116.3.183

172.16.1.2172.16.1.5结对   对应VIP 172.16.100.102  对应弹性IP地址:114.116.30.54

172.16.1.3172.16.1.6结对   对应VIP 172.16.100.103  对应弹性IP地址:114.116.19.172

 

两个主机上分别配置添加完整的策略路由:

Ecs-guobin-01:(在原有私网IP的策略路由上,增加VIP的策略路由)

image.png

 

Ecs-guobin-02

image.png

 

在配置了正确的策略路由后,当前直接从互联网请求3EIP都可以正常访问到ecs-guobin-01主机上的网站内容:

image.png

一、先在控制台上绑定私网IPVIP的关系,注意在绑定服务器时候,选择正确的网卡

 image.png

 image.png

 image.png


 


 

最终全部绑定完成后如图所示:

image.png

 

二、2台主机上分别配置并启用keepalived

配置注意事项:vrrp通告采用单播方式,避免相互干扰。

1Ecs-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

    }

}

 

image.png

 

2ecs-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

    }

}

 

image.png 

补充脚本文件/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上:

(注意此操作过程中,业务会中断受损,中断时间取决于从解绑到新绑定完成过程的操作时间)

image.png

 image.png


按此步骤重复操作后,完成所有弹性IP的割接:

image.png

 

2、简单验证下业务访问正常:

image.png

 

 

四、验证HA的常规故障切换

1、  01主机执行关机(模拟意外宕机),VIP漂移到02主机,业务正常运行。

2、  01主机上kill杀掉nginxVIP漂移到02主机,业务正常运行。

image.png

 image.png


 image.png


 

3、  防脑裂场景

在两台主机之间网络中断情况下,需要考虑避免出现脑裂情况。比如可以做个判断,到网关是否连通,如果出现连续几次ping不通 gateway,则可以(停掉keepalived释放VIP地址)。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。