C05S09-Keepalive服务架设

一、Keepalive

1. Keepalive概述

代理服务器和调度器都是单点模式,Keepalive是一种实现LVS调度器实现高可用集群的架设,以提高节点的冗余和容错。

Keepalive是一种基于VRRP协议实现的调度器高可用方案,为了实现LVS的集群而设计开发,但是适用场景不仅局限于LVS。Keepalive会为后台服务做健康检查,服务不可用时,会自动移除IPVS的转发策略,服务恢复时会自动把策略重新加入IPVS中。

Keepalive可以实现以下功能:

  1. 主备切换。
  2. 故障检测和恢复。
  3. 主备设备通过组播地址224.0.0.18通信。
  4. 通过配置VIP来实现集群入口。

2. Keepalive工作原理

  1. 主备调度器的权重不同,通过VIP来访问调度器集群。
  2. 当主调度器故障,备用调度器会接替成为主服务器。通过VIP访问后端服务器,也就成为通过该调度器来进行访问。
  3. 当故障恢复,两台调度器会通过组播地址进行通信,比较权重。此时原先的主调度器会正常工作,通过VIP访问也就是通过该调度器进行访问。

二、Keepalive具体架设

1. 调度器部署

  1. 两台调度器上都安装ipvsadm和keepalived软件包。

    bash 复制代码
    apt -y install ipvsadm keepalived
  2. 复制Keepalive配置文件模板。

    bash 复制代码
    cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
  3. 配置keepalived.conf文件。

    properties 复制代码
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id LVS_01
       vrrp_iptables
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 51
        priority 100
        advert_int 1
        virtual_ipaddress {
            192.168.1.100
        }
    }
    
    virtual_server 192.168.1.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        persistence_timeout 0
        protocol TCP
    
        real_server 192.168.1.129 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.1.130 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
  4. 将keepalived.conf配置文件从主调度器发送给备用调度器,并将备用调度器的文件做出如下修改。

    properties 复制代码
    router_id LVS_01
    state BACKUP
    priority 50
  5. 保存文件后,分别在两台调度器上重启keepalived服务。

    bash 复制代码
    systemctl restart keepalived
  6. 配置系统内核文件/etc/sysctl.conf。

    properties 复制代码
     net.ipv4.ip_forward = 0
     net.ipv4.conf.all.send_redirects = 0
     net.ipv4.conf.default.send_redirects = 0
     net.ipv4.conf.ens37.send_redirects = 0
  7. 应用内核配置,使其生效。

    bash 复制代码
    sysctl -p
  8. 检查ipvsadm策略、VIP是否正常显示。

2. 后端服务器部署

  1. 配置两台后端服务器的网卡。

    yaml 复制代码
    # 第一台RS服务器
    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.129/24]
          gateway4: 192.168.1.254
        ens37:
          dhcp4: no
          addresses: [192.168.1.100/24]
    
    # 第二台RS服务器
    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.130/24]
          gateway4: 192.168.1.254
        ens37:
          dhcp4: no
          addresses: [192.168.1.100/24]
  2. 保存文件后,应用网卡配置。

    bash 复制代码
    netplan apply
  3. 在两台服务器上配置静态路由。

    bash 复制代码
    route add -host 192.168.1.100 dev ens37
  4. 配置系统的内核文件/etc/sysctl.conf。

    properties 复制代码
    net.ipv4.conf.ens37.arp_ignore = 1  
    net.ipv4.conf.ens37.arp_announce = 2
  5. 应用内核配置,使其生效。

    bash 复制代码
    sysctl -p
  6. 开启两台后端服务器的Nginx服务。

    bash 复制代码
    systemctl restart nginx

3. 客户端访问测试

  1. 访问VIP地址,查看是否能够获取到网页内容。

4. 调度器宕机测试

  1. 在主调度器上关闭keepalived访问。

    bash 复制代码
    systemctl stop keepalived
  2. 查看两台调度器的网络信息,检查VIP是否发生了转移。

    bash 复制代码
    ip address
  3. 再次通过客户端访问VIP,查看是否能够获取到网页内容。

相关推荐
花小璇学linux9 分钟前
imx6ull-裸机学习实验1——汇编LED灯实验
linux·汇编·imx6ull·arm裸机开发
Brookty20 分钟前
【操作系统】进程(二)内存管理、通信
java·linux·服务器·网络·学习·java-ee·操作系统
易德研发28 分钟前
ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
运维·服务器·网络
生活爱好者!1 小时前
NAS 部署白板工具,实现思维导图/画板/流程图自由
运维·docker·容器
令狐少侠20112 小时前
ai之对接电信ds后端服务,通过nginx代理转发https为http,对外请求,保持到达第三方后请求头不变
nginx·ai·https
sanggou4 小时前
Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
linux·bash
牧以南歌〆9 小时前
在Ubuntu主机中修改ARM Linux开发板的根文件系统
linux·arm开发·驱动开发·ubuntu
互联网搬砖老肖9 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
Antonio91510 小时前
【音视频】HLS简介与服务器搭建
运维·服务器·音视频
夜月yeyue10 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件