Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
假设两台机器,服务器一 : 10.1.1.10 服务器二: 10.1.1.11 ,虚拟ip为 10.1.1.12 系统为 linux rhel 5.9
keepalived 安装与配置
./configure --prefix=/usr/local/keepalivedmakemake installcp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ mkdir -p /etc/keepalived cd /etc/keepalived/ # 配置vi keepalived.conf #/usr/local/keepalived/etc/keepalived/keepalived copy
在服务器一上:
global_defs {notification_email { # 邮箱配置,略 }}vrrp_instance VI_1 { state MASTER #备用服务器上改为 BACKUP interface eth0 # 使用 ifconfig 查看ip 属于哪个网卡号 virtual_router_id 51 #主备必须一直 priority 100 #备用服务器上改为99 优先级,越大越高 advert_int 1 authentication { #主从服务器验证方式主备的keepalived这2个配置要一样。 auth_type PASS auth_pass 1111 }virtual_ipaddress { 10.1.1.12 # 虚拟 IP 主从使用相同的虚拟 ip }}
lvs 相关配置,假设 10 和 11 上有 mysql 服务
virtual_server 10.1.1.12 3306 { delay_loop 6 #每隔6秒检查一次real_server状态 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 persistence_timeout 50 #回话保持时间 protocol TCP real_server 10.1.1.10 3306 { weight 1 notify_down "/usr/local/keepalived/mysql.sh" #新建这个mysql.sh文件,输入 pkill keepalived TCP_CHECK { connect_timeout 3 connect_port 3306 } } }
使用:
chkconfig keepalived onservice keepalived start
验证:可以简单的 ping 真实IP和虚拟 ip检查配置是否成功,可以使用虚拟ip 访问真实IP部署的程序
查看虚拟在哪个 ip 上
ip a
参考: