一篇文章掌握nginx——nginx负载均衡

前面说完了nginx的安装与配置文件的介绍以及静态项目的访问:
一篇文章掌握nginx——nginx的安装
一篇文章掌握nginx——nginx的配置
一篇文章掌握nginx——nginx代理不同项目
本次,说一下nginx的负载均衡

准备工作

[root@localhost webapps]# mkdir test
[root@localhost webapps]# touch b.html
[root@localhost webapps]# cd test
[root@localhost test]# vim b.html

首先我们在tomcat1中也添加一个test文件夹,并创建b.html文件,这样两个tomcat都有了test项目。
重启一下tomcat。
在这里插入图片描述
在这里插入图片描述
可以看到两个项目均可以访问。

二、配置nginx.conf

nginx 分配服务器策略

第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
第二种 weight
weight 代表权重默认为 1,权重越高被分配的客户端越多
第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
第四种 fair(第三方
按后端服务器的响应时间来分配请求,响应时间短的优先分配

打开nginx.config在http模块里面添加下面配置(第二种)

upstream server_pool{
        server 192.168.111.129:8080 weight=10;
        server 192.168.111.129:9080 weight=10;
        }

在server块里面添加下面配置。

location / {
            proxy_pass http://server_pool;
            proxy_connect_timeout 10;
        }

在这里插入图片描述
重启nginx

[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ./nginx -s reload
[root@localhost sbin]# vim ../conf/nginx.conf

我们在外网访问一下
在这里插入图片描述
在刷新一下
在这里插入图片描述
我们发现刷新一次页面就变化一次,轮流执行,因为我们配置的weight权重是一样的。

除此之外还有其他几种配置。
ip_hash

upstream server_pool{ 
	ip_hash; 
	server 192.168.111.129:8080; 
	server 192.168.111.129:9080; 
}

fair

upstream server_pool{ 
	server 192.168.111.129:8080; 
	server 192.168.111.129:9080; 
	fair; 
}

最后说一下nginx的其他参数原理
master-workers 的机制的好处

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

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

#设置 worker 数量
worker_processes 4
#work 绑定 cpu(4 work 绑定 4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000

连接数 worker_connection
这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接
数,应该是 worker_connections * worker_processes。当然,这里说的是最大连接数,对于
HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections *
worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访
问最大并发数是: worker_connections * worker_processes /2,而如果是 HTTP 作 为反向代
理来说,最大并发数量应该是 worker_connections *
worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服
务的连接,会占用两个连接。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值