共计 3615 个字符,预计需要花费 10 分钟才能阅读完成。
一,介绍
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
}
}
[v_error]如果不打开 persistence_timeout 50 ,在测试时,无法正常访问ftp,加入后重新加载keepalived后测试[/v_error]