实现案例:实现主存服务器自动监听,切换(有两台服务 nginx负载这两台服务 nginx宕机的处理)
思维导图如下:
对上图大概解释:客户端访问地址是不能变的 所以我们需要提供一个虚拟ip 这个IP指向两台nginx的服务器 这个虚拟ip由keepalived设置 keepalived还做监听主nginx是否存活,否就切换到存服务器 两台nginx负载两台服务
上篇文章讲到如何做负载 这里就不再赘述
上图nginx到tomcat这块就不再说 重点说一下keepalived
安装keepalived
Linux yum install keepalived –y或者yum install keepalived 二者的区别就是前者自动选择yes或者需要输入y
安装成功之后修改keepalived.conf
|
|
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh"
interval 2 #(检测脚本执行的间隔) |
|
|
|
|
weight 2 |
|
|
|
|
} |
|
|
|
|
vrrp_instance VI_1 { |
|
|
|
|
state BACKUP |
# 备份服务器上将 MASTER 改为 BACKUP |
|
|
|
interface ens33 |
//网卡 |
|
|
|
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 |
|
|
|
|
priority 90 |
# 主、备机取不同的优先级,主机值较大,备份机值较小 |
|
|
|
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
} |
|
|
检测文件 也是配置文件中的script "/usr/local/src/nginx_check.sh"这个 nginx_check.sh内容大概如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
把两台服务器上 nginx 和 keepalived 启动
启动 nginx:./nginx
启动 keepalived:systemctl start keepalived.service
浏览器中测试
================================================================================
nginx原理