Nginx 原理

98 阅读2分钟

高可用

image.png

需要两台Nginx

需要keepalived (yum install keepalived -y)

检查是否安装成功 (rpm -q -a keepalived)

需要虚拟ip

高可用配置(主从)

1.修改/etc/keepalived/keepalived.conf 配置

image.png

image.png

router_id  LVS_DECEL  #访问主机

vi /etc/hosts

weight 2  #权重


1648197765(1).png

2.在/usr/local/src 添加脚本

1648194470(1).png

3。启动nginx 和 keepalived

启动nginx: ./nginx
启动keepalived: systemctl start keepalived.service

原理

  1. master & worker

image.png

1648198242(1).png

  1. worker 怎么工作

image.png

master-worker的机制的好处

首先,对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同事在编辑以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程则很快启动新的worker进程。当然,worker进程异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响所有请求,所有降低风险。

  1. 一个master 和 多个worker 的好处

(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作

(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的, 继续进行争抢,实现请求过程,不会造成服务中断

  1. 设置多少个worker 合适

Nginx 和 redis 类似 都采用了io 多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使成千上万的请求也不在话下。每个worker的线程可以把一个cpu的性能发挥到极致。所有worker数和服务器的cpu数相等是最为适宜的。设少了浪费cpu,设多了会造成cpu频繁切换上下文带来的损耗。(worker 数和服务器的 cpu 数相等是最为适宜的)

  1. 连接数 worker_connection

第一个:发送请求,占用了 woker 的几个连接数?

答案:2 或者 4 个

第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?

worker_connections (最大的连接数) worker_processes(worker 数量)

l 普通的静态访问最大并发数是: worker_connections * worker_processes /2,

l 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *

worker_processes/4。

尚硅谷视频链接:www.bilibili.com/video/av681…