Keepalived 是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能。在非LVS集群环境中使用时,keepalived也可以作为热备软件使用。keepalived
采用vrrp热备份协议,以软件的方式实现linux服务器的多机热备功能。热备组内的每一台服务器都有可能成为都有可能成为主服务器,虚拟ip地址(vip)可以在热备组内的路由器之间进行转移,所以称之位漂移IP地址。
一、keepalived安装
1、安装支持软件
在编译安装之前,必须安装内核开发包,以及支持库
yum -y install popt-devel kernel-devel openssl-devel
2、编译安装Keepalived
tar zxf keepalived-1.2.2.tar.gz
cd zxf keepalived-1.2.2
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.i686/
make && make install
chkconfig --add keepalived
chkconfig keepalived on//会自动开户2345的级别
二、使用keepalived实现双机热备
基于vrrp 协议的热备方案,keepalived可以用做服务器的故障倒换,每个热备组可以有多台服务器,故障切换主要是针对虚拟ip地址的漂移来实现,可以使用于各种应用服务器。
Keepalived双机热备示意图
主、从服务器都需要安装keepalived,具体步骤参考第一节。可以在keepalived官网下载 http://www.keepalived.org
1、主服务器的配置
Keepalived服务的配置目录位于/etc/keepalived,其中keepalived.conf 是主配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost.localdomain//主调度器的名称
}
notification_email_from benet root@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_01
}
vrrp_instance VI_1 {
state MASTER//主调度器的热备状态
interface eth0
virtual_router_id 10//编号主与从的两边要一样的
priority 100//主调度器的优先级
advert_int 1
authentication {//主、从热备认证信息
auth_type PASS
auth_pass abc123
}
virtual_ipaddress {//指定群集VIP地址(虚拟服务器地址),可以指定多个的
192.168.0.30
}
}
virtual_server 192.168.0.30 80 {//虚拟服务器地址(VIP)、端口
delay_loop 6//健康检查的间隔时间(秒)
lb_algo rr//轮询(rr)调度算法
lb_kind DR//直接路由(DR)群集工作模式
persistence_timeout 60//连接保持时间(秒),若注释掉加个"!"
protocol TCP//应用服务采用的是TCP协议
real_server 192.168.0.10 80 { //第一个web节点的地址、端口
weight 1//节点的权重
TCP_CHECK {//健康检查方式
connect_port 80//检查的目标端口
connect_timeout 3//连接去超时(秒)
nb_get_retry 3//重试次数
delay_before_retry 3//重试间隔(秒)
}
}
real_server 192.168.0.20 80 { //第二个web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
确认上述配置无误,然后启动keepalived服务,实际状态为MASTER的主服务器将为eth0接口自动添加VIP地址,通过 ip addr show dev eth0 命令查看
service keepalived start
2、备用服务器的配置
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost.localdomain//从调度器的名称
}
notification_email_from benet root@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_01
}
vrrp_instance VI_1 {
state SLAVE//从调度器的热备状态
interface eth0
virtual_router_id 10//编号主与从的两边要一样的
priority 95//从调度器的优先级
advert_int 1
authentication {//主、从热备认证信息
auth_type PASS
auth_pass abc123
}
virtual_ipaddress {//指定群集VIP地址(虚拟服务器地址),可以指定多个的
192.168.0.30
}
}
virtual_server 192.168.0.30 80 {//虚拟服务器地址(VIP)、端口
delay_loop 6//健康检查的间隔时间(秒)
lb_algo rr//轮询(rr)调度算法
lb_kind DR//直接路由(DR)群集工作模式
persistence_timeout 60//连接保持时间(秒),若注释掉加个"!"
protocol TCP//应用服务采用的是TCP协议
real_server 192.168.0.10 80 { //第一个web节点的地址、端口
weight 1//节点的权重
TCP_CHECK {//健康检查方式
connect_port 80//检查的目标端口
connect_timeout 3//连接去超时(秒)
nb_get_retry 3//重试次数
delay_before_retry 3//重试间隔(秒)
}
}
real_server 192.168.0.20 80 { //第二个web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
确认上述配置无误,同样启动keepalived服务,此时主服务器仍然在线,漂移地址由主服务器控制,其他服务器为备用状态,因此备用服务器将不会为eth0接口添加虚拟ip地址
service keepalived start
ip addr show dev eth0
3、双机热备倒换测试
Keepalived的日子消息保存在/var/log/messages 文件中,在主从测试倒换时,可以跟踪此文件来观察热备状态的变坏。
less /var/log/messages