You need to enable JavaScript to run this app.
文档中心
私有网络

私有网络

复制全文
下载 pdf
高可用虚拟IP
通过HAVIP和Keepalived搭建高可用主备集群
复制全文
下载 pdf
通过HAVIP和Keepalived搭建高可用主备集群
高可用虚拟IP通常用于搭建高可用主备服务。本文为您介绍如何使用高可用虚拟IP搭建高可用主备集群。​
应用场景​
您可以通过高可用虚拟IP(HAVIP)构建高可用主备集群。具体实现方式为:将 HAVIP 同时绑定至两台云服务器,绑定完成后,两台云服务器通过地址解析协议(ARP)共同宣告同一个 HAVIP,形成主备架构(一台作为主实例,另一台作为备实例)。​
在主、备云服务器实例上分别部署 Keepalived 组件,该组件会定期检测云服务器的运行状态。当主云服务器出现异常时,Keepalived 会触发自动切换机制:备用云服务器将接管主实例角色,继续对外提供服务,确保业务连续性。​
​​​
准备工作​
  • 在子网Subnet-1中创建2台云服务器ECS-A、ECS-B。本文云服务器镜像以CentOS 7.9为例,您也可以按需替换为CentOS 7.6等CentOS 7系镜像。具体操作可参考购买云服务器。​
操作步骤​
步骤一:创建HAVIP​
  1. 登录 VPC控制台。​
  1. 在左侧导航树,选择高可用虚拟IP。​
  1. 在顶部导航栏,选择目标地域。本文选择华北2(北京)。​
  1. 单击创建高可用虚拟IP按钮。​
  1. 参考下表,配置相关参数。​
  • ​
    参数​
    说明​
    取值样例​
    名称​
    输入HAVIP的名称。​
    HAVIP-01​
    私有网络​
    选择HAVIP所属的VPC。​
    VPC-01|192.168.0.0/16​
    子网​
    选择HAVIP所属的子网。该子网会为HAVIP提供IP地址,且HAVIP仅可绑定该子网下的云服务器或网卡。​
    subnet-01|192.168.1.0/24​
    分配方式​
    选择IP地址的分配方式,支持手动分配和自动分配。​
    手动分配 | 192.168.1.9​
    ​
  1. 单击确定按钮,完成创建。本文的HAVIP的IP地址为192.168.1.9。​
步骤二:在云服务器上安装Keepalived​
  1. 执行如下命令,查看Keepalived安装包版本。​
  • ​
    yum list keepalived​
    ​
  • CentOS 7.9默认的keepalived版本如下图所示。​
  • ​​​
