SUSE 12 环境安装keepalived及遇到的问题 (0penStack平台下虚机)
1、项目要求需做mysql高可用集群,最终选择的mysql+keepalived的方式实现,此文档只介绍keepalived安装及遇到的问题。
2、提前准备好安装包 :keepalived-2.0.7.tar.gz
安装keepalived必须先安装好各依赖包zypper install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
zypper install -y libnl* ipvsadm (这两个包必须安装,因为keepalived是基于ipvsadm来实现的高可用的)
安装完成后检查ip_vs模块是否启动 lsmod |grep ip_vs
3、解压keepalived-2.0.7.tar.gz
tar -zxvf keepalived-2.0.7.tar.gz
cd keepalived-2.0.7
执行 ./configure --prefix=/usr/local/keepalived(指定安装目录-自定义) && make && make install
执行完成检查有无报错。
进入安装目录 修改配置文件
4、启动keepalived (本次是做的双活,另一台按如上操作再来一遍)
查看日志进程 检查keepalived 是否正常启动
5、本次安装遇到的最大坑
两台keepalived无法做到自动切换,原因是此OpenStack下的虚拟机mac地址无法自动解绑 ,当一台keepalived宕机后虚拟IP依然绑定在当期虚拟机网卡下。由于环境的局限性我这边的临时解决方案是当另一台keepalived监控到另外一台无心跳后,执行 “ping 局域网网关或者其他可联通服务器IP地址 -I keepalived虚拟IP -c 3”
(意思是通过虚拟IP 短ping网关或局域网内机器三次,当虚拟平台检测到地址失效后解绑)从而另外一台可绑定虚拟IP达到切换的目的,注意:此方法在切换时会丢1~2个包
下图是我的keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id joychat
vrrp_skip_check_adv_addr
# vrrp_strict
# vrrp_garp_interval 0
# vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 54
priority 100
advert_int 1
# nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
虚拟-IP
}
notify_master "/data/keepalived/Ping.sh"
}
virtual_server 虚拟-IP 3306 {
delay_loop 2
# lb_algo rr
# lb_kind NAT
persistence_timeout 60
protocol TCP
real_server mysq-IP 3306 {
weight 1
notify_down /data/keepalived/shutdown.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_prot 3306
}
}
}
本人水平有限,望其他有更好方法的朋友留言探讨!