首先准备两台服务器,我这里的两台服务器的ip分别是192.168.1.2和192.168.1.3
安装keepalived(两台都要装)
yum install keepalived
修改配置文件
修改配置文件前先找到网卡的信息,记录网卡名称
cd /etc/sysconfig/network-scripts/
在文件夹中找到网卡名称
删除掉/etc/keepalived/keepalived.conf,然后重新创建一个/etc/keepalived/keepalived.conf:
vim /etc/keepalived/keepalived.conf
1.2这台服务器的内容如下:
! 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 localhost
smtp_connect_timeout 30
router_id z11
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface em1
mcast_src_ip 192.168.1.2
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.4
}
}
1.3的配置文件如下:
! 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 localhost
smtp_connect_timeout 30
router_id z12
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface em1
virtual_router_id 51
mcast_src_ip 192.168.1.3
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.4
}
}
修改好配置文件之后,重启两台机器的keepalived
systemctl restart keepalived
需要防火墙开启vrrp协议
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface em1 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
开机自启
systemctl enable keepalived.service
配置参数说明
vrrp_script chk_nginx这里是一个执行脚本,定时2S执行一次,这里的演示我没有创建这个脚本,所以它不会执行,也就是这句不会生效了。因此你如果不需要脚本的时候,可以把这句连同track_script 这句一起去掉。留着也不会有什么影响。
state BACKUP 表示这两个服务器都是备用服务器。
interface enp4s0 表示当前使用的网卡,通过ifconfig可以查看到,这我用的是enp4s0。
virtual_router_id 100 这个是个分组标记,在一个网内,所有的virtual_router_id为100的服务器自动分到一个组里面,由于这里面我把两台服务器的status都设置成为了BACKUP,那么这两台服务器就会利用priority这个值来决定谁是主服务器,谁是备用服务器,高的那个会抢占当前的vip,也就是它就会变成主服务器。
mcast_src_ip 填写你当前机器的真实ip即可
advert_int 1 没有仔细研究,应该是两台服务器之间的心跳间隔
authentication 就用默认的就可以了。
track_script 和vrrp_script chk_nginx 配合使用的。
virtual_ipaddress 两台机器共有的vip,注意,要和两台服务器在一个网关里面。