HAProxy之三----keepalived配合脚本对HAProxy、ping网关实现高可用检测
调用脚本参数含义
vrrp_script<SCRIPT_NAME> { #定义一个检测脚本,在global_defs之外配置
script <STRING>|<QUOTED-STRING> # shell命令或脚本路径
interval <INTEGER> # 间隔时间,单位为秒,默认1秒
timeout <INTEGER> # 超时时间
weight <INTEGER:-254..254> # 权重,监测失败后会执行权重+操作
fall <INTEGER> #脚本几次失败转换为失败
rise <INTEGER> # 脚本连续检测成果后,把服务器从失败标记为成功的次数
user USERNAME [GROUPNAME] # 执行监测的用户或组
init_fail # 设置默认标记为失败状态,监测成功之后再转换为成功状态
}
实战一:实现ping网关地址高可用检测
1、在主机A配置keepalived调用ping脚本。
书写一个脚本,ping主机的网关IP地址,如果ping不通时,启动以下keepalived配置文件中内容。
vim /etc/keepalived/ping.sh
#!/bin/bash
ping -c 192.168.37.2 &> /dev/null
if [ $? -eq 0 ];then
exit 0
else
exit 2
fi
加上执行权限:chmod +x ping.sh
配置keepalived文件,当以上ping脚本不通时,则执行以下配置文件,此时权重就会减50,就会降低优先级,此时VIP地址就会漂移到从服务器上。
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost.com
}
notification_email_from root@localhost.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ka2
vrrp_skip_check_adv_addr
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script linux_ping { 调用脚本时起名
script /etc/keepalived/ping.sh 调用脚本路径
interval 2 时间间隔2秒
weight -50 权重减50
fall 3 连续失败3次转为失败
rise 5 连续检测成功5次后,标记为成功
timeout 2 时间超时2秒
}
vrrp_instance VIP_1 {
state MASTER
interface ens33
virtual_router_id 50
priority 100
unicast_src_ip 192.168.37.7
unicast_peer {
192.168.37.17
}
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.37.100 dev ens33 label ens33:1
}
track_script {
linux_ping 检查脚本,将上面命名的名称进行调用
}
}
2、在B主机配置keepalived
书写一个脚本,ping主机的网关IP地址,如果ping不通时,启动以下keepalived配置文件中内容。
vim /etc/keepalived/ping.sh
#!/bin/bash
ping -c 192.168.37.2 &> /dev/null
if [ $? -eq 0 ];then
exit 0
else
exit 2
fi
加上执行权限:chmod +x ping.sh
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ka1
vrrp_skip_check_adv_addr
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script linux_ping {
script /etc/keepalived/ping.sh 也调用ping脚本,当从服务器Ping网关不通时也将权重减50,此时优先级变低,当主服务器恢复时,VIP地址就又会漂移到主服务器上。
interval 2
weight -50
fall 3
rise 5
timeout 2
}
vrrp_instance VIP_1 {
state BACKUP
interface ens33
virtual_router_id 50
priority 80
unicast_src_ip 192.168.37.17
unicast_peer {
192.168.37.7
}
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.37.100 dev ens33 label ens33:1
}
track_script {
linux_ping
}
}
3、测试效果:
将ping.sh脚本的网关地址修改为不存在的IP地址.
vim /etc/keepalived/ping.sh
#!/bin/bash
#ping -c 192.168.37.2 &> /dev/null
ping -c 192.168.77.2 &> /dev/null
if [ $? -eq 0 ];then
exit 0
else
exit 2
fi
重启主从keepalived服务:systemctl reload keepalived
此时可以看到VIP地址已经漂移到从服务器上。

