Keepalived实现双机热备

软件设计 2017-09-14

Keepalived实现双机热备:

双机热备一般指的是两台机器设备同时在运行,但是只有一台处于提供服务的状态。当其中一台设备出现故障,那么另一台设备接管角色,继续提供服务,他们之间的切换时间非常之短,基本是无缝切换,所以避免了因为某台服务器出现故障,导致系统软件不能正常运行的问题。

·     Keepalived

·     热备架构图

·     安装及配置

·     测试及验证

一、Keepalived

Keepalived的运行原理是基于VRRP(虚拟路由冗余协议)机制,在VRRP中有两个重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。

VRRP路由器是一种实体路由器设备,而虚拟路由器则是基于VRRP协议构建的虚拟路由器,是软性的虚拟概念,一组VRRP路由器协同工作,共同构造一台虚拟服务器。

VRRP协议支持一种选举机制,主要用来选出用来提供服务的路由即主控路由,其它的就是备份路由了,当主控路由失效之后,备份路由中重新选出一个主控路由(往往按照设置好的优先级别重新分配),接管主控服务,继续工作,来保证不间断的提供服务。

二、热备架构图

1、环境准备

因为资源条件限制,这里使用虚拟机代替物理主机,具体如下:

master : 192.168.132.10(主控服务器)

backup : 192.168.132.11(备用服务器)

vip : 192.168.132.101

2、架构图解

Keepalived实现双机热备

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、虚拟IP配置

$vim /etc/sysconfig/network-scripts/ifcfg-eth2:0

DEVICE=eth2:0  

TYPE=Ethernet  

ONBOOT=yes  

BOOTPROTO=static  

DNS1=192.168.232.2  

IPADDR=192.168.132.101 

NETMASK=255.255.255.0  

GETWAY=192.168.232.2

2、主备机器安装keepalived

$tar  -zxvf  keepalived-1.2.6.tar.gz

$cd keepalived-1.2.6

$sudo ./configure

$make & make install

3、主节点keepalived配置

global_defs {

   router_id NodeA

}

vrrp_instance VI_11 {

   state MASTER   #设置为主服务器

   interface eth2 #设置监听网络接口

   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虚拟地址

}

4、备用节点keepalived配置

global_defs {

   router_id NodeB

}

vrrp_instance VI_11 {

   state BACKUP   #设置为备用服务器

   interface eth2 #设置监听网络接口

   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虚拟地址

}

5、启动主备keepalived服务

$keepalived  -D –f  /etc/keepalived/keepalived.conf

查看logs日志:

$tail  -f  /var/log/messages

通过日志,可以查看节点的ARP消息daemon[4029]: 

Registering new address record for192.168.132.101 on eth0.

6、安装web服务器

在两台物理服务器上安装web服务器,比如:nginx,apacache或tomcat等,在这里省略,请自行查阅资料安装。

四、测试及验证

1、在Node A节点上创建一个html文件,内容如下:

this is the test page

<br/>

from server 192.168.132.10

访问:

通过访问http://192.168.132.101/test/test/html

2、在Node B节点上创建一个html文件,内容如下:

this is the test page

<br/>

from server 192.168.132.11

访问:

通过访问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 B节点了,内容:

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.101 on eth0.

NOTE:

这里只介绍使用keepalived实现双机热备的功能和流程,至于Web服务器的安装等辅助技术,这里不做介绍。

附加:

一般情况下,主备服务器的选型是不同的,也就是主服务器要高配,因为其会被经常使用,出现故障只是特殊情况,而备用服务器是为了保证服务器的持续服务,但是最终还是要恢复并使用主服务器来作为主控路由服务器,也是为了缩小不必要的开销的考虑。

相关推荐