热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Keepalived的健康检查机制与配置方法

Keepalived提供了多种强大且灵活的后端健康检查机制,包括HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK和MISC_CHECK等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。

keepalived具有很强大、灵活的后端检测方式,其具有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK 几种健康检测方式,接下来我们详细介绍

一、HTTP及SSL GET检测

这里有几个要点:

1、两者都有两种检测方式,一种是简单的基于返回码确认;另一种是基于确认后端页面内容hash值,确认前后是否发生变化(是不是感觉有点高端,还有简单的防止页面被篡改的作用,当然,动态页面显然不行);

2、两者都是处理简单的GET请求,基于post返回值确认是否正常,这种方法显然不适用 ,不过POST方式是可以通过MISC_CHECK方式进行支持检测的;

3、两者配置语法上相同,只不过类型名不同而已 。同属于大的web请求范畴,只不过一个走的HTTP协议,一个走的HTTPS协议;

基于状态码的检测

配置如下:

real_server 192.168.2.188 80 {
weight 1
HTTP_GET {
url {
path /index.html
status_code 200 #http://192.168.2.188/index.html的返回状态码
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}

基于genhash的检测

配置如下:

real_server 192.168.2.188 80 {
weight 1
HTTP_GET {
url {
path /index.html
digest bfaa334fdd71444e45eca3b7a1679a4a #http://192.168.2.188/index.html的digest值
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}

安装完keepalived包,系统中会多出一个命令genhash,通过该命令可以获取页面的hash串,如下是我更改某个页面前后的digest值:

[root@lvs-dr ~]# genhash -s 192.168.122.10 -p 80 -u /index.html
MD5SUM = 6df8d89daedcbb90e3f0c1d1f82cbcf6
[root@lvs-dr ~]# genhash -s 192.168.122.10 -p 80 -u /index.html
MD5SUM = e6368a07d59e3922d2f428b2acd27090

也可以参考官方给出的文档(包安装后,会有该文件生成)。

二、TCP_CHECK 检测

配置如下:

real_server 192.168.2.100 80 {
weight 100
TCP_CHECK {
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔
connect_port 80
}
}

这个在安装包附带的文档中也有示例 。而且其还可以配合HTTP_GET和SSL_GET一起用,如下:

real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
connect_port 444
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

以上配置也是安装包中的示例 。

三、SMTP检测

SMTP这个顾名思义,主要用于邮件系统SMTP协议的检测,具体如下示例:

SMTP_CHECK {
connect_timeout 10
retry 2
delay_before_retry 5
helo_name foo.bar.com
host {
connect_ip 172.16.1.11
}
host {
connect_ip 192.168.155.10
}
}

这里也可以指定连接的端口(默认肯定是25啊),监听的地址 ,更多也可以参看帮助文档 

四、MISC_CHECK检测

这个是通过调用外部配置名脚本进行检测确认后端主机是否正常的方法 。

MISC_CHECK {
misc_path |# 外部程序或者脚本路径
misc_timeout # 执行脚本的超时时间
misc_dynamic #如果设置了misc_dynamic,healthchecker程序的退出状态码会用来动态调整服务器的权重(weight).
#返回0:健康检查OK,权重不被修改
#返回1:健康检查失败,权重设为0
#返回2-255:健康检查OK,权重设置为:退出状态码-2,比如返回255,那么weight=255-2=253
}

对应的脚本后面是支持传参的,两个示例如下:

#不传参配置
real_server 192.168.200.6 1358 {
weight 1
MISC_CHECK {
misc_path /usr/local/bin/script.sh
}
}
#传参配置
real_server 192.168.200.6 1358 {
weight 1
MISC_CHECK {
misc_path "/usr/local/bin/script.sh arg1 arg2"
}
}

转载:keepalived健康检查方式


推荐阅读
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了如何通过命令行有效地终止所有 Node.js 进程实例,以解决因端口冲突或其他服务冲突导致的问题。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文档介绍了如何使用ESP32开发板在STA模式下实现与TCP服务器的通信,包括环境搭建、代码解析及实验步骤。 ... [详细]
author-avatar
据估计妇女嘎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有