两个节点安装 keepalived
wget http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
tar xf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
配置keepalived的配置文件,在master上配置
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_node1
}
vrrp_instance VI_21 {
state BACKUP
interface ens160
virtual_router_id 21
priority 93
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.0.127/24
}
}
在候选master上配置
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_node2
}
vrrp_instance VI_21 {
state BACKUP
interface ens160
virtual_router_id 21
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.0.127/24
}
}
把 /usr/bin/master_ip_failover 和 /usr/bin/master_ip_online_change 脚本修改:
`/usr/bin/ssh -t root@${orig_master_ip} "ifconfig ens160:0 172.16.0.127 netmask 255.255.255.0 down"`;
`/usr/bin/ssh -t root@${new_master_ip} "ifconfig ens160:0 172.16.0.127 netmask 255.255.255.0 up"`;
修改为:
`/usr/bin/ssh -t root@${orig_master_ip} "service keepalived stop"`;
`/usr/bin/ssh -t root@${new_master_ip} "service keepalived start"`;
启动keepalived服务,在master上启动并查看日志
/etc/init.d/keepalived start; tail -f /var/log/messages
在另外一台服务器,候选master上启动keepalived服务,并观察
/etc/init.d/keepalived start ; tail -f /var/log/messages
注意:
上面两台服务器的keepalived都设置为了BACKUP模式,在keepalived中2种模式,分别是master->backup模式和backup->backup模式。这两种模式有很大区别。在master->backup模式下,一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。在backup->backup模式下,当主库宕机后虚拟ip会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip,即使是优先级高于从库的优先级别,也不会发生抢占。为了减少ip漂移次数,通常是把修复好的主库当做新的备库。