我是靠谱客的博主 爱笑铃铛,最近开发中收集的这篇文章主要介绍keepalived双机热备keepalived双机热备基础知识使用keepalived实现双机热备LVS+Keepalived高可用群集,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

keepalived双机热备基础知识

keepalived概述及安装

使用keepalived实现双机热备

主服务器的配置

备用服务器的配置

测试双机热备功能

LVS+Keepalived高可用群集

实验准备

配置主调度器

配置备调度器

配置web

测试负载均衡功能

搭建NFS服务器 

测试负载均衡功能


        本章将实现如何使用keepalived实现双机热备,包括针对IP地址的故障切换,以及在LVS高可用群集中的热备应用。

keepalived双机热备基础知识

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

keepalived概述及安装

        keepalived的官方网站位于Keepalived for Linux。在非LVS群集环境中使用时,keepalived也可以作为热备份软件使用。

  • keepalived的热备方式

        keepalived采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。

        一主 + 多备,共用同一个IP地址,但优先级不同。

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

 

  • keepalived的安装与服务控制

(1)安装keepalived

        在安装方式中选择YUM安装,会自动安装keepalived所需的软件包,除此之外,在LVS群集环境中也会用到ipvsadm管理工具。

[root@localhost ~]# yum -y install keepalived ipvsadm

(2)控制keepalived服务

