四、配置nginx高可用和原理分析

配置nginx高可用

首先准备两台机器

192.168.150.129

192.168.150.130

两台机器都安装nginx和keepalived

安装nginx使用前面说过的脚本一键安装

安装keepalived

yum -y install keepalived

#使用下列命令查看keepalived是否安装完成
rpm -qa keepalived

#使用这种方式安装后的keepalived配置文件路径在
/etc/keepalived

修改keepalived的配置文件 这里只贴出主服务器的配置文件,备份服务器的配置文件做相应修改

#全局配置
global_defs {
        notification_email {
                acassen@firewall.loc
                failover@firewall.loc
                sysadmin@firewall.loc
        }
        notification_email_from Alexander.Cassen@firewall.loc
        smtp_servr 192.168.150.129
        smtp_connect_timeout 30

        router_id  LVS_DEVEL    #访问到主机    备份服务器配置为LVS_DEVELBACk
}

#检查脚本配置
vrrp_script chk_http_port {
        #脚本路径
        script "/usr/local/src/nginx_check.sh"
        #间隔时间
        interval 2
        #权重
        weight 2
}

#虚拟ip配置
vrrp_instance  VI_1 {
        state MASTER  #备份服务器上将MASTER改为BACKUP
        interface ens33  #网卡
        virtual_router_id 51 #主、备机的这个值必须相同
        priority 100    #主、备机这个值取不同的优先级,主机值大于备份机值
        advert_int 1    #心跳检查
        #权限校验方式
        authentication {
                auth_type PASS
                auth_pass 1111
        }
        track_script {
                chk_http_port  #执行nginx监控脚本
        }
        virtual_ipaddress {
                192.168.150.50  #VRRP 虚拟地址
        }
}

nginx检查文件

#!/bin/bash
#查看是否有nginx进程
A=`ps -C nginx --no-header | wc -l`
if [ "${A}" = "0" ];then
		#尝试启动nginx进程
        /usr/local/webserver/nginx/sbin/nginx
        sleep 2
        if [ "${A}" = "0" ];then
        		#如果尝试启动nginx失败,则结束keepalivd进程 让虚拟ip切换到备份服务器上
                systemctl stop keepalived.service
        fi
fi

检查文件需要设置访问权限755

临时关闭selinux

setenforce 0    #这个需要设置 不然keepalived没有权限启动nginx

启动两台机器上的nginx和keepalived

在浏览器输入 http://192.168.150.50/ 可直接访问到主服务器的nginx

这时查看主服务器的ip配置

在这里插入图片描述

当主服务器正常运行时,备份服务器上是没有虚拟ip的。

nginx原理分析

  1. nginx是多进程的工作方式,有两种进程

    • master进程 管理员进程
    • worker进程 工作进程

    在这里插入图片描述

    在这里插入图片描述

    ​ 只有一个master进程,可以有多个worker进程。

  2. worker进程的工作方式

    在这里插入图片描述

    不是采用master轮询worker的方式,而是多个worker争抢的方式。

    客户端发送一个请求过来,被master进程接收到,master通知所以worker进程来争抢。

  3. 一个master进程和多个worker进程的好处

    1. nginx的热部署功能 nginx -s reload 的实现。当加载新的配置文件时,可以在不中断任务的情况下,让空闲worker先加载新配置文件,正在工作的worker在处理完任务后再加载新的配置文件。
    2. 进程独立,不需要加锁,每个worker进程互不影响。一个worker退出,其他worker还可以继续工作。
  4. 设置多少个worker合适

    一般worker数量设置为cpu的核心数比较合适。设置过少,cpu效率发挥不出来;设置过多,cpu会频繁发生上下文切换,影响效率。

    worker_processes  1;
    
  5. 连接数的说明 worker_connections

    events {
        worker_connections  1024;
    }
    
    
    1. 一个连接占多少连接数

      如果是请求的静态资源,则占两个连接数

      如果是请求的动态资料,比如最终是请求的tomcat,则占四个连接数

    2. nginx配置为一个master,四个worker,最大并发请求数是多少

      这个问题还是要分静态资源请求和动态资源请求

      如果是静态资源请求,则 最大并发数=worker_processes*worker_connections/2

      如果是动态资源请求,则 最大并发数=worker_processes*worker_connections/4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值