Keepalived实现双机热备:
双机热备一般指的是两台机器设备同时在运行,但是只有一台处于提供服务的状态。当其中一台设备出现故障,那么另一台设备接管角色,继续提供服务,他们之间的切换时间非常之短,所以避免了因为某台服务器出现问题,导致系统软件不能正常运行问题。
· Keepalived
· 热备架构图
· 安装及配置
· 测试及验证
一、Keepalived
Keepalived的运行原理是基于VRRP(虚拟路由冗余协议)机制,在VRRP中有两个重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是一种实体路由器设备,而虚拟路由器则是基于VRRP协议构建的虚拟路由器,是软性的虚拟概念,一组VRRP路由器协同工作,共同构造一台虚拟服务器。
VRRP协议支持一种选举机制,主要用来选出用来提供服务的路由即主控路由,其它的就是备份路由了,当主控路由失效之后,备份路由中重新选出一个主控路由(往往按照设置好的优先级别重新分配),接管主控服务,继续工作,来保证不间断的提供服务。
二、热备架构图
1、环境准备
因为资源条件限制,这里使用虚拟机代替物理主机,具体如下:
master : redhat 2.6.18 192.168.132.10 (主控路由服务器)
backup : redhat 2.6.18 192.168.132.11 (备份路由服务器)
vip : 192.168.132.101
2、架构图解
NOTE:
Vip:虚拟服务器;
Node A:物理主服务器;
Node B:物理备份服务器;
在这种模式下,虚拟IP某一时刻只能属于一个物理节点,另一个作为备份节点存在,当主节点不可用时,备份节点接管虚拟IP,提供正常的服务;
3、Keepalived的原理
Keepalived被安装在两台物理服务器上,并且彼此监控对方当前是否处于正常状态,当Node A正常时,其上的keepalived会发送广播:192.168.132.101 这个ip对应的节点为Node A的网卡MAC地址;反之,如果NodeB正常时,其上的keepalived也会发送广播:192.168.132.101这个ip对应的节点为Node B的网卡MAC地址;此时,相关的电脑及客户端的ARP会发生更新,对应192.168.132.11的MAC地址与Node B网卡的MAC地址相同。
三、安装及配置
1、主备设备安装keepalived
$tar -zxvf keepalived-1.2.6.tar.gz
$cd keepalived-1.2.6
$sudo ./configure
$make & make install
2、主节点keepalived配置
global_defs {
router_id NodeA
}
vrrp_instance VI_11 {
state MASTER #设置为主服务器
interface eth0 #设置监听网络接口
priority 101 #设置优先级,值越大代表优先级越高
advert_int 1 #设置VRRP广播周期秒数
authentication {
auth_type PASS #VRRP认证方式,主备必须一致
auth_pass 1234 #验证密码
}
virtual_router_id 52 #主备必须一致
}
virtual_ipaddress {
192.168.132.101/24 #VRRP HA虚拟地址
}
3、备节点keepalived配置
global_defs {
router_id NodeB
}
vrrp_instance VI_11 {
state BACKUP #设置为备用服务器
interface eth0 #设置监听网络接口
priority 100 #设置优先级,值越大代表优先级越高
advert_int 1 #设置VRRP广播周期秒数
authentication {
auth_type PASS #VRRP认证方式,主备必须一致
auth_pass 1234 #验证密码
}
virtual_router_id 52 #主备必须一致
}
virtual_ipaddress {
192.168.132.101/24 #VRRP HA虚拟地址
}
4、启动主备keepalived服务
$keepalived -D –f /etc/keepalived/keepalived.conf
查看logs日志:
$tail -f /var/logs/messages
通过日志,可以查看节点的ARP消息
daemon[4029]: Registering new address record for 192.168.132.100 on eth0.
使用ip a命令:
可以查看到虚拟ip已经绑定到eth0
5、安装web服务器
在两台物理服务器上安装web服务器,比如:nginx,apacache或tomcat等,在这里省略,请自行查阅资料安装。
四、测试及验证
1、在Node A节点上创建一个html文件,内容如下:
this is the test page
<br/>
from server 192.168.132.10
访问:
通过url:http://192.168.132.101/test/test/html
2、在Node B节点上创建一个html文件,内容如下:
this is the test page
<br/>
from server 192.168.132.11
访问:
通过url:http://192.168.132.11/test/test/html访问是可以访问的,但是在Node A正常的情况下,访问http://192.168.132.101/test/test/html是访问的Node A节点的服务。
3、验证Node B节点的可用性
首先,将节点A的keepalived服务器关闭来模拟故障:
$killall keepalived
其次,通过下面的Url访问:
http://192.168.132.101/test/test.html
那么访问的就是Node A节点了,内容:
this is the test page
<br/>
from server 192.168.132.11
4、查看日志
此时查看日志,会发现Node B现在为主节点,发送ARP广播信息。而当Node A恢复之后,Node B释放角色,将继续由Node A为主服务器,继续服务。
daemon[3769]: Registering new address record for 192.168.132.100 on eth0.
NOTE:
这里只介绍使用keepalived实现双机热备的功能和流程,至于Web服务器的安装等辅助技术,这里不做介绍。
附加:
一般情况下,主备服务器的选型是不同的,也就是主服务器要高配,因为其会被经常使用,出现故障只是特殊情况,而备用服务器是为了保证服务器的持续服务,但是最终还是要恢复并使用主服务器来作为主控路由服务器,也是为了缩小不必要的开销的考虑。
技术交流群:
489451956(新)