nginx 负载均衡

nginx 负载均衡

一、 nginx 并发优化

1、worker_processes

句法:worker_processes number (or) auto;
默认:worker_processes 1;
语境:main

定义工作进程数。

最佳值取决于许多因素,包括(但不限于)CPU内核数,存储数据的硬盘驱动器数以及加载模式。如有疑问,将其设置为可用的CPU内核数将是一个不错的开始(值“ auto”将尝试自动检测它)。

2、worker_cpu_affinity

句法:worker_cpu_affinity cpumask …; worker_cpu_affinity auto [cpumask];
默认:-
语境:main

将工作进程绑定到CPU组。每个CPU集由允许的CPU的位掩码表示。应该为每个工作进程定义一个单独的集合。默认情况下,辅助进程未绑定到任何特定的CPU。

例如
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

3、worker_connections number

句法:worker_connections number;
默认:worker_connections 512;
语境:events

设置工作进程可以打开的最大同时连接数。

应当记住,该数目包括所有连接(例如,与代理服务器的连接等),而不仅包括与客户端的连接。另一个需要考虑的因素是,并发连接的实际数量不能超过打开文件最大数量的当前限制,可以通过worker_rlimit_nofile进行更改 。

4、epoll

use epoll ,使用epoll 多路复用机制。

注释:

  • nginx做服务器时
    • max_clients = worker_processes * worker_connections
  • nginx作为反向代理服务器时
    • max_clients = worker_processes * worker_connections / 2
  • 文件最大打开数:内核 > 系统 > app
  • 修改内核配置参数
    • 修改文件 -> /etc/sysctl.conf
    • 或者在 /etc/sysctl.d 目录下,编写 .conf 文件

二、 NGINX开源支持四种负载平衡方法

  • Round Robin

    • 请求在服务器之间平均分配,同时考虑了服务器权重(默认使用)。
  • least_conn;

    • 最少连接 -将活动连接最少的请求发送到服务器,再次考虑服务器权重。
  • ip_hash;

    • IP哈希-从客户端IP地址确定向其发送请求的服务器。客户端IP 不变,则访问的后端服务器不变。
  • hash $request_uri consistent;

    • 通用哈希 –将请求发送到的服务器是根据用户定义的键确定的,该键可以是文本字符串,变量或组合。
#  nginx 负载均衡:

# 配置nginx 配置文件
vim /usr/local/nginx/conf/nginx.conf
……
 use nginx nginx;
 worker_processes  2;
 worker_cpu_affinity 01 10;
……
     use epoll;
     worker_connections  65535;

http{
......
#  定义一个负载均衡器,可以指定端口
     upstream westos {
     # NGINX开源支持四种负载平衡方法
     #  Round Robin  –请求在服务器之间平均分配,同时考虑了服务器权重(默认使用)。
     
     #  最少连接 -将活动连接最少的请求发送到服务器,再次考虑服务器权重。
     # least_conn;
     
     #  IP哈希-从客户端IP地址确定向其发送请求的服务器。客户端IP 不变,则访问的后端服务器不变。
     # ip_hash;
     
     #   通用哈希 –将请求发送到的服务器是根据用户定义的键确定的,该键可以是文本字符串,变量或组合。
     # hash $request_uri consistent;
     
     #server 172.25.9.2:80 weight=5; #设置权重,权重越高越优先调度
     server 172.25.9.2:80;
     server 172.25.9.3:80;
     #server 127.0.0.1 backup; # 当前服务器做备用,除所有服务器全部无法调度,否则不会调度此服务器
     }
......
#  注释之前的 location,
         #location / {
         #    root   html;
         #    index index.php index.html index.htm;
         #}
 
#  新建location ,访问根时,调度到负载均衡器上
         location / {
                 proxy_pass http://westos;
         }
......
}

#  后端设置,server2 和 server3 作为后端,以httpd 方式。
server2:
yum install -y httpd
systemctl start httpd
echo server2 > /var/www/html/index.html

server3:
yum install -y httpd
systemctl start httpd
echo server3 > /var/www/html/index.html

在这里插入图片描述
示例截图在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

三、 nginx sticky 模块的使用

  • sticky;(nginxplus 支持的功能)
    • 启用会话持久性,浏览器cookie 值不变,则访问的后端也不变。
# 清除原先生成编译文件
make clean

# 重新生成Makefile 文件,指定模块路径
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42

# 不用make install ,会覆盖很多配置
make

# 替换二进制文件,并重启服务
cd nginx-goodies-nginx-sticky-module-ng-08a395c66e42
cp nginx /usr/local/nginx/sbin
systemctl restart nginx

# 编辑配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http{
......
     upstream westos {
     sticky;	#修改的地方,在所定义的负载均衡器中启用即可。
     server 172.25.9.2:80;
     server 172.25.9.3:80;
     }
......
}

# 检测语法
nginx -t
# 重载
nginx -s reload

# 测试,做了负载均衡后,浏览器访问,只要 cookie 值不变,网络正常,服务器正常。始终会调度到同一个后台。

示例截图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值