7. Nginx实现高可用配置

简介

假设主服务器挂掉之后,会自动切换到备份服务器,而备份服务器也可以将请求转发到不同的tomcat中去,这就是高可用的效果。

image-20201125111758893

主备服务器中需要用到一个软件,名字叫做keepalived,它相当于是一个路由,它里面会通过一个脚本来检测Nginx是否还活着,如果还活着,则进行访问,否则将切换到另一台备份服务器,在这个过程中,它需要对外展示一个虚拟IP,这个IP实际上是不存在的,但是我们需要通过这个IP来进行访问,首先主服务器要绑定这个IP,假设主服务器挂掉之后,keepalived会将虚拟IP绑定到备份服务器,以此实现高可用的效果。

具体实现

  1. 准备工作

    (1) 需要两台服务器

    (2) 在两台服务器上安装Nginx

    (3) 在两台服务器上安装Keepalived

     # 因为我的电脑装了MySQL,所以需要下载MySQL依赖,这个看个人情况,可以直接尝试安装keepalived,安装不成功,会有提示
     wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
     
     # 安装依赖
     rpm -ivh mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
     
     # 安装keepalived
     yum install keepalived -y
     
     # 验证是否安装成功
     rpm -q -a keepalived
    
  2. 进行主从配置

    修改两台服务器上的/etc/keepalived/keepalived.conf配置文件

    global_defs {
        notification_email {
            acassen@firewall.loc
            failover@firewall.loc
            sysadmin@firewall.loc
        }
        notification_email_from Alexandre.Cassen@firewall.loc
        smtp_server 192.168.2.190	# 备机更改为自己的IP
        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 MASTER // 备份服务器上MASTER改为BACKUP
        interface ens33 //网卡
        virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
        priority 100 # 主、备机取不同的优先级,主机值较大100,备份机值较小90
        advert_int 1
    
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.2.30 // VRRP H 虚拟地址
        }
    }
    
  3. /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
    
  4. 启动两台服务器的Nginx和Keepalived

    # 启动Nginx
    ./nginx
    
    # 启动Keepalived
    systemctl start keepalived.service
    
  5. 测试

    (1)输入虚拟IP访问

    image-20201130055620116

    image-20201130052603851

    (2)停止主服务器的Nginx和Keepalived,再次访问虚拟IP

    # 停止Nginx
    ./nginx -s stop
    
    # 停止Keepalived
    systemctl stop keepalived.service
    

    image-20201130055632622

    image-20201130052603851

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页