Nginx学习高可用

Nginx 高可用

如果 Nginx 出现问题:

解决办法:

 

前期准备:

  • 两台 Nginx 服务器

  • 安装 Keepalived

  • 虚拟 ip

安装 Keepalived:

[root@192 usr]# yum install keepalived -y
[root@192 usr]# rpm -q -a keepalived
keepalived-1.3.5-16.el7.x86_64

修改配置文件:

[root@192 keepalived]# cd /etc/keepalived
[root@192 keepalived]# vi keepalived.conf

分别将如下配置文件复制粘贴,覆盖掉 keepalived.conf,虚拟 ip 为 192.168.25.50。

对应主机 ip 需要修改的是:

  • smtp_server 192.168.25.147(主)smtp_server 192.168.25.147(备)

  • state MASTER(主) state BACKUP(备
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.25.147
       smtp_connect_timeout 30
       router_id LVS_DEVEL # 访问的主机地址
    }
    
    vrrp_script chk_nginx {
      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 # 同一组需一致
        priority 90  # 访问优先级,主机值较大,备机较小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.25.50  # 虚拟ip
        }
    }

    启动代码如下:

    [root@192 sbin]# systemctl start keepalived.service

  •  关闭主机 147 的 Nginx 和 Keepalived,发现仍然可以访问。 

原理解析

 如下图,就是启动了一个 master,一个 worker,master 是管理员,worker是具体工作的进程。

 worker 如何工作?如下图:

worker 数应该和 CPU 数相等;一个 master 多个 worker 可以使用热部署,同时 worker 是独立的,一个挂了不会影响其他的。

原文地址:https://www.cnblogs.com/lqh969696/p/13704114.html