C05S09-Keepalive服务架设

devtools/2024/12/23 16:41:21/

一、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软件包。

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

    cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
    
  3. 配置keepalived.conf文件。

    global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_01vrrp_iptables
    }vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1virtual_ipaddress {192.168.1.100}
    }virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 0protocol TCPreal_server 192.168.1.129 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.130 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
    }
    
  4. 将keepalived.conf配置文件从主调度器发送给备用调度器,并将备用调度器的文件做出如下修改。

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

    systemctl restart keepalived
    
  6. 配置系统内核文件/etc/sysctl.conf。

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

    sysctl -p
    
  8. 检查ipvsadm策略、VIP是否正常显示。

2. 后端服务器部署

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

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

    netplan apply
    
  3. 在两台服务器上配置静态路由。

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

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

    sysctl -p
    
  6. 开启两台后端服务器的Nginx服务。

    systemctl restart nginx
    

3. 客户端访问测试

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

4. 调度器宕机测试

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

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

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


http://www.ppmy.cn/devtools/144740.html

相关文章

计算机基础复习12.22

Redis实现分布式锁 set lock_key unique_value nx px 10000 lock_key: key键 unique_value:是唯一的标识 nx: 表示lock_key不存在,才对lock_key进行设置 px: 设置过期时间 Linux的排查命令 top 实时监控进程 显示CPU 内存 负载 交换区 netstat:查看网络连接…

Flutter组件————Scaffold

Scaffold Scaffold 是一个基础的可视化界面结构组件,它实现了基本的Material Design布局结构。使用 Scaffold 可以快速地搭建起包含应用栏(AppBar)、内容区域(body)、抽屉菜单(Drawer)、底部导…

解决QT制作的软件,全屏显示后最小化,点击任务栏图标打开时不是全屏而是窗口状态的问题

问题: 用QT自定义窗口写最大最小化时,发现从全屏切换到最小化状态,再从任务栏点击图标时,打开的窗体状态是窗口化状态而不是全屏状态。 自定义的窗体切换函数DoVideoBoxMenu_WindowState(Qt::WindowState wState),根据…

SonarQube 概述

**SonarQube ** 1. SonarQube 概述 SonarQube 是一个开源的代码质量管理平台,广泛用于持续检查代码的质量,包括检测代码中的错误、漏洞和不符合最佳实践的代码。SonarQube 可以与 CI/CD 流程结合,自动化地对代码进行静态分析,帮…

Rust之抽空学习系列(五)—— 所有权(上)

Rust之抽空学习系列(五)—— 所有权(上) 1、什么是所有权 所有权是确保Rust程序安全的一种机制 安全则是指程序中没有未定义的行为未定义的行为是指在执行一段代码时,结果不可预测且未被编程语言指定的情况Rust的基…

ArcGIS计算土地转移矩阵

在计算土地转移矩阵时,最常使用的方法就是在ArcGIS中将土地利用栅格数据转为矢量,然后采用叠加分析计算,但这种方法计算效率低。还有一种方法是采用ArcGIS中的栅格计算器,将一个年份的地类编号乘以个100或是1000再加上另一个年份的…

【jvm】主要参数

Java 虚拟机(JVM)有许多参数用于控制其行为和性能,下面是一些 主要的 JVM 启动参数,这些参数通常分为以下几类: 内存管理相关参数 这些参数主要用来配置 JVM 的内存分配策略、堆内存、栈内存等。 -Xms 设置 JVM 启动…

《计算机组成及汇编语言原理》阅读笔记:p28-p47

《计算机组成及汇编语言原理》学习第 3 天,p28-p47 总结,总计 20 页。 一、技术总结 1.Virtual Machine 2.stack 3.The fetch-execute Cycle 在控制单元(Control Unit, CU)里面有一个指令寄存器(Instruction Register, IR)和一个程序计数器(Program…