美文网首页
华为云的一次虚拟ip体验

华为云的一次虚拟ip体验

作者: PENG先森_晓宇 | 来源:发表于2019-10-28 08:55 被阅读0次

    背景:单主机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

    相关文章

      网友评论

          本文标题:华为云的一次虚拟ip体验

          本文链接:https://www.haomeiwen.com/subject/ousvvctx.html