LVS and Keepalive introduce

 

refer to webpage  http://www.178linux.com/89580    https://blog.csdn.net/weixin_38642130/article/details/88635397   https://blog.csdn.net/l1028386804/article/details/108352126

一、 About LVS


   and this to keepalived configure file 

# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.200 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.80.102 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.80.103 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

 

二、 About keepalived

Keepalived Configure   vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived     #全局定义

  

global_defs {

notification_email {     #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱

ops@wangshibo.cn   #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务

tech@wangshibo.cn

}

  

notification_email_from ops@wangshibo.cn   #keepalived在发生诸如切换操作时需要发送email通知地址

smtp_server 127.0.0.1      #指定发送email的smtp服务器

smtp_connect_timeout 30    #设置连接smtp server的超时时间

router_id master-node     #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。

}

  

vrrp_script chk_http_port {      #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等

    script "/opt/chk_nginx.sh"   #这里通过脚本监测

    interval 2                   #脚本执行间隔,每2s检测一次

    weight -5                    #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5

    fall 2                    #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)

    rise 1                    #检测1次成功就算成功。但不修改优先级

}

  

vrrp_instance VI_1 {    #keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管

    state MASTER    #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。注意这里的state指定instance(Initial)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER

    interface em1          #指定HA监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的

    mcast_src_ip 103.110.98.14  # 发送多播数据包时的源IP地址,这里注意了,这里实际上就是在哪个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于heartbeat的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是interface指定的IP地址

    virtual_router_id 51         #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的

    priority 101                 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级

    advert_int 1                 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {             #设置验证类型和密码。主从必须一样

        auth_type PASS           #设置vrrp验证类型,主要有PASS和AH两种

        auth_pass 1111           #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信

    }

    virtual_ipaddress {          #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写

        103.110.98.20

    }

 

    track_script {                      #执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!

       chk_http_port                    #引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。

    }

}

 

编辑

[root@master-node ~]# vim /opt/chk_nginx.sh

 

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/local/nginx/sbin/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi

 

posted on 2020-09-18 15:26  developer1980  阅读(57)  评论(0)    收藏  举报

导航