利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。

一、Keepalived双机热备基础知识

1.Keepalived概述

Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。

Keepalived的官方网站:http://www.keepalived.org/ 虽然说主要是用于LVS群集环境,但是在非LVS群集环境中,也可以作为热备软件使用。

2.Keepalived的热备方式

Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一个路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(根据优先级)虚拟IP地址,以继续提供服务。

VRRP(虚拟路由冗余协议)和HSRP(热备份路由协议)原理几乎一样,只不过VRRP是公有协议;HSRP是Cisco的私有协议。对于VRRP(虚拟路由冗余协议)原理不太明白,可以参考博文:HSRP(热备份路由协议)详解 博文中有详细的解释。

热备组内的每台路由器都可能称为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址,如图:
利用Keepalived实现双机热备详解
使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件(比如:ens33:0);而是由Keepalived根据配置文件自动管理的。

3.安装Keepalived

安装Keepalived服务特别简单,Centos 7系统盘中都有相应的软件包,通过YUM安装即可!除此之外,在LVS群集环境中应用时,也需要用到ipvsadm管理工具(查看负载分配情况时使用)。

[[email?protected] ~]# yum -y install keepalived ipvsadm
//安装Keepalived和ipvsadm
[[email?protected] ~]# systemctl start keepalived
//启动Keepalived服务

二、使用Keepalived实现双机热备

基于VRRP的热备方式,Keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器——当然,最常用的应该就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(比如:Web、FTP、Mail、SSH、DNS等)。

通过一个示例来了解Keepalived双机热备的配置方法,如图:
利用Keepalived实现双机热备详解
主、备服务器中都需要安装Keepalived。(httpd服务最好也都安上,用于测试!)详细步骤如下:

1.主服务器的配置

Keepalived服务的配置文件是/etc/keepalived//keepalived.conf。具体操作如下:

[[email?protected] ~]# systemctl stop firewalld
[[email?protected] ~]# setenforce 0
[[email?protected] ~]# yum -y install keepalived ipvsadm httpd
//安装相应的服务、关闭防火墙和SELinux
[[email?protected] ~]# vim /etc/keepalived/keepalived.conf 
//编辑Keepalived服务的配置文件
global_defs {
   notification_email {
     [email?protected]                                  //收件人地址
   }
   notification_email_from root  [email?protected]                     //发件人姓名、地址
   smtp_server 127.0.0.1
   smtp_connect_timeout 30                            //以上信息是关于发送邮件的内容,根据实际情况填写就好
   router_id HA_TEST_R1                               //本路由器(服务器)的名称
}

vrrp_instance VI_1 {                                       //定义VRRP热备实例
    state MASTER                                           //热备状态,MASTER表示为主服务器
    interface ens33                                          //承载VIP的物理网卡接口
    virtual_router_id 1                                     //虚拟路由器的ID,每个热备组保持一致
    priority 100                                                //优先级100,数值越大优先级越高(最大255)
    advert_int 1                                              //通告间隔秒数(心跳频率)
    authentication {                                        //认证信息,每个热备组要保持一致
        auth_type PASS                                  //认证类型
        auth_pass 1111                                   //密码字串
    }
    virtual_ipaddress { 
        192.168.1.254                                    //指定漂移地址(VIP),可以有多个(但必须跟物理接口是同网段的)
    }
}

确认配置信息没有错误后,启动Keepalived服务。实际状态为MASTER的主服务器将为ens33接口自动添加VIP地址,通过ip命令查看(ifconfig命令看不到)。

[[email?protected] ~]# systemctl restart keepalived
//重启服务
[[email?protected] ~]# ip addr show dev ens33
//查看漂移IP地址是否存在
2: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:00:11:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.254/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::c4bc:2e5a:89b:8729/64 scope link 
       valid_lft forever preferred_lft foreve
[[email?protected] ~]# echo “aaaaaaaaa” > /var/www/html/index.html
[[email?protected] ~]# systemctl start httpd
//修改httpd服务的主页文件,用于测试!

2.备用服务器的配置

在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括虚拟路由器的ID、认证信息、漂移地址、心跳频率等(必须一样);不同之处主要在于路由器名称、热备状态、优先级。

  • 路由器名称:建议为每个参与热备的服务器指定不同的名称;
  • 热备状态:至少应有一个主服务器,将状态设置为MASTER;可以有多台备用服务器,将状态设置为BACKUP;
  • 优先级:数值越大则会取得VIP控制权的优先级越高,因此主服务器的优先级应为热备组中的最高;其他备用服务器的优先级可依次递减,但不要相同,以免争夺VIP控制权时发生冲突;

配置备用服务器(可以有多台)时,可参考主服务器的keepa.conf配置文件内容,只需修改路由器名称、热备状态、优先级即可!如下:

[[email?protected] ~]# systemctl stop firewalld
[[email?protected] ~]# setenforce 0
[[email?protected] ~]# yum -y install keepalived ipvsadm httpd
//安装相应的服务、关闭防火墙和SELinux
[[email?protected] ~]# vim /etc/keepalived/keepalived.conf 
//编辑Keepalived服务的配置文件
global_defs {
   notification_email {
     [email?protected]
   }
   notification_email_from root  [email?protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id HA_TEST_R2                                 //本路由器(服务器)名称(修改)
}

vrrp_instance VI_1 {
    state BACKUP                                              //热备状态,BACKUP表示备用服务器(修改)
    interface ens33
    virtual_router_id 1
    priority 99                                                     //优先级(修改)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.254
    }
}

确认配置无误,启动Keepalived服务,此时主服务器在线。VIP仍然由主服务器控制,而其他服务器处于备用状态。

[[email?protected] ~]# systemctl start keepalived
[[email?protected] ~]# ip addr show ens33
//启动Keepalived服务、确认VIP地址(没有VIP地址)
2: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2b:56:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::aa26:7be4:3379:130f/64 scope link 
       valid_lft forever preferred_lft forever
[[email?protected] ~]# echo "qqqqqqqqqqq" > /var/www/html/index.html
[[email?protected] ~]# systemctl start httpd
//启动http服务,设置不一样的主页(用于测试!)

3.测试双机热备功能

(1)连通性测试

在客户机上执行“ping -t 192.168.1.254”(VIP地址),能够正常通信,持续测试!

[[email?protected] ~]# systemctl stop keepalived
//主服务器故意停止Keepalived服务

查看客户机测试效果,如图:
利用Keepalived实现双机热备详解
切换时客户机会有延迟,也可能丢一两个包。

[[email?protected] ~]# ip addr show ens33
//备用服务器查看VIP地址(发现VIP已经自动转移到备用服务器上)
2: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2b:56:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.254/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::aa26:7be4:3379:130f/64 scope link 
       valid_lft forever preferred_lft forever

(2)Web访问测试

客户机访问测试,如图:
利用Keepalived实现双机热备详解
当原来优先级为100的服务器开启Keepalived服务时,客户机再次访问,将会改变网页内容。

[[email?protected] ~]# systemctl start keepalived
//主服务器启动Keepalived服务

客户机访问测试,如图:
利用Keepalived实现双机热备详解

也可查看系统日志(/var/log/messages),来获取详细信息!

通过Keepalived服务搭建的是高可用群集,跟通过LVS搭建的负载均衡群集,不一样。关于群集类型的信息介绍可以参考博文:LVS负载均衡群集详解

———————— 本文至此结束,感谢阅读 ————————

猜你喜欢

转载自blog.51cto.com/14157628/2439093