高可用虚拟IP通常用于搭建高可用主备服务。本文为您介绍如何使用高可用虚拟IP搭建高可用主备集群。
HAVIP同时绑定两台云服务器,绑定成功后两台云服务器通过ARP(Address Resolution Protocol)宣告同一个HAVIP,形成主备集群,即一台云服务器为主实例,另一台云服务器为备实例。分别在主、备云服务器实例上安装Keepalived,Keepalived会定期检测云服务器的状态,当主云服务器状态异常时,备用云服务器切换为主云服务器并继续提供服务。
登录高可用虚拟IP控制台。
在顶部导航栏,选择目标地域。
此处选择的地域需要与VPC-01地域一致,本操作选择华北2(北京)。
单击“创建高可用虚拟IP”按钮。
参考下表,配置相关参数。
参数 | 说明 | 取值样例 |
---|---|---|
名称 | 设置高可用虚拟IP的名称。 | HAVIP-01 |
私有网络 | 选择高可用虚拟IP所属的私有网络。若没有可用的私有网络,您可单击“创建私有网络”按钮创建新的私有网络。 | VPC-01|192.168.0.0/16 |
子网 | 选择高可用虚拟IP所属的子网。该子网会为高可用虚拟IP提供IP地址,且高可用虚拟IP仅可绑定该子网下的云服务器或网卡。 | subnet-01|192.168.1.0/24 |
分配方式 | 选择IP地址的分配方式,支持手动分配和自动分配。 | 手动分配 | 192.168.1.9 |
单击“确定”按钮,完成创建。
HAVIP的IP地址为192.168.1.9。
CentOS 7.9默认的keepalived版本如下图所示。yum list keepalived
说明
以下配置以keepalived版本1.3.5-19.e17为例进行介绍。
yum install -y keepalived
keepalived.conf
文件目录。vim /etc/keepalived/keepalived.conf
i
进入编辑模式。! 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-01中keepalived节点初始状态,MASTER表示主用状态,BACKUP表示备用状态。本示例设置ecs-01为MASTER。 interface eth0 # 设置云服务器中绑定HAVIP的网卡,用于发送VRRP包。本示例使用eth0。 virtual_router_id 51 nopreempt # 补充本行代码设置为非抢占模式,即当高优先级的云服务器实例恢复后,低优先级的云服务器实例仍为MASTER。 preempt_delay 10 # 补充本行代码,设置仅state为MASTER时抢占延迟,单位秒,取值0~1000。 priority 100 # 设置优先级,数字越大优先级越高。本示例ecs-01优先级设置为100。 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.1.19 # 补充本行代码设置云服务器ecs-01的私网IP地址,本示例为192.168.1.19,您在操作时应替换为实际的私网IP地址。 unicast_peer { 192.168.1.20 # 补充本段代码设置云服务器ecs-02的私网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-01的网卡,本示例为eth0。 } track_script { checkhaproxy # 补充本段代码 } }
esc
键,然后输入:wq
保存并退出编辑模式。systemctl start keepalived
keepalived.conf
文件的编辑模式。! 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-02中keepalived节点初始状态,本示例设置ecs-02为BACKUP。 interface eth0 # 设置云服务器中绑定HAVIP的网卡,用于发送VRRP包。本示例使用eth0。 virtual_router_id 51 nopreempt preempt_delay 10 priority 50 # 设置优先级,数字越大优先级越高。本示例ecs-02优先级设置为50。 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.1.20 # 补充本行代码设置云服务器ecs-02的私网IP地址,本示例为192.168.1.20,您在操作时应替换为实际的私网IP地址。 unicast_peer { 192.168.1.19 # 补充本段代码设置云服务器ecs-01的私网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-02的网卡,本示例为eth0。 } track_script { checkhaproxy # 补充本段代码 } }
esc
键,然后输入:wq
保存并退出编辑模式。systemctl start keepalived
如果您的云服务器ecs-01和ecs-02需要提供公网服务,您为HAVIP绑定公网IP实现。如果云服务器ecs-01和ecs-02不需要提供公网服务,您可跳过此部分操作。