Linux下安装Keepalived实现双机热备
其他开源框架
1、准备工作Linux主机:10.122.1.35
Linux主机:10.122.1.36
虚拟IP:10.122.1.30
2、安装Keepalived两台Linux主机都需要安装Keepalived
1、下载Keepalived
下载至目录:/home/zz/user/keepalived
2、解压Keepalivedtar -zxvf keepalived-1.3.8.tar.gz
3、安装Keepalived./configure
此步骤如果出现错误:libnfnetlink 库找不到,则需要执行:cp -R usr/ /
然后在当前目录make
make install
4、配置防火墙firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 \
--in-interface enp0s31f6 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 \
--out-interface enp0s31f6 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
注意:【enp0s31f6】为网卡名称。
5、配置服务启动cp /home/zz/user/keepalived/keepalived-1.3.8/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
6、配置Keepalived
配置文件路径为:/etc/keepalived/keepalived.conf
修改配置如下:
!ConfigurationFileforkeepalived
global_defs{
notification_email{
# acassen@firewall.loc
# failover@firewall.loc
# sysadmin@firewall.loc
}
notification_email_fromAlexandre.Cassen@firewall.loc
# smtp_server 192.168.200.1
# smtp_connect_timeout 30
router_id SERVER_1
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval0
vrrp_gna_interval0
}
vrrp_instance VI_1{
state MASTER
interfaceenp0s25
virtual_router_id51
priority100
protocol TCP
advert_int1
authentication{
auth_type PASS
auth_pass1111
}
virtual_ipaddress{
10.122.1.30/24
}
}
virtual_server10.122.1.303306{
delay_loop2
lb_algo wrr
lb_kind DR
nat_mask255.255.255.0
persistence_timeout0
protocol TCP
real_server10.122.1.353306{
weight1
MISC_CHECK{
connect_timeout60
nb_get_retry3
delay_before_retry3
connect_port3306
misc_path"/home/zz/user/status_check/check_mysql.sh 10.122.1.35"
misc_timeout60
misc_dynamic
}
}
real_server10.122.1.363306{
weight1
MISC_CHECK{
connect_timeout60
nb_get_retry3
delay_before_retry3
connect_port3306
misc_path"/home/zz/user/status_check/check_mysql.sh 10.122.1.36"
misc_timeout60
misc_dynamic
}
}
}
从机配置与主机配置大致一致,主要不同的配置项如下router_id SERVER_2
state BACKUP
priority 50
7、编写心跳检查脚本
check_mysql.sh#!/bin/bash
MYSQL_PING=`/usr/local/mysql/bin/mysqladmin -u root -h $1 ping`
MYSQL_OK="mysqld is alive"
if [[ ${MYSQL_PING} == ${MYSQL_OK} ]]; then
echo "yes"
exit 0
else
echo "no"
exit 1
fi
8、启动Keepalived
service keepalived start
查看日志:tail -f /var/log/messages
9、判断是否脑裂
在主从服务器上都执行虚拟IP查看,如果虚拟IP都在自己身上,则发生了脑裂ip addr|grep 10.122.1.30
发生脑裂主要原因为两台服务器之间无法进行心跳通讯,可检查防火墙或者进行串口通讯。