最近更新时间:2025-03-14 10:40:17
本文主要介绍使用HaVip和keepalived搭建主备双机的过程,当主机发生故障时,备机仍能支持业务,从而实现业务高可用。
登录控制台。
在左侧导航栏,单击高可用虚拟IP。
选择要创建HaVip的地域。
点击创建高可用虚拟IP,在弹出框中根据以下信息配置HaVip,然后单击确定。
虚拟私有网络:选择HaVip所属网络。
绑定类型:选择HaVip要绑定的子网类型。
子网:选择绑定虚拟私有网络下的子网。
私网IP:选择是否自动分配私网IP地址。
本文以 CentOS为操作系统的服务器为例提供keepalived的安装方法。
登录KEC1实例。执行以下命令,安装keepalived。
yum install keepalived
编辑keepalived配置文件。
a. 执行以下命令,编辑keepalived.conf文件。
vim /etc/keepalived/keepalived.conf
b.执行命令“i”,进入输入模式。
c.修改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”文件为用户自定义的业务进程检测脚本,请根据业务需要来执行,执行时“do_sth.sh”更换为实际的脚本名称。
interval 5
}
vrrp_instance VI_1 {
# 注意主备参数选择
state BACKUP # 设置初始状态均为“备“
interface eth0 # 设置绑定 VIP 的网卡 例如 eth0
virtual_router_id 51 # 配置集群 virtual_router_id 值
nopreempt # 设置非抢占模式,
# preempt_delay 10 # 仅 state MASTER 时生效
priority 100 # 两设备是相同值的等权重节点
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 10.0.54.152 # 设置本机内网IP地址
unicast_peer {
10.0.54.150 # 对端设备的 IP 地址
}
virtual_ipaddress {
10.0.54.55 # 设置高可用虚拟 VIP
}
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 # 使用绑定 VIP 的网卡 例如 eth0
}
track_script {
checkhaproxy
}
}
主要修改以下内容:
将本机内网IP地址修改为创建好的主用云主机的内网IP;
将对端设备的IP地址修改为备用云主机的内网IP地址;
将高可用虚拟ip设置为需要使用的HaVip。
修改权重值(可选)
请确保已经配置以下 garp 相关参数。因为 keepalived 依赖 ARP 报文更新 IP 信息,如果缺少以下参数,会导致某些场景下,主设备不发送 ARP 导致通信异常。
garp_master_delay 1
garp_master_refresh 5
按下Esc键,输入:wq并回车以保存并关闭文件。
执行以下命令,启动KEC1实例的keepalived。
systemctl start keepalived
登录KEC2实例。执行以下命令,安装keepalived。
yum install keepalived
编辑keepalived配置文件。
a.执行以下命令,编辑keepalived.conf文件。
vim /etc/keepalived/keepalived.conf
b.执行命令“i”,进入输入模式。
c.修改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"
interval 5
}
vrrp_instance VI_1 {
# 注意主备参数选择
state BACKUP # 设置初始状态均为“备“
interface eth0 # 设置绑定 VIP 的网卡 例如 eth0
virtual_router_id 51 # 配置集群 virtual_router_id 值
nopreempt # 设置非抢占模式
# preempt_delay 10 # 仅 state MASTER 时生效
priority 100 # 两设备是相同值的等权重节点
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 10.0.54.150 # 设置本机内网 IP 地址
unicast_peer {
10.0.54.152 # 对端设备的 IP 地址
}
virtual_ipaddress {
10.0.54.55 # 设置高可用虚拟 VIP
}
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 # 使用绑定 VIP 的网卡 例如 eth0
}
track_script {
checkhaproxy
}
}
主要修改以下内容:
将本机内网IP地址修改为创建好的主用云主机的内网IP;
将对端设备的IP地址修改为备用云主机的内网IP地址;
将高可用虚拟ip设置为需要使用的HaVip。
修改权重值(可选)
按下Esc键,输入:wq并回车以保存并关闭文件。
执行以下命令,启动ECS2实例的keepalived。
systemctl start keepalived
登录控制台。
在左侧导航栏,单击高可用虚拟IP。
在顶部菜单栏处,选择HaVip的地域。
找到步骤一中创建的HaVip实例,点击“绑定”。
在弹出的对话框中,选择KEC1实例,然后单击确定。
然后继续绑定KEC2实例。
将HaVip与EIP绑定,绑定后该HaVip可以通过EIP提供公网服务。
登录控制台。
点击“绑定资源”。
绑定方式选择“HaVip”。
选择步骤一创建的HaVip,点击“绑定”即绑定成功。
打开本地PC的浏览器。
输入HaVip绑定的EIP地址,访问部署在KEC实例上的Nginx服务。测试结果如下:
纯净模式