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,查看是否能够获取到网页内容。

相关推荐
saynaihe27 分钟前
Docker 容器网络问题排查与最佳实践 - PushGateway 部署案例分析
运维·网络·docker·云原生·容器
xxxx12344528 分钟前
Linux-ubuntu之主频和时钟配置
linux·c语言·单片机·ubuntu
Hu_go__40 分钟前
vim的使用
linux·编辑器·vim
夜光小兔纸42 分钟前
Oracle创建逻辑目录
运维·数据库·oracle
高hongyuan43 分钟前
Linux环境下 搭建ELk项目 -单机版练习
大数据·运维·服务器·elk·elasticsearch·搜索引擎
lzz的编码时刻1 小时前
Linux限制root 用户的远程登录(安全要求)
linux·运维·安全
Karoku0661 小时前
【k8s集群应用】K8S二进制安装大致步骤(简略版)
运维·服务器·数据库·云原生·容器·kubernetes
007php0072 小时前
k8s服务搭建与实战案例
linux·运维·服务器·云原生·容器·golang·kubernetes
开心工作室_kaic2 小时前
springboot449教学资源共享平台(论文+源码)_kaic
运维·服务器·前端·数据库·vue.js
A Runner for leave3 小时前
Linux复习1——导论
linux·运维·服务器