实现案例:实现主存服务器自动监听,切换(有两台服务 nginx负载这两台服务 nginx宕机的处理)

思维导图如下:

 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 {

 

[email protected]

 

[email protected]

 

[email protected]

 

}

 

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

启动 keepalivedsystemctl start keepalived.service

浏览器中测试

 

 

 

================================================================================

 

 

nginx原理

nginx高级运用和nginx实现原理

相关文章: