使用ldirectord实现LVS健康检测

news/2024/11/16 12:50:09/

注意:在LVS/DR模式环境下,具体配置见上篇LVS/DR配置

1.1 ldirectord介绍

  • LVS监控: ldirectord 主要设计用于监控Linux虚拟服务器(LVS)架构中的服务器池状态。LVS是一种负载均衡解决方案,用于将网络流量和请求分发到多个服务器上。

  • 运行环境: ldirectord 运行在IPVS节点上,即负载均衡器所在的服务器上。

  • 守护进程: 它作为一个守护进程运行,这意味着它会在后台持续运行,监控服务器池中服务器的状态。

  • 健康检查: ldirectord 通过向服务器池中的每个真实服务器发送请求来执行健康检查。这些请求可以是TCP连接、HTTP请求或其他类型的网络请求,具体取决于配置。

  • 自动管理: 如果某个服务器没有响应 ldirectord 发送的请求,ldirectord 会认为该服务器不可用,并使用 ipvsadm 工具从IPVS表中删除该服务器的条目。ipvsadm 是一个用于管理IP虚拟服务器的命令行工具。

  • 恢复处理: 当不可用的服务器再次变得可用并能够响应健康检查时,ldirectord 同样会使用 ipvsadm 将该服务器重新添加到IPVS表中。

  • 高可用性: 通过自动添加和删除服务器,ldirectord 有助于维护LVS架构的高可用性,确保流量始终被分发到健康的服务器上。

  • 配置灵活: ldirectord 允许管理员自定义健康检查的频率、类型和超时设置,以适应不同的监控需求。

  • 日志和监控: 它可能还提供日志记录功能,帮助系统管理员跟踪服务器状态的变化和 ldirectord 的操作。

  • 开源社区: 作为一个开源工具,ldirectord 可能会有一个活跃的社区,提供支持和分享最佳实践。

1.1.1 模拟一台Nginx宕机

[root@LVS-RS2 ~]# systemctl stop nginx.service 
​
[root@LVS ~]# ipvsadm -Ln   #并没有将RS2删除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr-> 192.168.110.32:80            Route   1      0          10        -> 192.168.110.33:80            Route   1      5          5       
​
[root@Client ~]# for ((i=1;i<=10;i++)); do curl http://192.168.110.10; done
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1
curl: (7) Failed to connect to 192.168.110.10 port 80: Connection refused
This is LVS test IP=192.168.110.32  Host=LVS-RS1

1.2 使用ldirectord实现LVS/DR的高可用

机器名称IP地址子网掩码说明
LVS192.168.110.41255.255.255.0负载均衡器
RS1192.168.110.32255.255.255.0真实服务器1
RS2192.168.110.33255.255.255.0真实服务器2
Client192.168.110.34255.255.255.0客户端

1.2.1 安装部署

[root@LVS ~]# yum install ldirectord -y    #Rocky 8 仓库没有这个包

1.2.2 配置

[root@LVS ~]# cp /usr/share/doc/ldirectord/ldirectord.cf /etc/ha.d/ldirectord.cf
[root@LVS ~]# vim /etc/ha.d/ldirectord.cf   #修改配置如下
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes
#logfile="/var/log/ldirectord.log"
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no
​
# Sample for an http virtual service
virtual=192.168.110.10:80real=192.168.110.32:80 gatereal=192.168.110.33:80 gatefallback=127.0.0.1:80 gateservice=httpscheduler=rrprotocol=tcpchecktype=negotiatecheckport=80[root@LVS ~]# systemctl start ldirectord.service

1.2.1 测试

[root@LVS ~]# watch -n 5 ipvsadm -Ln  #可以实时监控
​
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr-> 192.168.110.32:80            Route   1      0          0         -> 192.168.110.33:80            Route   1      0          0   [root@LVS-RS2 ~]# systemctl stop nginx.service  #模拟宕机
​
[root@LVS ~]# ipvsadm -Ln   #自动移除
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr-> 192.168.110.32:80            Route   1      0          0      [root@Client ~]# for ((i=1;i<=10;i++)); do curl http://192.168.110.10; done  #请求全部转到RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
This is LVS test IP=192.168.110.32  Host=LVS-RS1
​
[root@LVS-RS2 ~]# systemctl start nginx.service 
​
[root@LVS ~]# ipvsadm -Ln    #启动后回复
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.110.10:80 rr-> 192.168.110.32:80            Route   1      0          10        -> 192.168.110.33:80            Route   1      0          0        

http://www.ppmy.cn/news/1446746.html

相关文章

深入理解正则表达式:从入门到精通

title: 深入理解正则表达式&#xff1a;从入门到精通 date: 2024/4/30 18:37:21 updated: 2024/4/30 18:37:21 tags: 正则Python文本分析日志挖掘数据清洗模式匹配工具推荐 第一章&#xff1a;正则表达式入门 介绍正则表达式的基本概念和语法 正则表达式是一种用于描述字符串…

Stm32-使用TB6612驱动电机及编码器测速

这里写目录标题 起因一、电机及编码器的参数二、硬件三、接线四、驱动电机1、TB6612电机驱动2、定时器的PWM模式驱动电机 五、编码器测速1、定时器的编码器接口模式2、定时器编码器模式测速的原理3、编码器模式的配置4、编码器模式相关代码5、测速方法 六、相关问题以及解答1、…

CSS移动端弹性布局

一级标题 二倍图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>背景图片</title><styl…

让新手变中手的ChatGPT 使用方法

让新手变中手的ChatGPT 使用方法 已经要一年了,没想到这篇还是一样有用。看到许多依然是一句话就要问出结果的教学,就知道AI 进步很快,但人的学习速度还需要更多时间。 以下为去年原版内容加上新的两招更新,希望帮助你使用ChatGPT 更好用,当未来文字可直接生成影像时,你…

jenkins教程

jenkins 一、简介二、下载安装三、配置jdk、maven和SSH四、部署微服务 一、简介 Jenkins是一个流行的开源自动化服务器&#xff0c;用于自动化软件开发过程中的构建、测试和部署任务。它提供了一个可扩展的插件生态系统&#xff0c;支持各种编程语言和工具。 Jenkins是一款开…

社交媒体之谜:深度解析Facebook的内容策略

作为全球最大的社交媒体平台之一&#xff0c;Facebook在内容策略方面一直处于行业的领先地位。其内容策略不仅影响着数十亿用户的信息获取和社交互动&#xff0c;也深刻影响着整个社会的舆论和文化传播。本文将深入探讨Facebook的内容策略&#xff0c;剖析其背后的运作机制和对…

【LeetCode刷题】162. 寻找峰值

1. 题目链接 162. 寻找峰值 2. 题目描述 3. 解题方法 这题可以利用二分查找解决&#xff0c;我对于这个问题的建模是&#xff0c;从一段区间找&#xff0c;然后利用二分逐渐缩小范围&#xff0c;直到这个范围内只有一个数字。如下图 然后下一轮的mid就只有一个数字了&#x…

有哪些开源协议?

目前存在多种开源协议&#xff0c;它们各自有不同的特点和适用场景&#xff0c;旨在保护开发者权利的同时促进软件的共享和协作。以下是几种常见的开源协议&#xff1a; MIT License&#xff08;麻省理工学院许可证&#xff09;&#xff1a; 非常宽松的许可&#xff0c;基本上允…