千家信息网

浅谈Keepalived双机热备

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,一、Keepalived双机热备的基础知识keepalived官方网站: www.keepalived.org/ 在非LVS环境中keepalived也可以作为热备软件使用。1、Keepalived作
千家信息网最后更新 2025年02月02日浅谈Keepalived双机热备

一、Keepalived双机热备的基础知识

keepalived官方网站: www.keepalived.org/ 在非LVS环境中keepalived也可以作为热备软件使用。

1、Keepalived作用

keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机回复后将其重新加入群集。单独部署LVS环境的话,调度器发生宕机的话,整个群集就失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将keepalived和LVS结合起来,才可形成一个真正的高可用群集,当然,后端的共享存储也必须搭建一个高可用的存储服务器,三者其中有一个满足不了,都不能称之为一个高可用的群集环境。

2、Keepalived的热备方式

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

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

二、使用Keepalived实现双机热备

基于VRRP的热备方式,keepalived可以用作服务器的故障切换,每个热备组可以有多台服务器--最常用的是多机热备了。在这种多机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现。因此能适用于各种应用服务器(不管是Web、FTP、Mail、还是SSH、DNS....)。

拓扑图如下所示:

1、配置主服务器

Keepalived服务的配置目录位于/etc/keepalived/。其中,keepalived.conf是主配置文件;另外包括一个子目录samples/,提供了许多配置样例作为参考。在Keepalived的配置文件中,使用"global_defs {...}"区段指定全局参数,使用"vrrp_instance实例名称{...}"区段指定VRRP热备参数,注释文字以"!"符号开头。

[root@centos04 ~]# systemctl stop firewalld   [root@centos04 ~]# yum -y install ipvsadm keepalived  [root@centos04 ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak   [root@centos04 ~]# systemctl start keepalived   [root@centos04 ~]# chkconfig --level 35 keepalived on  [root@centos04 ~]# vim /etc/keepalived/keepalived.conf  ! Configuration File for keepalivedglobal_defs {   router_id LVS_HA_Master     }vrrp_instance VI_1 {               state MASTER                   interface ens32                  virtual_router_id 51            priority 100                         advert_int 1                        authentication {                      auth_type PASS                 auth_pass 1111              }    virtual_ipaddress {                  192.168.100.253    } }............     

确认上面配置无误后,然后启动keepalived服务,实际状态为MASTER的主服务器将为ens32接口自动添加VIP地址,通过ip命令可以查看(注意:ifconfig命令看不到)。

[root@centos04 ~]# systemctl restart keepalived  [root@centos04 ~]# ip a show dev ens32 ens32:        valid_lft forever preferred_lft forever    inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute        valid_lft forever preferred_lft forever

2、配置从节点

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

  • 路由器名称(route_id):建议为每个参与热备的服务器指定不同的名称。

  • 热备状态(state):至少应有一台主服务器,将状态设置为MASTER;可以有多台备用的服务器,将状态设置为BACKUP。

  • 优先级(priority):数值越大则取得VIP控制权的优先级就越高,因此主服务的优先级应设置为最高;其他备用服务器可依次递减,但不能相同,以免在争夺VIP控制权时发生冲突。

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

[root@centos05 ~]# systemctl stop firewalld   [root@centos05 ~]# yum -y install keepalived ipvsadm[root@centos05 ~]# scp root@192.168.100.40:/etc/keepalived/keepalived.conf/etc/keepalived/root@192.168.100.40 s password: keepalived.conf                             100% 3549     3.5MB/s   00:00   [root@centos05 ~]# vim /etc/keepalived/keepalived.conf                    global_defs {   ...............   router_id LVS_DEVEL2            .....................}                ..............vrrp_instance VI_1 {    state BACKUP      interface ens32      virtual_router_id 51    priority 90                   advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }       virtual_ipaddress {    192.168.100.253    }}                 .................[root@centos05 ~]# systemctl start keepalived  [root@centos05 ~]# systemctl enable keepalived

确认配置无误,一样需要启动keepalived服务。此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备份状态,因此在备用服务器中将不会为ens32接口添加VIP地址。

[root@centos05 ~]# ip a show dev ens33       ens32: 

3、测试双机热备功能

将主服务器关机,或停止keepalived服务,等待约15秒后,查看备份服务器的ens32网卡,会发现漂移地址已经转移过来了,说明双机热备功能生效。待主服务器开机后,漂移地址会自动转移回到主服务器上。

[root@centos05 ~]# ip a show dev ens32   ens32:        valid_lft forever preferred_lft forever    inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute        valid_lft forever preferred_lft forever

再将主服务器开机,会发现VIP已经转移回了主服务器,而备份服务器又查不到了VIP:

[root@centos04 ~]# ip a show dev ens32   ens32:        valid_lft forever preferred_lft forever    inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute        valid_lft forever preferred_lft forever[root@centos05 ~]# ip a show dev ens32  ens32: 

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

0