5.Lvs+Keepalived健康检查
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健康检查的更多相关文章
- LVS节点健康检查及管理脚本
在LVS负载均衡主节点上,模拟keepalived健康检查功能管理LVS节点,当节点挂掉从服务器池中剔除,好了再加到服务器池中来. 工具:yum install -y ipvsadm web03:10 ...
- keepalived健康检查方式【转】
keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...
- 9-lvs-lvs集群-及keepalived健康检查
注意: 配置前需要将上一篇的配置都清除掉 ifconfig eth1: down service ipvsadm restart nginx作为请求分发服务器时, 有健康检查机制, 挂了的服务器不会在 ...
- keepalived健康检查方式
keepalived对后端realserver的健康检查方式主要有以下几种: TCP_CHECK:工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那 ...
- keepalived健康检查及双主MySQL健康检查脚本
一.http检查 HTTP_GET:工作在第5层,向指定的URL执行http请求,将得到的结果用md5加密并与指定的md5值比较看是否匹配,不匹配则从服务器池中移除:此外还可以指定http返回码来判断 ...
- keepalive的工作原理和如何做到健康检查
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的 ...
- 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. ...
- lvs健康检查脚本第三版
如下是学习完马哥视频lvs后改写的健康检查脚本第三版.利用工作之余三四个小时时间才把整个逻辑搞清楚,有时候自己都有点蒙圈,尤其是在写到while循环的时候.总的来说非常感谢马哥的慷慨解囊!脚本原稿及思 ...
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...
随机推荐
- 【cf比赛记录】Codeforces Round #604 (Div. 2)
比赛传送门 感觉这场是最近以来做过的最顺手的一场,持续上分,开心w A了 前三题,然后第四题其实还有半个多小时,但怕身体撑不住,就先退了,其实第四题也很简单 自己认为的算法标签: A.暴力模拟.字 ...
- 解析node-cors模块
(function () { 'use strict'; var assign = require('object-assign'); var vary = require('vary'); var ...
- SCAN----Redis检索键值对
转载地址:http://redis.readthedocs.org/en/latest/key/scan.html SCAN SCAN cursor [MATCH pattern] [COUNT co ...
- 展示时测试Markdown渲染
\begin{equation} %公式 Speedup_{overall} = \frac{1}{{(1-Fraction_{partitioned})} +\frac{Fraction_{part ...
- PHP处理SOAP
1.获取functions try { $client = new SoapClient("http://www.fangbei.org/services/inquiryTracingAnd ...
- Struts2利用iText导出word文档(包含表格)以提供下载
J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...
- mapReduce 大数据离线分析
数据分析一般分为两种,一种是在线一种是离线 流程: 一般都是对于日志文件的采集和分析 场景实例(某个电商网站产生的用户访问日志(access.log)进行离线处理与分析的过程) 1.需求: 基于Map ...
- StringToKenizer和Scanner的区别
相同点: StringToKenizer类和Scanner类都可用于分解字符序列中的单词! 不同点: StringToKenizer类把分解出的全部字符串都存放到StringToKenizer对象的实 ...
- redis的setIfAbsent
setIfAbsent(K key, V value) 如果键不存在则新增,存在则不改变已经有的值.
- xunsearch搜索测试
1.导入测试数据 cd $prefix/sdk/php util/Indexer.php --source=csv --clean demo 然后出现 初始化数据源 ... csv WARNING: ...