当主服务器的网关IP地址修改正确之后,VIP地址就又会飘回到主服务器上。
实战二:实现HAProxy高可用检测
1、在A主机配置keepalived,并写一个检测haproxy脚本
vim /etc/keepalived/chk_haproxy.sh
#!/bin/bash
#
#********************************************************************
#Author: liu
#QQ: 29308620
#Date: 2019-12-26
#FileName: /etc/keepalived/chk_haproxy.sh
#URL: http://www.struggle.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
killall -0 haproxy
修改keepalived配置文件,调用检测haproxy脚本。
global_defs {
notification_email {
root@localhost.com
}
notification_email_from root@localhost.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ka2
vrrp_skip_check_adv_addr
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script /etc/keepalived/chk_haproxy.sh # 调用chk_haproxy.sh脚本,发现haproxy宕机后就降级
interval 2
weight -50
fall 3
rise 5
timeout 2
}
vrrp_instance VIP_1 {
state MASTER
interface ens33
virtual_router_id 50
priority 100
unicast_src_ip 192.168.37.7
unicast_peer {
192.168.37.17
}
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.37.100 dev ens33 label ens33:1
}
track_script {
chk_haproxy 调用上面调用脚本的名称
}
}
配置A主机的haproxy文件
global
maxconn 100000
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1
stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2
user haproxy
group haproxy
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /run/haproxy.pid
log 127.0.0.1 local3 info defaults
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms listen stats
bind :9527
stats enable
stats hide-version
stats uri /haproxy-status
stats realm HAPorxy\Stats\Page
stats auth haadmin:123456
stats auth admin:123456
stats refresh 30s
stats admin if TRUE
listen web_port
bind 0.0.0.0:80
mode http
log global
server web1 192.168.7.102:80 check inter 3000 fall 2 rise 5 # 用户访问VIP地址之后,转发到后端服务器上
2、在B主机配置keepalived,并写一个检测haproxy脚本
vim /etc/keepalived/chk_haproxy.sh
#!/bin/bash
#
#********************************************************************
#Author: liu
#QQ: 29308620
#Date: 2019-12-26
#FileName: /etc/keepalived/chk_haproxy.sh
#URL: http://www.struggle.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
killall -0 haproxy 对haproxy发信号,确定haproxy的状态信息。
修改keepalived配置文件,调用检测haproxy脚本。
global_defs {
notification_email {
root@localhost.com
}
notification_email_from root@localhost.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ka2
vrrp_skip_check_adv_addr
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script /etc/keepalived/chk_haproxy.sh # 调用chk_haproxy.sh脚本,发现haproxy宕机之后就降级
interval 2
weight -50
fall 3
rise 5
timeout 2
}
vrrp_instance VIP_1 {
state BACKUP
interface ens33
virtual_router_id 50
priority 100
unicast_src_ip 192.168.37.17
unicast_peer {
192.168.37.7
}
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.37.100 dev ens33 label ens33:1
}
track_script {
chk_haproxy 调用上面调用脚本的名称
}
}
配置B主机的haproxy文件
global
maxconn 100000
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1
stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2
user haproxy
group haproxy
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /run/haproxy.pid
log 127.0.0.1 local3 info defaults
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client 300000ms
timeout server 300000ms listen stats
bind :9527
stats enable
stats hide-version
stats uri /haproxy-status
stats realm HAPorxy\Stats\Page
stats auth haadmin:123456
stats auth admin:123456
stats refresh 30s
stats admin if TRUE
listen web_port
bind 0.0.0.0:80
mode http
log global
server web1 192.168.7.102:80 check inter 3000 fall 2 rise 5 # 用户访问VIP地址之后,转发到后端服务器上
3、测试效果:
将A主机的haproxy服务器停掉,此时VIP地址就会漂移到从服务器上。

当启动haproxy服务器时,VIP地址就又会飘回主服务器上

