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 {
     [email protected]
   }
   notification_email_from [email protected]
   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 {
     [email protected]
   }
   notification_email_from [email protected]
   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 {
     [email protected]
   }
   notification_email_from [email protected]
   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脚本
   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  127.0.0.1:80  check inter 3000 fall 2 rise 5

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 {
     [email protected]
   }
   notification_email_from [email protected]
   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脚本
   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  127.0.0.1:80  check inter 3000 fall 2 rise 5

3、测试效果:

将A主机的haproxy服务器停掉,此时VIP地址就会漂移到从服务器上。 

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

  如果想实现nginx的高可用检测,只需要将脚本改为killall  -0  nginx;

  然后在keepalived配置文件中调用此脚本即可。

  

原文地址:https://www.cnblogs.com/struggle-1216/p/12104355.html

时间: 2024-10-09 17:16:32

keepalived配合脚本对HAProxy、ping网关实现高可用检测的相关文章

用haproxy结合keepalived实现基于LNMP的负载均衡和高可用

今天我们讲haproxy结合keepalived实现LNMP的负载均衡和高可用,现在的公司大部分都基于haproxy实现负载均衡.下面以一个事例去给大家详细讲解如何去实现: 一.用haproxy结合keepalived实现基于lnmp的负载均衡和高可用服务,要求: (1)实现动静分离,图片和css,js都分离到专门的静态服务器上 (2)只允许172.17网段用户访问 (3)对于动态请求,要求实现基于cookie的会话保持 整体架构如下: 1.实验前需要关闭防火墙和selinux,以及同步时间.

Keepalived+Lvs_DR模式实现Web服务的HA高可用集群

Keepalived基于VRRP协议实现LVS服务的高可用集群,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性.Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍一下VRRP的原理.

Keepalived+MySQL主主互备模式实现高可用 &nbsp; &nbsp; &nbsp;

MySQL的高可用方案很多,这是一个配置简单而且实用的高可用解决方案. 实验架构图: 修改DB1配置文件增加以下几项: [mysqld] log-bin=mysql-bin relay-log=mysql-relay-bin server-id=1 replicate-wild-ignore-table=mysql.% replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.% 修改DB2

keepalived基于双主模型实现nginx的高可用(2)

Keepalived: keepalived是基于vrrp协议实现的一个高可用集群解决方案,可以利用keepalived来解决单点故障问题,使用keepalived实现的高可用集群方案中,一般有两台服务器,一个是MASTER(主服务器),另一个是BACKUP(备用服务器),这个集群中对外提供一个虚拟IP,MASTER服务器会定时发送特定信息给BACKUP服务器,当BACKUP服务器接收不到MASTER发送的消息时,BACKUP服务器会接管虚拟IP,继续提供服务. 当keepalived基于主备模

keepalived + haproxy 实现web的高可用负载均衡

一.Haproxy简介 人们熟知的软件负载均衡如LVS.HAProxy,各方面性能不亚于硬件负载均衡,HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层

利用keepalived和haproxy配置mysql的高可用负载均衡

实验系统:CentOS 6.6_x86_64(2.6.32-504.30.3.el6.x86_64) 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:keepalived-1.2.19 haproxy-1.5.14 mariadb-10.0.20 下载地址:http://pan.baidu.com/s/1bnnYiMr 实验拓扑: 一.安装mariadb 1.在两台数据库服务器安装: tar xf mariadb-10.0.20-linux-x86

Keepalived + Haproxy实现负载均衡高可用

基于LVS实现Keepalived的高可用见:http://amelie.blog.51cto.com/12850951/1979636 负载均衡为将用户并发请求转发到后台若干服务器,以分流方式均衡负载.均衡负载借用的软件,我们这里是Haproxy.而负责转发的服务器,我们称之为负载均衡服务器,也称反向代理服务器.这种情况下,如果负载均衡服务器挂掉,后台服务器再多也会导致服务无法访问.为提高负载均衡服务器的可用性,我们可以架设从服务器随时接管主负载均衡服务器的工作,而这种方式的实现,就要借助于相

Heartbeat+HAProxy+MySQL半复制高可用架构

目录 一 基础环境 二 架构设计 三 安装MySQL 3.1 安装MySQL 3.2 初始化MySQL 四 配置MySQL半同步 4.1 加载插件 4.2 配置半同步复制 4.3 master创建账号并授权 4.4 slave创建账号并授权 4.4 启动同步 五 安装HAProxy 5.1 下载及安装 5.2 创建HAProxy相关配置文件 六 配置HAProxy 6.1 配置master的HAProxy 6.2 配置slave的HAProxy 七 安装Heartbeat 八 配置Heartbe

HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署

HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3.10.0-327.el7.x86_64 集群架构: 前端:HAProxy 1.虚拟FQDN:www.simpletime.net 2.VIP:192.168.39.1:DIP:172.16.39.50 3.调度服务器:Varnish1.Varnish2 4.调度算法:URL_Hash_Consist