码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx高可用

时间:2020-05-25 00:20:09      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:style   rac   lse   bash   遇见   com   sql   主机名   systemctl   

Nginx高可用

 

 

准备工作:

两条虚拟机。安装好Nginx

 

什么是高可用?

在生产环境上很多时候是以Nginx做反向代理对外提供服务,但是一天Nginx难免遇见故障,如:服务器宕机。当Nginx宕机那么所有对外提供的接口都将导致无法访问。

虽然我们无法保证服务器百分之百可用,但是也得想办法避免这种悲剧,今天我们使用keepalived来实现Nginx

的高可用。

双机热备方案

这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实就是指一台服务器在提供服务,另一台为某服务的备用状态,当一台服务器不可用另外一台就会顶替上去。

keepalived是什么?

       Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx,Haproxy、MySQL等)的高可用解决方案软件。

故障转移机制

Keepalived高可用服务之间的故障切换转移,是通过VRRP 来实现的。
Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。


实现过程:

安装keepalived

yum install keepalived -y

安装成功后,在 /etc下面有目录keepalived, 有文件keepalived.conf 

修改  /etc/keepalived/keepalived.conf 配置文件:

! Configuration File for keepalived

global_defs {
   router_id NodeA              #路由器标识,最好写主机名,用于标识
}

vrrp_script chk_nginx {
#配置检查方式,chk_nginx为自定义名称
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight 20                   #此值需要大于MASTER的priority减去BACKUP的priority
}

vrrp_instance VI_1 {
    state MASTER                #主节点为:MASTER,备节点为:BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
    #此为认证方式,MASTER和BACKUP统一
        auth_type PASS
        auth_pass 1314
    }
    track_script {
    #调用上面的检查脚本
        chk_nginx
    }
    virtual_ipaddress {
    #设定VIP地址
       192.168.17.50
    }
}

在/usr/local/src 添加检测脚本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

脚本授权:  chmod 775 nginx_check.sh  说明:脚本必须通过授权,不然没权限访问啊

把两台服务器上 nginx 和 keepalived 启动

启动 keepalived:systemctl start keepalived.service

5、最终测试 (1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50

 
 
 
 
 
 
 
 
 
 

 

Nginx高可用

标签:style   rac   lse   bash   遇见   com   sql   主机名   systemctl   

原文地址:https://www.cnblogs.com/dw3306/p/12953257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!