一,介绍
Keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似heartbeat,用来防止单点故障。
Keeplived的作用是检测web服务器的状态,如果有一台web服务器死机或者工作出现状况,Keepalived将检测到,并将所有有故障的web服务器从系统中剔除,当web服务器工作正常后,Keepalived自动将web服务器加入到服务器群中,这些都是自动完成,不需要人为干涉。
二,工作原理
Keepalived是以VRRP协议为实现基础的,VRRP全程Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,即将N台提供相同功能的路由器做成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组广播,当backup收不到vrrp包时就认为master宕掉了,这时就根据VRRP的优先级来选择一个backup当master,这样就保证路由的高可用。
三,作用
主要作用于RealServer的健康状态检查以及LoadBalance(负载均衡)主机(Master)和备机(Backup)之间的心跳检测。
四,安装
从49服务器下载最新安装包:
keepalived-1.2.19.tar.gz
解压并进行编译安装:
Tar zxf keepalived-1.2.19.tar.gz
根据报错安装:
yum install openssl-devel gcc gcc-c++ libnl-devel -y
编译:
./configure --prefix=/usr/local/keepalived
Make && make install
安装完成后,进入安装目录:/usr/local/keepalived
将安装目录发送给备机:
Scp -r keepalived/ 172.25.49.2:/usr/local
五,配置文件
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
Vim /etc/keepalived/keepalived.conf
global_defs { notification_email { root@localhost ##接收报警的email地址,可填多个 } notification_email_from keepalived@server1.example.com ##发送报警信息的地址 smtp_server 127.0.0.1 ##设置smtp服务器 smtp_connect_timeout 30 ##设置连接smtp服务器超时时间 router_id server1.example.com ##Load balancer 的标识 ID,用于 email 警报 } vrrp_instance VI_1 { state MASTER ###备机改为 BACKUP,此状态是由 priority 的值来决定的,当前 priority 的值小于备机的值,那么将会失去 MASTER 状态 interface eth0 ###HA检测网络接口 virtual_router_id 100 ## #主、备机的 virtual_router_id 必须相同,取值 0-255 priority 100 ###优先级 advert_int 1 ###主备机之间HA检测频率 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.25.49.100 ###vip地址 } } virtual_server 172.25.49.100 80 { ###vip服务器 delay_loop 6 ###检测后台realserver健康状态的频率 lb_algo rr ###调度算法,rr为轮询 lb_kind DR ###直连模式 #nat_mask 255.255.255.0 #persistence_timeout 50 ###需要一直联系的服务打开此配置(FTP) protocol TCP real_server 172.25.49.3 80 { ##定义后端realserver weight 1 ##权重 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 172.25.49.4 80 { ##后端realserver weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
完成后,将配置文件发送给背机server2.example.com
Scp keepaloived.conf 172.25.49.2:/etc/keepalived/
!!~~注意:server2为背机,需要对配置文件做以下几处修改:
1,state BACKUP ##状态,BACKUP为备用模式
2,priority 50 ##优先级,背机优先级必须低于主机
启动服务:
/etc/init.d/keepalioved start
六,测试
1. 高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。
2. 负载均衡测试:访问 http://172.25.49.100,看到页面在两个 realserver 上切换表示成功!你也可以通过 ipvsadm -Ln 查看详细连接情况.
3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现,然后屏蔽故障节点,同时将服务转移到正常节点来执行。
关于代码:persistence_timeout 50
在realserver server3.example.com和server4.example.com安装vsftp,并且在发布目录/var/ftp/下建立检测区分文件:server3和server4,然后在主机上编辑keepalived.conf
在最后增加以下代码:
virtual_server 172.25.49.100 21 { ###ftp使用21端口 delay_loop 6 lb_algo rr lb_kind DR #nat_mask 255.255.255.0 persistence_timeout 50 ##打开延迟,50秒内访问的都由一个realserver处理 protocol TCP real_server 172.25.49.3 21 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 172.25.49.4 21 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }