ens7f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.4.32 netmask 255.255.252.0 broadcast 192.168.7.255 inet6 fe80::e273:9c3c:e675:7c60 prefixlen 64 scopeid 0x20<link> ... ...
(3)在 /usr/local/src 目录下添加检测脚本 nginx_check.sh 。#!/bin/bashA=`ps -C nginx -no-header |wc -l`if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ ps -C nginx -no-header |wc -l` -eq 0 ];thenkillall keepalivedfifi
(4)启动两台服务器的 nginx 和 keepalived 。# 启动 nginx./nginx# 启动 keepalivedsystemctl start keepalived.service
(5)查看虚拟 ip 地址 ip a。把主服务器 192.168.4.32 nginx 和 keepalived停止 , 再访问虚拟 ip 查看高可用效果 。6. 原理解析
文章插图
【Nginx高级篇:从原理到实战,彻底搞懂Nginx】Nginx 启动之后 , 在 Linux 系统中有两个进程 , 一个为 master , 一个为 worker 。master 作为管理员不参与任何工作 , 只负责给多个 worker 分配不同的任务(worker 一般有多个) 。
ps -ef |grep nginxroot20473102019 ?00:00:00 nginx: master process /usr/sbin/nginxnginx4628 204730 Jan06 ?00:00:00 nginx: worker processnginx4629 204730 Jan06 ?00:00:00 nginx: worker process
worker 是如何工作的?客户端发送一个请求首先要经过 master , 管理员收到请求后会将请求通知给 worker , 多个 worker 以争抢的机制来抢夺任务 , 得到任务的 worker 会将请求经由 tomcat 等做请求转发、反向代理、访问数据库等(nginx 本身是不直接支持 JAVA 的) 。
文章插图
一个 master 和多个 worker 的好处?
- 可以使用 nginx -s reload 进行热部署 。
- 每个 worker 是独立的进程 , 如果其中一个 worker 出现问题 , 其它 worker 是独立运行的 , 会继续争抢任务 , 实现客户端的请求过程 , 而不会造成服务中断 。
Nginx 和 redis 类似 , 都采用了 io 多路复用机制 , 每个 worker 都是一个独立的进程 , 每个进程里只有一个主线程 , 通过异步非阻塞的方式来处理请求 , 每个 worker 的线程可以把一个 cpu 的性能发挥到极致 , 因此 , worker 数和服务器的 cpu 数相等是最为适宜的 。
思考:
(1)发送一个请求 , 会占用 worker 几个连接数?
(2)有一个 master 和 4个 worker , 每个 worker 支持的最大连接数为 1024 , 该系统支持的最大并发数是多少?
作者:臧小晶
原文链接:https://juejin.im/post/5e1c263e5188254dc74a3b23
推荐阅读
- Linux安装Nginx详细教程
- 前端进阶高薪必看-CSS之手写篇
- 三年级作文妈妈的爱5篇 三年级作文妈妈的爱
- Nginx配置一键生成
- 汽车到底用不用贴膜?看完这篇文章你会改变想法
- 《老冯寻宝》第一季《秦岭茶记》汉中西乡篇
- Redis从入门到精通,至少要看看这篇
- Nginx下无法使用中文URL的解决方法
- 西装|朱玲玲老了也风韵不减,穿西装高级大气,一眼能看出是不是阔太太
- 致敬最美逆行者的一封信(致敬最美逆行者的一封信作文5篇)