[root@localhost ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

使用keepalived实现双机热备

        主、备服务器中都需要安装keepalived。

主服务器的配置

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

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak         //备份主配文件
[root@localhost keepalived]# vim keepalived.conf
global_defs {
......//省略部分内容
   router_id LVS_DEVEL                  //路由器(服务器)名称(建议指定不同的名称区分路由)
}
​
vrrp_instance VI_1 {                    //定义VRRP热备实例
    state MASTER                        //热备状态,MASTER表示主服务器
    interface ens33                     //承载VIP地址的物理接口
    virtual_router_id 51                //虚拟路由器的ID号,每个热备组保持一致
    priority 100                        //优先级,数值越大优先级越高
    advert_int 1                        //通告间隔秒数(心跳频率)
    authentication {                    //认证信息,每个热备组保持一致
        auth_type PASS                  //认证类型
        auth_pass 1111                  //密码字串
    }
    virtual_ipaddress {                 //指定漂移地址(VIP),可以是多个
        200.0.0.100
    }
}

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

[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip a show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:af:af:9d brd ff:ff:ff:ff:ff:ff
    inet 200.0.0.1/24 brd 200.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 200.0.0.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::5f65:9c3d:d218:7cea/64 scope link 
       valid_lft forever preferred_lft forever

备用服务器的配置

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

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

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

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vim keepalived.conf
global_defs {
......//省略部分内容
   router_id LVS_DEVEL2                 //修改备份路由名称
}
​
vrrp_instance VI_1 {
    state BACKUP                        //修改热备状态(备份)
    interface ens33                     //修改承载VIP地址的物理接口
    virtual_router_id 51
    priority 90                         //优先级,数值应低于主服务器
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.0.0.100                     //漂移地址
    }
}

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

[root@localhost keepalived]# ip a show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:3c:d0:8b brd ff:ff:ff:ff:ff:ff
    inet 200.0.0.2/24 brd 200.0.0.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::595f:84d:a379:7b6e/64 scope link 
       valid_lft forever preferred_lft forever

测试双机热备功能

        keepalived的日志消息保存在/var/log/messages文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。

  • 连通性测试

        客户机中执行"ping -t 200.0.0.10"命令,能够正常、持续ping通,根据一下操作继续观察测试结果。

  1. 停止主服务器的keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明已有其他服务器接替VIP地址,并及时响应客户机请求。
  2. 启动主服务器的keepalived服务,发现ping测试只中断了1或2个包即恢复正常,说明主服务器已回复正常,并夺回VIP地址的控制权。
  • 查看日志记录

        在执行主、备服务器故障切换时的过程中,分别观察各自的/var/log/messages日志文件,可以看到MASTER、SLAVE状态的迁移记录。

        通过上述测试过程,可以发现双机热备已经正常。客户机只要通过VIP地址就可以访问服务器所提供的Web等应用,其中任何一台服务器失效,另一台服务器将会立即接替服务,从而实现高可用性。实际应用中,注意主、备服务器所提供的Web服务内容要保持一致。

LVS+Keepalived高可用群集

        keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用keepalived构建LVS群集更加简便易用,主要有事体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后在重新加入。

实验准备

        根据下图配置IP,关闭防火墙,实现keepalived+LVS-DR高可用的负载均衡web群集。

 

配置主调度器

  • 安装ipvsadm和keepalived包。

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
  • 修改内核参数文件,关闭ICMP重定向。

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p               //设置参数立即生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
  • keepalived.conf配置

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
​
global_defs {
......//省略部分内容
   router_id R1                     //修改名称
}  
​
vrrp_instance VI_1 {
    state MASTER                    //配置热备状态
    interface ens33                 //设置承载VIP的物理接口
    virtual_router_id 51
    priority 100                    //主服务器优先级设为100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.0.0.100                 //设置群集VIP地址
    }
}
virtual_server 200.0.0.100 80 {     //配置虚拟服务器地址(VIP)、端口
    delay_loop 15                   //配置健康检查的间隔时间(秒)
    lb_algo rr
    lb_kind DR                      //配置直接路由模式
    nat_mask 255.255.255.0
    ! persistence_timeout 50        //连接保持时间(秒),若启用去掉!号
    protocol TCP
​
    real_server 200.0.0.3 80 {      //第一个web节点的地址、端口
        weight 1
        TCP_CHECK {                 //健康检查方式
                connect_port 80     //检查的目标端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 200.0.0.4 80 {      //第二个web节点的地址、端口
        weight 1
        TCP_CHECK {
                connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}       
[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl enable keepalived

配置备调度器

  • 安装ipvsadm和keepalived包。

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
  • 修改内核参数文件,关闭ICMP重定向。

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost ~]# sysctl -p               //设置参数立即生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
  • keepalived.conf配置

        备份调度器的配置和主调度器的配置基本相同,重点需要修改的有路由器名称、热备状态、优先级。

[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
​
global_defs {
......//省略部分内容
   router_id R2                     //修改名称  
}   
​
vrrp_instance VI_1 {
    state BACKUP                    //配置热备状态
    interface ens33                 //设置承载VIP的物理接口
    virtual_router_id 51
    priority 90                     //备调度器优先级设为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.0.0.100                 //设置群集VIP地址
    }
}   
​
virtual_server 200.0.0.100 80 {     //配置虚拟服务器地址(VIP)、端口
    delay_loop 15                   //配置健康检查的间隔时间(秒)
    lb_algo rr
    lb_kind DR                      //配置直接路由模式
    nat_mask 255.255.255.0
   ! persistence_timeout 50         //连接保持时间(秒),若启用去掉!号
    protocol TCP
    
    real_server 200.0.0.3 80 {      //第一个web节点的地址、端口
        weight 1
        TCP_CHECK {                 //健康检查方式
                connect_port 80     //检查的目标端口
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }   
    }       
    real_server 200.0.0.4 80 {      //第二个web节点的地址、端口
        weight 1
        TCP_CHECK {
                connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
[root@localhost ~]# systemctl start keepalived
[root@localhost ~]# systemctl enable keepalived

配置web

  • 配置ifcfg-lo:0群集IP。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=200.0.0.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 200.0.0.100  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
  • 修改内核文件,关闭ARP应答。

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]# sysctl -p
  • 添加一条VIP本地访问路由。

[root@localhost ~]# vim /etc/rc.local
/sbin/route add -host 200.0.0.100 dev lo:0
[root@localhost ~]# route add -host 200.0.0.100 dev lo:0
  • 启动httpd服务,创建测试网页。

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo 1111111 > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

        web2配置和web1相同,重复操作即可,测试网页可以改成222222用来区分web1和2。

测试负载均衡功能

        客户机访问200.0.0.100,断开主调度器的网卡,再次访问查看是否正常

 

搭建NFS服务器 

        在nfs主机配置共享存储服务器,提供给两台web服务器的后台网页存储。详情参考LVS。LVS负载均衡群集_大虾好吃吗的博客-CSDN博客LVS(Linux Virtual Server,Linux虚拟服务器)https://blog.csdn.net/qq_61116007/article/details/125894261

  • 启动nfs-utils、rpcbind软件包

[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost ~]# systemctl enable rpcbind
  • 设置共享目录

[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vim /etc/exports
/opt/wwwroot    200.0.0.0/24(rw,sync,no_root_squash)
  • 启动服务并查看本机发布的NFS共享目录。

[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/wwwroot 200.0.0.0/24
[root@localhost ~]# echo 666 > /opt/wwwroot/index.html
  • 两台web挂载共享目录

[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# mount 200.0.0.5:/opt/wwwroot /var/www/html

测试负载均衡功能

        客户机访问200.0.0.100,查看网页是否为共享内容。

 

        关闭主调度器和web1的网卡,访问网页是否依然为共享内容,访问成功,实验完成。

 

最后

以上就是爱笑铃铛为你收集整理的keepalived双机热备keepalived双机热备基础知识使用keepalived实现双机热备LVS+Keepalived高可用群集的全部内容,希望文章能够帮你解决keepalived双机热备keepalived双机热备基础知识使用keepalived实现双机热备LVS+Keepalived高可用群集所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部