如果想实现nginx的高可用检测,只需要将脚本改为:killall -0 nginx;
然后在keepalived配置文件添加一个调用此脚本即可,详细的nginx检测状态,请看:https://www.cnblogs.com/struggle-1216/p/12055924.html
HAProxy之三----keepalived配合脚本对HAProxy、ping网关实现高可用检测的更多相关文章
- Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用
前言 之前咱们通过 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化 和 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案 这两篇文章了解了Nginx对高并发应用 ...
- keepalived安装及组合nginx配置负载实现高可用
目录 1. Keepalived安装配置 1.1 官网下载tar包 1.2 上传到指定目录安装 1.3 配置文件 1.4 配置nginx检测脚本文件 1.5 keepalived 启动/重启/停止/查 ...
- keepalived+Nginx实现主备保障Nginx的高可用。
1.什么是keepalived? Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障. Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工 ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
- keepalive笔记之三:keepalived通知脚本进阶示例
下面的脚本可以接受选项,其中: -s, --service SERVICE,...:指定服务脚本名称,当状态切换时可自动启动.重启或关闭此服务: -a, --address VIP: 指定相关虚拟路由 ...
- 【Keepalived+MySQL】MySQL双主互备+高可用
一.基本信息说明 [DB1] IP: 192.168.102.144 hostname: LVS-Real1 [DB2] IP: 192.168.102.145 hostname: LVS-Real2 ...
- Keepalived & LVS: 实现web的负载均衡和高可用
目录 1. 环境介绍2. LVS DR模型中Realserver上的准备3. ha上的准备4. 配置keepalived5. 测试Realserver的切换6. failback页面测试7. keep ...
- Linux实战教学笔记31:Keepalived高可用集群应用实践
1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...
- keepalived高可用集群。
keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...
随机推荐
- angular+ionic -- 启动命令
初始angular+ionic项目,启动需ionic的启动命令: ionic serve
- 翻译:《实用的Python编程》08_01_Testing
目录 | 上一节 (7.5 装饰方法 | 下一节 (8.2 日志) 8.1 测试 多测试,少调试(Testing Rocks, Debugging Sucks) Python 的动态性质使得测试对大多 ...
- 集合Set添加多个元素
方一 Integer[] x=new Integer[]{4,6,9,10}; Set<Integer> set = new HashSet<>() ; Collections ...
- ansible:playbook详解
Blog:博客园 个人 概述 playbook是由一个或者多个play组成的列表. 主要功能是将预定义的一组主机装扮成事先通过ansible中的task定义好的角色.task实际是调用ansible的 ...
- 0ctf_2017_babyheap
0ctf_2017_babyheap 首先检查一下保护 IDA 分析好的代码如下 首先申请了一块内存地址用来存放结构体数组,地址随机. 堆题常见的几个功能.我们来看看add 这里申请内存用的是call ...
- HMS Toolkit自动化环境配置,助您高效集成HMS Core
HMS Toolkit是一个IDE插件,提供包括应用创建.编码和转换.调测和测试.提交上架等多个端到端开发工具,借助HMS Toolkit可提升3倍以上集成开发效率,可以帮助开发者以更高的开发效率.更 ...
- 这种ERP系统核查工作实际是在做无用功
前段时间跟朋友聊起他们公司持续了好几年的ERP核查工作,此时他正在一家分公司做核查.ERP核查工作我是知道的,一个季度一次,每个模块出一个人去子公司巡回巡查,主要核查ERP系统的使用情况. 核查工作主 ...
- 分页系列之一:SQL Server 分页存储过程
以下为最基本的代码结构,SQL Server 2012 开始支持 CREATE PROCEDURE procXXX @Page int, --当前页码,从1开始 @PageSize int --每页记 ...
- 幻读:听说有人认为我是被MVCC干掉的
@ 目录 前言 系列文章 一.我是谁? 二.为什么有人会认为我是被MVCC干掉的 三.我真的是被MVCC解决的? 四.再聊当前读.快照读 当前读 快照读 五.告诉你们吧!当前读的情况下我是被next- ...
- hdu4126(MST + 树形dp
题意: 这个题目和hdu4756差不多,是给你一个图,然后是q次改变边的权值,权值只增不减,最后问你每次改变之后的最小树的平均值是多少. 思路:(prim+树形dp) 先跑一边 ...