nginx常用配置/负载均衡

2021/9/7 7:10:43

本文主要是介绍nginx常用配置/负载均衡,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 1.指定nginx 的运行身份
    • 2.优化性能相关的配置
      • worker进程的数量
      • worker 进程绑定到指定cpu
      • 控制nginx的最大连接数
    • 3.nginx 平滑升级
    • 4.版本回退

1.指定nginx 的运行身份

在这里插入图片描述查看nginx的worker运行身份为nobody ,需要为其添加指定用户

useradd -d /usr/local/nginx -M -s /sbin/nologin nginx

修改nginx的配置文件,指定运行身份

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
重载nginx后查看worker的运行身份
在这里插入图片描述

2.优化性能相关的配置

worker进程的数量

worker进程的数量,通常应该为当前主机的cpu的物理核心数,查看当前主机的核心数量lscpu
在这里插入图片描述
修改配置文件中的worker数量为自动获取

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
重载nginx后查看worker运行数量,发现数量cpu数量一致了。
在这里插入图片描述

worker 进程绑定到指定cpu

将worker进程绑定到指定cpu上,可以提高缓存命中率

worker_cpu_affinity 0001 0010 0100 1000; 分别将worker进程绑定到1,2,3,4号CPU上

编辑配置文件

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

控制nginx的最大连接数

单个进程允许的最大连接数需要根据服务器性能和内存使用量作相应的调整。进程的最大连接数又受到linux系统进程的最大打开文件数限制。所以nginx的最大总并发连接数=worker 数量 * 单个进程最大连接数

修改连接数

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
再修改linux系统所限制的最大连接数,数量一般应大于所申请数。

vim /etc/security/limits.conf

在这里插入图片描述

一个应用程序能开启的最大连接数是受到限制的,内核限制>系统限制>应用软件限制。
查看内科支持的最大文件打开数
sysctl -a | grep file
查看系统支持的最大文件打开数
ulimit -a

3.nginx 平滑升级

nginx 方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。

下载新版本 nginx,解压, 准备进行源码编译,
[root@server1 ~]# tar zxf nginx-1.21.1.tar.gz
[root@server1 ~]# cd nginx-1.21.1/auto
[root@server1 auto]# vim cc/gcc ##轻量化编译,注释掉debug
在这里插入图片描述
进行预编译和正式编译,原有的参数不能少,假如想添加其他新模块,,直接在后面添加相关配置参数即可。只编译,不安装,

[root@server1 nginx-1.21.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@server1 nginx-1.21.1]# make

备份原nginx二进制文件,期间nginx不会停止服务,将新编辑的二进制序覆盖掉原来安装路径下的nginx.

[root@server1 nginx-1.21.1]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
[root@server1 nginx-1.21.1]# cp -f objs/nginx /usr/local/nginx/sbin/

在这里插入图片描述然后查看只有老进程在工作,在新版本的编译目录中给nginx发送平滑迁移信号。

[root@server1 nginx-1.21.1]# kill -USR2 14408 ##老版本的masterPID

在这里插入图片描述新版本的master和worker 已经和就版本同时存在,

关闭旧的nginx工作进程

[root@server1 nginx-1.21.1]# kill -WINCH 14408 ##老版本的masterPID

可以看到只剩下可以看到旧的工作进程已经被关闭,只剩下旧的主进程与新的工作进程同时存在,此时访问已经是新版本
在这里插入图片描述

再结束旧的主进程

[root@server1 nginx-1.21.1]# kill -QUIT 14408##老版本的masterPID

在这里插入图片描述再次观查,只有新的主进程和工作进程;

注意:之前的master进程不要结束掉,万一新版本有问题,可以回滚,等新版本确认没有问题了,在结束掉

命令作用
kill -USR2 进程号不再让worker进程接受请求,当前请求处理完就让worker进程退出
kill -WINCH 进程号处理完关闭
kill-HUP 进程号启动进程

4.版本回退

与版本升级一样,将旧版本的二进制应用文件替换新版本的,这里使用之前备份的老版本直接覆盖。

[root@server1 nginx-1.21.1]# cp -f /usr/local/nginx/sbin/nginx_old nginx
[root@server1 sbin]# kill -HUP 19715  ##旧版本的PID 

当旧版本已经被关闭,ps查询不到时,
[root@server1 objs]# kill -USR2 2113 3##新版本的PID
就可以拉起旧版本的worker进程
在这里插入图片描述新版本的master和worker 已经和就版本同时存在,

关闭新的nginx工作进程

[root@server1 sbin]# kill -WINCH 19715##当前版本的PID 

在这里插入图片描述



这篇关于nginx常用配置/负载均衡的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程