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. nlp语义理解的一点儿看法

    nlp领域里,语义理解仍然是难题! 给你一篇文章或者一个句子,人们在理解这些句子时,头脑中会进行上下文的搜索和知识联想.通常情况下,人在理解语义时头脑中会搜寻与之相关的知识.知识图谱的创始人人为,构成 ...

  2. HTML5 - 开发一个自己的websocket服务器

    应用:node.js 主要步骤: 创建文件夹 创建app.js(server入口,app为自定义命名) npm init -y (快速创建一个package.json文件) 依赖包安装:nodejs- ...

  3. Webdriver get(url)加载时间太长

    运行Selenium脚本时,发现有时候由于网络或性能问题,加载网页时间太长,无法继续执行后续操作,但是实际上元素都已经加载出来了. 解决 # 设置页面加载超时时间 d.set_page_load_ti ...

  4. prometheus自定义监控指标——入门

    grafana结合prometheus提供了大量的模板,虽然这些模板几乎监控到了常见的监控指标,但是有些特殊的指标还是没能提供(也可能是我没找到指标名称).受zabbix的影响,自然而然想到了自定义监 ...

  5. shell脚本监控k8s集群job状态,若出现error通过触发阿里云的进程监控报警

    #!/bin/bash while [ 1 ] do job_error_no=`kubectl get pod -n weifeng |grep -i "job"|grep -c ...

  6. nginx缓存静态资源,只需几个配置提升10倍页面加载速度

    nginx缓存静态资源,只需几个配置提升10倍页面加载速度 首先我们看图说话 这是在没有缓存的情况下,这个页面发送了很多静态资源的请求:   1.png 可以看到,静态资源占用了整个页面加载用时的90 ...

  7. java 获取类路径

    package com.jason.test; import java.io.File; import java.io.IOException; import java.net.URL; public ...

  8. Pycharm 个人认为舒服漂亮又好用的主题风格

    又开始和code打交道了系列…… 实验室换了新电脑,故而,重新安装了各种软件,乃至重新配置  Pycharm主题,找了好久,终于找到,想着应该mark一下,以备下次需要. 个人认为 Monokai 这 ...

  9. day57——视图、模板渲染

    day57 视图 网页:https://www.cnblogs.com/clschao/articles/10409764.html django官方文档:https://docs.djangopro ...

  10. FusionInsight大数据开发---sorl应用开发

    sorl应用开发 要求: 了解Solr应用开发适用场景 熟悉Solr应用开发流程 熟悉并使用Solr常用API 理解Collection设计基本原则 应用开发实践 Solr简介 Solr是一个高性能, ...