• Nginx高可用


    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              #路由器标识,最好写主机名,用于标识或IP
    }
    
    vrrp_script chk_nginx {
    #配置检查方式,chk_nginx为自定义名称
        script "/usr/local/src/nginx_check.sh"   # 检查的脚本位置
        interval 2   # 监测的时间间隔
        weight 20                   #检测权重,此值需要大于MASTER的priority减去BACKUP的priority
    }
    
    vrrp_instance VI_1 {
        state MASTER                #主节点为:MASTER,备节点为:BACKUP
        interface eth0  # 网卡名字 可以通过 ifconfig查看当前主机的网卡
        virtual_router_id 51   # 主备机的virtual_router_id 必须相同
        priority 100  # 主备机取不同的优先级,主机较大(100),备份机小(90)
        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

     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    怎么将java项目打包成双击就可以运行的jar包---fatjar
    hdu 2629 Identity Card (字符串解析模拟题)
    求最远点对,输出距离
    poj 2299 求逆序数
    第九周作业 实现图片压缩
    第八周作业 struts,spring,jpa整合简单测试
    第七周作业 POI操作Excel,world文档
    第七周作业 关于xml问题
    第六周作业 略谈jsp
    第六作业 持久层框架mybatis小记
  • 原文地址:https://www.cnblogs.com/dw3306/p/12953257.html
Copyright © 2020-2023  润新知