IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx常用配置/负载均衡 -> 正文阅读

[系统运维]nginx常用配置/负载均衡

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 负载均衡

1、轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

http {
#......
	upstream backserver {
   	 	server 172.25.1.2;
    	server 172.25.1.3;
	}
server {
                 listen      80;
                 server_name www.erqian.org;

                 location / {
                         proxy_pass http://backserver;
                 }
       }

测试访问
在这里插入图片描述

2、权重

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的
情况。


upstream backserver {
    server 172.25.1.2 weight=3;
    server 172.25.1.3;
}


测试访问
在这里插入图片描述在这里插入图片描述

权重越高,在被访问的概率越大

3.ip_hash

上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。

我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream backserver {
ip_hash;
server 172.25.1.2;
server 172.25.1.3;
}

在这里插入图片描述

4.基于cookie的负载均衡

通过nginx的拓展模块nginx-sticky-module实现。
安装插件,重新编译。

[root@server1 nginx-1.20.1]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
[root@server1 nginx-1.20.1]# \cp -f objs/nginx /usr/local/nginx/sbin/nginx

编辑配置文件
在这里插入图片描述浏览器访问会一直保持server2
在这里插入图片描述删除掉cookie直后刷新,访问server3
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 11:12:00  更:2021-09-07 11:14:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:12:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码