CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)

提示:这是我工作中的一份实验记录,主要参考了博客“使用keepalived实现双机热备 ”,有需要的话可以到该博客查看!


本次实验目标是:
搭建两台Web服务器,然后通过Keepalived来实现热备,其中任务一台出现故障,对外仍然可以正常提供服务!


什么是双机热备?
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。


keepalived的工作原理
keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。
在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。
一组VRRP路由器协同工作,共同构成一台虚拟路由器。 
Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。
当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。


实验环境
下面来以keepalived结合httpd来实现一个web服务器的双机热备。
(一般是用  keepalived + Nginx或者haproxy,这里仅是实验用了httpd ),
我们在本文中的测试环境如下
两台Web服务器(httpd),和一个虚拟服务器(Keepalived):
master(主Web服务器):CentOS7+httpd2.4.6    192.168.1.231
backup(备用Web服务器): CentOS7+httpd2.4.6    192.168.1.232
vip(Keepalived虚拟的): 192.168.1.230
测试环境的网络topology图如下:

  CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第1张图片

节点A 192.168.1.231 (主节点), 节点B 192.168.1.232(备用节点),虚拟IP(对外提供服务的IP 192.168.1.230)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.1.230 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.1.230的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.1.230 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.1.230的MAC地址=节点B网卡的MAC地址。


1、先装好两台Web服务器

目前192.168.1.231和192.168.1.232两台服务器都安装了httpd来提供web服务,访问如下图:



注意,上面只是测试下,我们实验要做的是访问 192.168.1.230,就是由后续要安装的Keepalived来实现。


2、在两台服务器上分别安装keepalived
到官网( http://www.keepalived.org/download.html )下载文件,放到  “/usr/local/src”目录,如下:
CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第2张图片
 解压源码,命令如下:
  1. tar -zxvf keepalived-1.3.5.tar.gz
进入目录执行安装,命令如下:
  1. cd keepalived-1.3.5.tar.gz
  2. ./configure
  3. make
  4. make install
如果你跟我一样,执行 “./configure” 有出现下面错误,
CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第3张图片
解决方法是,安装openssl,安装命令如下:
  1. yum -y install openssl openssl-devel

安装成功后,默认会在 “/usr/local/etc” 下看到“keepalived”目录,进去会看到一个配置文件“keepalived.conf”,如图:

至此,安装已完成,接下来是修改配置文件。 


3、修改keepalived.conf配置文件

1) 192.168.1.231 的配置如下:
CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第4张图片
 2)192.168.1.232 的配置如下:
CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第5张图片
下面附一份配置说明:
  1. global_defs {
  2. router_id LVS_DEVEL_A #这个id自已改下,不重复即可
  3. #这里可能有一些发邮件的相关配置,可以直接删除,保留上面那行router_id即可
  4. }
  5. vrrp_instance VI_1 {
  6. state MASTER #主服务器就写MASTER,备用的就写BACKUP
  7. interface ens33 #网络接口名,这个根据情况写
  8. virtual_router_id 51 #主、备必须一样
  9. priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高
  10. advert_int 1 #VRRP Multicast广播周期秒数
  11. authentication {
  12. auth_type PASS #VRRP认证方式,主备必须一致 
  13. auth_pass 1111 #密码
  14. }
  15. virtual_ipaddress {
  16. 192.168.1.230/24 #VRRP HA虚拟地址
  17. }
  18. }

 4、启动Keepalived
执行启动,因为装下 /usr/local 下了,要指定配置文件咯,如下:
  1. keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
两台web服务器都要执行上面来启动 Keepalived,如果想看下log消息,如下:
  1. tail -f /var/log/messages
通过 ip addr 可查看到 192.168.1.230/24 绑定到了 ens33 接口上,如图:
CentOS7,keepalived搭建双机热备(高可用、keepalived、Nginx、Haproxy、反向代理)_第6张图片
 
5、验证结果

 好了,现在访问 http://192.168.1.230,可看到运行的是 192.168.1.231,如图:

 现在我把 192.168.1.231 服务器关掉,刷新页面,看到访问的是备用的 192.168.1.232,如图:
 

可以看到,主服务器有故障的时候,会自己启动备用服务器,
对用户来说几乎无感知到有故障,实验成功! 


6、需要设置开机启动?
往 /etc/rc.d/rc.local 里写入启动命令即可
  1. #添加一个脚本文件
  2. vi /usr/local/etc/keepalived/start.sh
  1. #!/bin/bash
  2. keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
  1. #赋可执行权限
  2. chmod +x /usr/local/etc/keepalived/start.sh
  1. vi /etc/rc.d/rc.local
  2. #编辑启动文件,在后面添加:/usr/local/etc/keepalived/start.sh
  1. #添加可执行权限
  2. chmod +x /etc/rc.d/rc.local



(完)

参考:
使用keepalived实现双机热备 : http://blog.csdn.net/kkdelta/article/details/39433137


你可能感兴趣的:(服务器)