华为云的一次虚拟ip体验

2019-10-28  本文已影响0人  PENG先森_晓宇

背景:单主机ecs上起俩个haproxy,采用keepalived实现高可用

ecs配置虚拟ip和虚拟ip的公网ip

因为要实现高可用,需要使用到keepalived来实现,keepalived需要虚拟ip。由于阿里云已经不允许ecs上使用虚拟ip(变相必须使用slb),所以这里ecs选择了
华为云。华为云支持虚拟ip的申请,并且是免费的。接下来说明申请流程和ecs的使用.具体请参考

  1. 点击进入ecs实例后,点击网卡一项,可以看到管理虚拟ip


    image
  2. 点击管理虚拟ip,然后选择申请虚拟ip,申请方式可以自动分配和手段分配。这里需要注意的是申请的虚拟ip和ecs的内网ip都在同一个网段下,私网ip上图中
    为172.16.0.77,所以在虚拟ip申请的范围也就是172.16.0.1-244之间。虚拟ip就相当于是ecs的内网ip,内网ip能访问的资源该内网ip也同样能访问,唯一不同的
    是内网ip只能绑定一个ecs,而虚拟ip可以绑定多个ecs上。如果多台ecs上绑定了同一虚拟ip,且并没有配置keepalived,如果此时访问该内网ip,经测试在
    华为云上只会访问同一台ecs,而不是轮训访问所有绑定该虚拟ip的ecs,这个可能和华为云平台有关,不能确定其他ecs是否也是这种的情况

    image
  3. 我申请的是172.16.0.100。接下来就是给虚拟ip绑定ecs,点击绑定服务器即可。这里需要注意一点,绑定的服务器必须和虚拟ip是一个网段。买ecs时候需要
    注意一下。


    image
  4. 接下来最重要的一步。在ecs上手动配置虚拟ip.进入ecs后,输入以下命令

cd /etc/sysconfig/network-scripts

随后vi。原本是没有这个文件的。

vi ifcfg-eth0:1

在文件中输入以下内容,DEVICE指新建的网卡,即虚拟ip所在网卡,冒号前面的是现在的网卡名,使用ifconfig可查看,IPADDR为我们在华为云申请的虚拟ip

DEVICE=eth0:1
IPADDR=172.16.0.100

输入后,保存退出,并reboot重启服务器。

重启后进入ecs后,使用ifconfig查看后,如果多了一个eth0:1的网卡则说明虚拟ip配置成功,如下


image

此时看看虚拟ip是否能ping通.到此则虚拟ip配置成功

image

5 如果该虚拟ip想要通过外网访问的话必须绑定公网ip,如下点击绑定即可。

image

此时外网还不能访问。云服务器所在的default安全组入方向添加ICMP协议,才能ping通。

image

在宿主机ecs上安装keepalived

配置文件如下

vrrp_instance  VI_1 {
    state  MASTER
    interface  eth0
    virtual_router_id  51
    priority  110
    advert_int  1
    authentication {
        auth_type  PASS
        auth_pass  123456
    }
    virtual_ipaddress {
        172.16.0.100
    }
}
virtual_server 172.16.0.100 8888 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 172.40.0.100 8888 {
        weight 1
    }
}
virtual_server 172.16.0.100 3306 {
    delay_loop 3
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 172.40.0.100 3306 {
        weight 1
    }
}

可以看到虚拟ip是我们在华为云申请的172.16.0.100,而他需要映射的是俩haproxy的虚拟ip172.40.0.100。

首先我们要保证俩点,一是telnet 172.40.0.100 8888和telnet 172.40.0.100 3306时都显示是连通的,如果这个没通则是docker haproxy的问题,
其次保证telnet 172.16.0.100 8888和telnet 172.16.0.100 3306能显示连通,如果连不通,则说明是宿主机keepalived的
问题,此时可以查看/var/log/message来查看keepalived的错误日志。如果显示都能连通,则本地keepalived启动成功

tail -f /var/log/message

启动成功日志显示如下,要注意圈住部分,只有出现圈住的部分才是启动成功。


image
上一篇下一篇

猜你喜欢

热点阅读