说明​
以下配置以keepalived版本1.3.5-19.e17为例进行介绍。​
  1. 执行如下命令,安装Keepalived。​
  • ​
    yum install -y keepalived​
    ​
  1. 执行如下命令,进入keepalived.conf文件目录。​
  • ​
    vim /etc/keepalived/keepalived.conf​
    ​
  1. 在键盘上按i进入编辑模式。​
  1. 参照下方信息修改Keepalived配置文件。​
  • ​
    ! Configuration File for keepalived​
    ​
    global_defs {​
    notification_email {​
    acassen@firewall.loc​
    failover@firewall.loc​
    sysadmin@firewall.loc​
    }​
    notification_email_from Alexandre.Cassen@firewall.loc​
    smtp_server 192.168.200.1​
    smtp_connect_timeout 30​
    router_id LVS_DEVEL ​
    vrrp_skip_check_adv_addr​
    vrrp_garp_interval 0​
    vrrp_gna_interval 0​
    }​
    vrrp_script checkhaproxy​
    {​
    script "/etc/keepalived/do_sth.sh" # 补充本段代码,检测业务进程是否运行正常。“do_sth.sh”是自定义的业务进程检测脚本,您在操作时应替换为实际的脚本。​
    interval 5​
    }​
    ​
    vrrp_instance VI_1 {​
    state MASTER # 设置云服务器ECS-A中keepalived节点初始状态,MASTER表示主用状态,BACKUP表示备用状态。本示例设置ECS-A为MASTER。​
    interface eth0 # 设置云服务器中绑定HAVIP的网卡,用于发送VRRP包。本示例使用eth0。​
    virtual_router_id 51​
    nopreempt # 补充本行代码设置为非抢占模式,即当高优先级的云服务器实例恢复后,低优先级的云服务器实例仍为MASTER。​
    preempt_delay 10 # 补充本行代码,设置仅state为MASTER时抢占延迟,单位秒,取值0~1000。​
    priority 100 # 设置优先级,数字越大优先级越高。本示例ECS-A优先级设置为100。​
    advert_int 1​
    authentication {​
    auth_type PASS​
    auth_pass 1111​
    }​
    unicast_src_ip 192.168.1.19 # 补充本行代码设置云服务器ECS-A的私网IP地址,本示例为192.168.1.19,您在操作时应替换为实际的私网IP地址。​
    unicast_peer {​
    192.168.1.20 # 补充本段代码设置云服务器ECS-B的私网IP地址,本示例为192.168.1.20,您在操作时应替换为实际的私网IP地址。​
    }​
    virtual_ipaddress {​
    192.168.1.9 # 设置高可用虚拟IP的IP地址,本示例为192.168.1.9,您在操作时应替换为实际HAVIP的IP地址。 ​
    }​
    notify_master "/etc/keepalived/notify_action.sh MASTER" # 补充本行代码​
    notify_backup "/etc/keepalived/notify_action.sh BACKUP" # 补充本行代码​
    notify_fault "/etc/keepalived/notify_action.sh FAULT" # 补充本行代码​
    notify_stop "/etc/keepalived/notify_action.sh STOP" # 补充本行代码​
    garp_master_delay 1 # 补充本行代码,设置切换为主状态后更新ARP缓存的时间。​
    garp_master_refresh 5 # 补充本行代码,设置主节点发送ARP报文的时间间隔。​
    track_interface {​
    eth0 # 补充本段代码,设置ECS-A的网卡,本示例为eth0。​
    }​
    track_script {​
    checkhaproxy # 补充本段代码​
    }​
    } ​
    ​
  1. 配置完成后,在键盘上按esc键,然后输入:wq保存并退出编辑模式。​
  1. 执行如下命令,启动ECS-A的Keepalived,使步骤5中的配置生效。​
  • ​
    systemctl start keepalived​
    ​
  1. 登录云服务器ECS-B,参照步骤1~步骤4安装Keepalived并进入keepalived.conf文件的编辑模式。​
  1. 参照下方信息修改Keepalived配置文件。​
  • ​
    ! Configuration File for keepalived​
    ​
    global_defs {​
    notification_email {​
    acassen@firewall.loc​
    failover@firewall.loc​
    sysadmin@firewall.loc​
    }​
    notification_email_from Alexandre.Cassen@firewall.loc​
    smtp_server 192.168.200.1​
    smtp_connect_timeout 30​
    router_id LVS_DEVEL ​
    vrrp_skip_check_adv_addr​
    vrrp_garp_interval 0​
    vrrp_gna_interval 0​
    }​
    vrrp_script checkhaproxy​
    {​
    script "/etc/keepalived/do_sth.sh" # 补充本段代码,检测业务进程是否运行正常。“do_sth.sh”是自定义的业务进程检测脚本,您在操作时应替换为实际的脚本。​
    interval 5​
    }​
    ​
    vrrp_instance VI_1 {​
    state BACKUP # 设置云服务器ECS-B中keepalived节点初始状态,本示例设置ECS-B为BACKUP。​
    interface eth0 # 设置云服务器中绑定HAVIP的网卡,用于发送VRRP包。本示例使用eth0。​
    virtual_router_id 51​
    nopreempt​
    preempt_delay 10​
    priority 50 # 设置优先级,数字越大优先级越高。本示例ECS-B优先级设置为50。​
    advert_int 1​
    authentication {​
    auth_type PASS​
    auth_pass 1111​
    }​
    unicast_src_ip 192.168.1.20 # 补充本行代码设置云服务器ECS-B的私网IP地址,本示例为192.168.1.20,您在操作时应替换为实际的私网IP地址。​
    unicast_peer {​
    192.168.1.19 # 补充本段代码设置云服务器ECS-A的私网IP地址,本示例为192.168.1.19,您在操作时应替换为实际的私网IP地址。​
    }​
    virtual_ipaddress {​
    192.168.1.9 # 设置高可用虚拟IP的IP地址,本示例为192.168.1.9,您在操作时应替换为实际HAVIP的IP地址。 ​
    }​
    notify_master "/etc/keepalived/notify_action.sh MASTER" # 补充本行代码​
    notify_backup "/etc/keepalived/notify_action.sh BACKUP" # 补充本行代码​
    notify_fault "/etc/keepalived/notify_action.sh FAULT" # 补充本行代码​
    notify_stop "/etc/keepalived/notify_action.sh STOP" # 补充本行代码​
    garp_master_delay 1 # 补充本行代码,设置切换为主状态后更新ARP缓存的时间。​
    garp_master_refresh 5 # 补充本行代码,设置主节点发送ARP报文的时间间隔。​
    track_interface {​
    eth0 # 补充本段代码,设置ECS-B的网卡,本示例为eth0。​
    }​
    track_script {​
    checkhaproxy # 补充本段代码​
    }​
    } ​
    ​
  1. 配置完成后,在键盘上按esc键,然后输入:wq保存并退出编辑模式。​
  1. 执行如下命令,启动ECS-B的Keepalived,使步骤9中的配置生效。​
  • ​
    systemctl start keepalived​
    ​
步骤三:为云服务器绑定HAVIP​
  1. 在顶部导航栏,选择目标地域。此处选择的地域需要与VPC-01地域一致,本操作选择华北2(北京)。​
  1. 单击待绑定高可用虚拟IP名称HAVIP-01。​
  1. 在绑定资源中单击实例下其中一个立即绑定按钮。​
  1. 单击云服务器页签,选中云服务器ECS-A。​
  1. 单击确定按钮,完成绑定操作。​
  1. 同样的,在绑定资源中单击实例下另一个立即绑定按钮,绑定云服务器ECS-B。​
步骤四:HAVIP绑定公网IP​
如果您的云服务器ECS-A和ECS-B需要提供公网服务,您为HAVIP绑定公网IP实现。如果云服务器ECS-A和ECS-B不需要提供公网服务,您可跳过此部分操作。​
  1. 进入高可用虚拟IP详情页面,在绑定资源中单击公网IP的立即绑定按钮。​
  1. 选中待绑定的公网IP,单击确定按钮,完成操作。​
若没有可用公网IP,可先申请一个使用,具体操作请参见申请公网IP。​
步骤五:模拟故障状态下访问测试​
  • 正常情况:ECS-A处于激活状态提供相关服务,ECS-B处于备用状态不提供服务,HAVIP供ECS-A使用。​
  • 模拟异常:通过停止ECS-A的Keepalived进程模拟ECS-A故障,在HAVIP控制台检查是否完成主备切换。​
  • 预期结果:主备切换成功,ECS-B被激活接管ECS-A的业务,HAVIP供ECS-B使用。​
​
最近更新时间:2025.09.30 14:43:48
这个页面对您有帮助吗?
有用
有用
无用
无用