nginx主备高可用
nginx 主备高可用
-
keepalive浮动的ip地址需要与实际地址保持同一网段,或者相通。
-
安装keepalvied
# yum源安装 安装完成目录 /etc/keepalived yum -y install keepalived -
修改负载与检测配置 目录/etc/keepalived.conf/keepalived.conf
# 可直接复制替换所有内容
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
# nginx 监听脚本 如果nginx 挂掉 会停止 当前服务器的 keepalived 切换到另一台服务器
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"# 执行脚本所在的位置
interval 2 # 检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
weight 2
}
vrrp_instance VI_1 { # 定义一个实例
state MASTER # 主服务 必须要是 MASTER
interface eth0 # 指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。 改为自己本地IP 所用的 网口 # ip addr 来查看网口
virtual_router_id 101 # 虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。
priority 100 # 指定这个实例优先级 主备值差不要超过 10
# unicast_src_ip 192.168.1.17 # 配置单播的源地址
# unicast_peer {
# 192.168.1.18 # 配置单播的目标地址
# }
advert_int 1 # 心跳报文发送间隔
authentication {
auth_type PASS # 设置验证类型,主要有PASS和AH两种
auth_pass test123 # 设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信
}
virtual_ipaddress { # 设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
192.168.1.101 # 自定义的 虚拟ip VIP 也是测试时需要访问的ip 虚拟ip需要与实际ip处于同一网段
}
track_script {
chk_nginx
}
}
#以下是做lvs+keepalived集群所需要的负载配置 定义对外提供服务的LVS的VIP以及port 对于nginx做了负载的屏蔽掉下面代码即可
#virtual_server 192.168.1.101 80 {
# delay_loop 6 # 设置健康检查时间,单位是秒
# lb_algo wrr # 设置负载调度的算法
# lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
# nat_mask 255.255.255.0
# persistence_timeout 0
# protocol TCP
# real_server 192.168.1.17 443 { # 指定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.1.18 443 { # 指定real server2的IP地址
# weight 3 # 配置节点权值,数字越大权重越高
# TCP_CHECK {
# connect_timeout 10
# nb_get_retry 3
# delay_before_retry 3
# connect_port 80
# }
# }
#}
-
nginx 检测脚本 chk_nginx
#!/bin/bash A=`ps -C nginx –no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx #Nginx启动命令的位置 sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then ps -C keepalived --no-header | awk '{print $1}' | xargs kill fi fi

浙公网安备 33010602011771号