博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.Lvs+Keepalived健康检查
阅读量:7061 次
发布时间:2019-06-28

本文共 4913 字,大约阅读时间需要 16 分钟。

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/bashcase "$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 99      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

    

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/yaboya/p/9122611.html

你可能感兴趣的文章
layui 表格组件不能访问连续的属性的解决办法
查看>>
windows server 2003 原版 安装 php+mysql+apache 教程
查看>>
【BZOJ1930】【SHOI2003】吃豆豆
查看>>
Ubuntu下使用Vi是方向键变乱码 退格键不能使用的解决方法
查看>>
PostgreSQL 10.0 压缩版的 pgAdmin 不能用的问题
查看>>
动态最小生成树讲解
查看>>
find命令
查看>>
Windows和Mac下安装Beautiful Soup
查看>>
Mac 配置android环境变量
查看>>
SkyLine二次开发——解决在web页面启动时自动运行TerraExplorer的问题
查看>>
约瑟夫环(Josehpuse)的模拟
查看>>
CSS小技巧
查看>>
正则匹配 
查看>>
shell 读取文件
查看>>
给视图添加阴影
查看>>
数组2
查看>>
在django中,执行原始sql语句
查看>>
Docker的基本操作与示例
查看>>
配置eclipse使能打开当前文件所在目录
查看>>
Repeater内RadioButton.GroupName失效
查看>>