使用keepalived实现双机热备
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。
下面来以keepalived结合tomcat来实现一个web服务器的双机热备。
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
一、安装必要软件
yum install openssl*
yum install gcc
gcc -v
yum install ipvsadm.x86_64
yum install popt* -y
yum install libnl* -y #
libnl套件是一个库的集合为基础的Linux内核提供的API接口 netlink协议。
二、在主备机器上安装keepalived
步骤如下:下载keepalived-1.1.15.tar.gz,然后解压安装
#tar zxvf keepalived-1.1.15.tar.gz#cd keepalived-1.1.15
#./configure
#make
#make install
三、创建软链接
ln -s /usr/src/kernels/2.6.32-504.23.4.el6.x86_64/ /usr/src/linux #
四、设置开机自动启动服务
自动安装目录在 /usr/local 可以改 ./configure --prefix+新路径
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
service keepalived start
配置keepalived
配置中的state MASTER决定了节点为主节点
priority决定了优先级,比如在有多个备用节点的时候,主节点故障后优先级值大的接管
vim /etc/keepalived/keepalived.conf
global_defs { #全局变量
router_id haweb_1
}
vrrp_sync_group VGM { #vrrp组名
group {
VI_HA
}
}
vrrp_script chk_http_port { #监测httpd服务进程是否开启
script "killall -0 httpd"
Interval 1
}
vrrp_instance VI_HA {
state MASTER #设置主服务器 辅助SLAVE 单向不同步BACKUP
interface eth0 #监测网络接口
lvs_sync_daemon_inteface eth0
virtual_router_id 22 #虚拟路由器的ID号,每个热备组保持相同
priority 100 #权值大小 决定主辅
advert_int 5 #心跳间隔
authentication {
#本VRRP组的认证信息
auth_type PASS
#VRRP认证方式,主备必须一致
auth_pass wangning
}
virtual_ipaddress { #虚拟ip或接外网的ip地址
192.168.1.28/24 dev eth0
}
track_script { #执行这个 chk_http_port脚本
chk_http_port
}
}
六、测试问题
1、开启服务后,主得vip,关闭主keepalived服务,辅得vip。
2、在开启主keepalived服务,经过5秒心跳间隔,vip回主。
3、关闭主httpd服务,辅得vip,开启主httpd服务,主不得vip,主重启keepalived服务,得vip。
七、主配置文件实例
MASER
keepalived.conf
global_defs {
router_id haweb_1
}
vrrp_sync_group VGM {
group {
VI_HA
}
vrrp_script chk_http_port {
script "killall -0 httpd"
Interval 1
}
vrrp_instance VI_HA {
state MASTER #slave
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 100 #90
advert_int 5
authentication {
auth_type PASS
auth_pass zhangbin
}
virtual_ipaddress {
192.168.0.20/24 dev eth0
}
track_script {
chk_http_port
}
}
SLAVE
keepalived.conf
global_defs {
router_id haweb_1
}
vrrp_sync_group VGM {
group {
VI_HA
}
}
vrrp_script chk_http_port {
script "killall -0 httpd"
Interval 1
}
vrrp_instance VI_HA {
state SLAVE
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 22
priority 90
advert_int 5
authentication {
auth_type PASS
auth_pass 521521
}
virtual_ipaddress {
192.168.1.28/24 dev eth0
}
track_script {
chk_http_port
}
}