本文介绍如何通过 VIP + Keepalived 实现高可用服务搭建。

背景知识

高可用服务通常包含 2 台服务器,一台作为主服务器,另一台作为备服务器,它们共享同一个 VIP。同一时刻,VIP 只在一台主设备上生效,当主服务器出现问题时,备用服务器接管 VIP 继续提供服务。

Keepalived 是基于 VRRP 协议的一款高可用软件,通过 keepalived.conf 配置文件可指定内网 VIP 为主备服务器的漂移 VIP,并指定 VIP 要绑定的网卡,从而实现高可用服务。

环境信息

本文的环境配置信息如下:

  • 操作系统:CentOS 7.6

  • 私有网络:192.168.1.0/24

  • 主服务器:192.168.1.10

  • 备服务器:192.168.1.20

  • 内网 VIP:192.168.1.100

步骤一:申请内网 VIP

  1. 登录管理控制台。

  2. 在控制台导航栏中,选择产品与服务 > 网络 > 内网 VIP,进入内网 VIP 页面。

  3. 点击 VPC 网络 IP 页签,进入 VPC 网络 IP 管理页面。

  4. 点击申请 IP,在弹出的窗口中配置 VIP 名称及 IP 地址信息。

  5. 点击确认,返回 VPC 网络 IP 页面。可以查看到新申请的 IP,状态未绑定

步骤二:安装 Keepalived

需要分别在主服务器和备服务器上执行如下操作。

CentOS 下直接使用 yum 安装。

yum install keepalived

步骤三:配置 VIP

需要分别在主服务器和备服务器上执行如下操作。

  1. 执行 vi /etc/keepalived/keepalived.conf,修改配置文件。

    主服务器配置文件示例如下:

    ! Configuration File for keepalived
    
    global_defs {
        router_id lb01     #指定keepalived机器的标识
    }
    
    vrrp_instance VI_1 {
        state MASTER                      #主为MASTER,备为BACKUP
        priority 150                      #优先级,MASTER比BACKUP的值大
        interface eth0                    #实例绑定的网卡
        virtual_router_id 50              #VRID标记(0...255),MASTER和BACKUP要一致
        advert_int 1                      #心跳的间隔时间
        authentication {
            auth_type PASS                #明文密码验证
            auth_pass 1111                #认证的密码
    }
        virtual_ipaddress {
            192.168.1.100                 #VIP地址
        }
    }

    备服务器配置示例如下:

    ! Configuration File for keepalived
    
    global_defs {
       router_id lb01     #指定keepalived机器的标识
    }
    
    
    vrrp_instance VI_1 {
        state BACKUP                     #主为MASTER,备为BACKUP
        interface eth0                   #实例绑定的网卡
        virtual_router_id 192            #VRID标记(0...255),MASTER和BACKUP要一致
        priority 99                      #优先级,数字越高优先级越高
        advert_int 1                     #心跳的间隔时间
        authentication {                 #验证类型和密码
            auth_type PASS               #明文密码验证
            auth_pass 123456             #认证的密码
        }
    
        virtual_ipaddress {              #VIP地址
            192.168.1.100
        }
    }
  2. esc 退出编辑状态,输入 :wq! 保存并退出。

  3. 启动 keepalived。

    service keepalived start

步骤四:验证结果

  1. 通过 ip a 命令查看到主云服务器的 eth0 网卡多了一个 IP 地址,说明此云服务器已经占用该 VIP 地址。

    505002 vip cfg
  2. 停止该云服务器上的 keepalived 服务。

    service keepalived stop
  3. 在备服务器上,查看 VIP 是否正常迁移到备服务器。

    ip a