1. Nginx+keepalived对后端服务器心跳检查(需要自定义脚本)

原理:Keepalived并不跟nginx耦合,它俩完全不是一家人但是keepalived提供一个机制:让用户自定义一个shell脚本去检测用户自己的程序,返回状态给keepalived就可以了

#MASTER节点

global_defs {
} vrrp_script chk_health {
script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"
interval 1 #每隔1秒执行上述的脚本,去检查用户的程序ngnix
weight -2
} vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 1
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_health
} virtual_ipaddress {
10.0.0.10/24
} notify_master "/usr/local/keepalived/sbin/notify.sh master"
notify_backup "/usr/local/keepalived/sbin/notify.sh backup"
notify_fault "/usr/local/keepalived/sbin/notify.sh fault"
}

#添加切换通知脚本:vi /usr/local/keepalived/sbin/notify.sh

#!/bin/bash

case "$1" in
master)
/usr/local/nginx/sbin/nginx
exit 0
;;
backup)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
exit 0
;;
fault)
/usr/local/nginx/sbin/nginx -s stop
exit 0
;;
*)
echo 'Usage: notify.sh {master|backup|fault}'
exit 1
;;
esac

#添加执行权限:chmod +x /usr/local/keepalived/sbin/notify.sh

global_defs {
} vrrp_script chk_health {
script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"
interval 1
weight -2
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_health
} virtual_ipaddress {
10.0.0.10/24
} notify_master "/usr/local/keepalived/sbin/notify.sh master"
notify_backup "/usr/local/keepalived/sbin/notify.sh backup"
notify_fault "/usr/local/keepalived/sbin/notify.sh fault"
}

#在第二台机器上添加notify.sh脚本

#分别在两台机器上启动keepalived

service keepalived start

chkconfig keepalived on

2. Lvs+keepalived对后端服务器心跳检查(不需要自定义脚本)

  1. 在两台(192.168.232.201和192.168.232.205) Lvs转发服务器上安装ipvsadm和Keepalived:yum -y install ipvsadm/keepalived

   2. 修改配置文件:vi  /etc/keepalived/keepalived.conf

    主机:Lvs+keepalived(MASTER)

