调用脚本参数含义

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网关实现高可用检测的更多相关文章

  1. Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用

    前言 之前咱们通过 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化 和 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案 这两篇文章了解了Nginx对高并发应用 ...

  2. keepalived安装及组合nginx配置负载实现高可用

    目录 1. Keepalived安装配置 1.1 官网下载tar包 1.2 上传到指定目录安装 1.3 配置文件 1.4 配置nginx检测脚本文件 1.5 keepalived 启动/重启/停止/查 ...

  3. keepalived+Nginx实现主备保障Nginx的高可用。

    1.什么是keepalived? Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障. Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工 ...

  4. 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡

    环境准备: 192.168.193.80  node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...

  5. keepalive笔记之三:keepalived通知脚本进阶示例

    下面的脚本可以接受选项,其中: -s, --service SERVICE,...:指定服务脚本名称,当状态切换时可自动启动.重启或关闭此服务: -a, --address VIP: 指定相关虚拟路由 ...

  6. 【Keepalived+MySQL】MySQL双主互备+高可用

    一.基本信息说明 [DB1] IP: 192.168.102.144 hostname: LVS-Real1 [DB2] IP: 192.168.102.145 hostname: LVS-Real2 ...

  7. Keepalived & LVS: 实现web的负载均衡和高可用

    目录 1. 环境介绍2. LVS DR模型中Realserver上的准备3. ha上的准备4. 配置keepalived5. 测试Realserver的切换6. failback页面测试7. keep ...

  8. Linux实战教学笔记31:Keepalived高可用集群应用实践

    1.1 Keepalived高可用软件 1.1.1 Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入 ...

  9. keepalived高可用集群。

    keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...

随机推荐

  1. OO第四单元——基于UML的UML解析器总结&OO课程总结

    OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...

  2. 深入了解springcloud gateway 的限流重试机制

    前言 前面给大家介绍了Spring Cloud Gateway的入门教程,这篇给大家探讨下Spring Cloud Gateway的一些其他功能. Spring Cloud Gateway中的重试 我 ...

  3. 几十行代码实现ASP.NET Core自动依赖注入

    在开发.NET Core web服务的时候,我们习惯使用自带的依赖注入容器来进行注入. 于是就会经常进行一个很频繁的的重复动作:定义一个接口->写实现类->注入 有时候会忘了写Add这一步 ...

  4. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08 欢迎加QQ群:1026880196   进行交流学习 文件配置 #controller ...

  5. 为Github的README.md生成目录的小工具

    1 概述 因为Github的README.md文件[TOC]不生效,因此封装了一个别人已封装好的JAR包供大家使用. 2 使用方法 用Java做的,只需要JDK11以上的环境: java -jar t ...

  6. 简单的了解下Java设计模式:迭代器模式(转载)

    迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. Java 开发过程中遍历是常用的.如下边程序: for(int i =0 ; ...

  7. struct 模块

    1. Struct 简介 2. Struct 代码示例 2.1 struct.pack 2.2 struct.unpack 2.3 struct.calcsize 1. Struct 简介 当 pyt ...

  8. 使用yamllint 检查yaml语法

    安装node 之后npm install -g yaml-lint 使用方法 yamllint confluence.yaml

  9. 自动AC机qwq(大雾)以及trie图fail图的一些结论

    1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string&g ...

  10. 1.7.1- HTML表格table

    存在即是合理的,表格的是一种常用的标签,不是用来布局,常见是用处理 适合用表格table的地方: 创建表格: