一、Keepalived简介
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
二、Keepalived的作用
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统 中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人 工干涉,需要人工做的只是修复故障的服务器。
三、VRRP协议
Keepalived高可用对之间是通过VRRP通信的,因此,我们从 VRRP开始了解起:
1) VRRP,全称 Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
2) VRRP是通过一种竟选协议机制来将路由任务交给某台 VRRP路由器的。
3) VRRP用 IP多播的方式(默认多播地址(224.0_0.18))实现高可用对之间通信。
4) 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的开源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。
四、Keepalived服务的工作原理:
Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。
在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。
五、Keepalived服务的三个重要功能
管理LVS负载均衡软件
实现LVS集群节点的健康检查中
作为系统网络服务的高可用性(failover)
六、配置高可用的负载均衡
1、虚拟服务器得到keepalived包并解压安装
tar zxf keepalived-2.0.6.tar.gz
cd keepalived-2.0.6
ls
yum install openssl-devel -y
2、编译keepalived的源码包
./configure --with-init=SYSV --prefix=/usr/local/keepalived
make (默认makefile文件)
make install
3、制作软链接方便keepalived的管理与设置,并给他的脚本执行权限
4、将server1中源码编译好的keepalived发送到server2,在sever2中同样制作软链接:
5、在server1(主)中配置/keepalived的配置文件:
Keepalived的所有配置都在一个配置文件里面设置,支持的配置主要分三类:
1)全局配置(Global Configuration):作用于整个keepalived服务
2)VRRPD配置:keepalived的核心
3)虚拟服务配置:指定服务与负载均衡
配置文件都是以块(block)形式组织的,每个块都在{ }包围的范围内
修改keepalived的配置文件
! Configuration File for keepalivedi
全局配置
global_defs { #全局定义块
notification_email { #邮件通知
root@localhost
}
#notification_email指定keepalived在发生事件(切换),需要发送email到的对象
notification_email_from keepalived@localhost
smtp_server 127.0.0.1 #smtp_*指定发送email的smtp服务器
smtp_connect_timeout 30
router_id LVS_DEVEL #router_id运行keepalived的机器的一个标识
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
VRRPD配置
vrrp_instance VI_1 {
#state指定instance的初始化状态,在两台router都启动后,马上会发生竞选,高priority的会竞选为Master
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.88.100 #指定虚拟ip,两个节点需设置一样
}
}
虚拟服务配置
virtual_server 172.25.88.100 80 {
delay_loop 6 #指定检查间隔
lb_algo rr #指定lvs算法
lb_kind DR #指定lvs模式为DR
#persistence_timeout 50
protocol TCP #指定转发协议为TCP协议
#后端实际TCP服务设置
real_server 172.25.88.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.88.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
4、开启keepalived
5、查看日志,判定是否更新了MASTER和BACKUP
在server1上:
在server2上:
6、将配置好的keepalived文件发送给备机(server2),修改MASTER为BACKUP
scp -r /etc/keepalived root@172.25.88.2:/etc
7、删除server1和server2上子网掩码的ip172.25.88.100(虚拟机的vip)
ip addr del 172.25.88.100/24 dev eth0
8、在测试端测试for i in {1..10};do curl 72.25.88.100;done