global_defs {
#指定keepalived在发生切换时需要发送email到的对象
notification_email {
root@localhost #邮件接收者
}
notification_email_from lvs@localhost #邮件发送者
smtp_server 127.0.0.1 #邮件服务器地址,如未安装,使用本地
smtp_connect_timeout 30
router_id LVS_DEVEL
} #IP漂移协议
vrrp_instance VI_1 {
state MASTER #指定A节点为主节点 备分机上设置为BACKUP即可
interface eth0 #绑定IP漂移的网络接口,在该接口上绑定VIP
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.232.206/24 dev eth0 label eth0:1 #绑定VIP
}
} #只接收80端口过来的请求
virtual_server 192.168.232.206 80 {
delay_loop 6
lb_algo wlc #轮循
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP #RS服务器1
real_server 192.168.232.200 80 {
weight 1
   #健康检查
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
} #RS服务器2
real_server 192.168.232.204 80 {
weight 1
   #健康检查
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

    备机:Lvs+keepalived(BACKUP)

global_defs {
#指定keepalived在发生切换时需要发送email到的对象
notification_email {
root@localhost #邮件接收者
}
notification_email_from lvs@localhost #邮件发送者
smtp_server 127.0.0.1 #邮件服务器地址,如未安装,使用本地
smtp_connect_timeout 30
router_id LVS_DEVEL
} #IP漂移协议
vrrp_instance VI_1 {
state BACKUP #指定A节点为主节点 备分机上设置为BACKUP即可
interface eth0 #绑定IP漂移的网络接口,在该接口上绑定VIP
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样
priority
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.232.206/24 dev eth0 label eth0:1 #绑定VIP
}
} #只接收80端口过来的请求
virtual_server 192.168.232.206 80 {
delay_loop 6
lb_algo wlc #轮循
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP #RS服务器1
real_server 192.168.232.200 80 {
weight 1
   #健康检查
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
} #RS服务器2
real_server 192.168.232.204 80 {
weight 1
   #健康检查
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

  3. 启动两台Lvs转发服务器的Keepalived服务:service keepalived start

  4.通过ifconfig命令查看主从Lvs转发服务器的网络接口:

    

    

  5.查看地址和端口号:ipvsadm -Ln

    

  6.使用浏览器进行访问:http://192.168.232.206:80/

    

   7.主机挂掉:init 6

    

  

5.Lvs+Keepalived健康检查的更多相关文章

  1. LVS节点健康检查及管理脚本

    在LVS负载均衡主节点上,模拟keepalived健康检查功能管理LVS节点,当节点挂掉从服务器池中剔除,好了再加到服务器池中来. 工具:yum install -y ipvsadm web03:10 ...

  2. keepalived健康检查方式【转】

    keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...

  3. 9-lvs-lvs集群-及keepalived健康检查

    注意: 配置前需要将上一篇的配置都清除掉 ifconfig eth1: down service ipvsadm restart nginx作为请求分发服务器时, 有健康检查机制, 挂了的服务器不会在 ...

  4. keepalived健康检查方式

    keepalived对后端realserver的健康检查方式主要有以下几种: TCP_CHECK:工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那 ...

  5. keepalived健康检查及双主MySQL健康检查脚本

    一.http检查 HTTP_GET:工作在第5层,向指定的URL执行http请求,将得到的结果用md5加密并与指定的md5值比较看是否匹配,不匹配则从服务器池中移除:此外还可以指定http返回码来判断 ...

  6. keepalive的工作原理和如何做到健康检查

    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的 ...

  7. CentOS7.4 Keepalived+LVS 负载均衡 后台节点健康检查

    主机信息 VIP 10.10.10.55 LVS01 10.10.10.59 Web01 10.10.10.60 Web02 10.10.10.61 一.apache简单配置 1.(10.10.10. ...

  8. lvs健康检查脚本第三版

    如下是学习完马哥视频lvs后改写的健康检查脚本第三版.利用工作之余三四个小时时间才把整个逻辑搞清楚,有时候自己都有点蒙圈,尤其是在写到while循环的时候.总的来说非常感谢马哥的慷慨解囊!脚本原稿及思 ...

  9. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

随机推荐

  1. 【Gamma阶段】第六次Scrum Meeting

    冰多多团队-Gamma阶段第六次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 编辑器风格切换(添加夜间模式) UI界面手势切换 牛雅哲 语音输入shell应用:基于pytorch ...

  2. 关于MySQL 通用查询日志和慢查询日志分析(转)

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查 ...

  3. Python 3.X 练习集100题 03

    一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? import math for i in range(10000): n1 = math.sqrt( ...

  4. ng打包

    1.在项目完成后进行项目打包 2.输入ng build后会出现dist打包文件 3.在打包文件中有一个文件index.html文件,改变html中的一个参数 <base href="/ ...

  5. AKKA Actor创建

    Actor 类定义 Actor 类需要继承AbstractActor类 实现createReceive方法,绑定各类actor收到不同类型消息对应处理不同业务逻辑 默认提供了ReceiveBuilde ...

  6. 蚂蚁花呗5面面试真题,你敢来挑战一下吗?(Java岗)

    蚂蚁花呗一面(一个小时): JDK 中有哪几个线程池?顺带把线程池讲了个遍 Java容器有哪些?哪些是同步容器,哪些是并发容器? ArrayList和LinkedList的插入和访问的时间复杂度? j ...

  7. [转帖]spring、springMvc、springBoot和springCloud的联系与区别

    spring.springMvc.springBoot和springCloud的联系与区别 -- :: 尘光掠影 阅读数 文章标签: springspringmvcspringbootspringCl ...

  8. 【WPF】2、美化控件

    控件有默认样式,但是有时候默认样式并不够用,就需要美化. 1.常用的方法是美术出图,直接贴图进去,效果又好又简单(对程序来说). 用图片有三种方式:设置控件背景图片.设置控件内容为图片和直接使用图片做 ...

  9. C# vb .net图像合成-合成自定义路径

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  10. 《C++ Primer》学习总结;兼论如何使用'书'这种帮助性资料

    6.25~ 6.27,用了3天翻了一遍<C++ Primer>. ▶书的 固有坏处 一句话: 代码比 文字描述 好看多了.————> 直接看习题部分/ 看demo就行了 看文字在描述 ...