Nginx 负载均衡详解及配置
详解 6 种 Nginx 负载 (round-robin;Weight;ip_hash;least_conn;fair;url_hash)
;
实验平台:实验平台:CentOS 7.7.1908
nginx-version:1.16.1
一、 安装 Nginx
1.这里测试使用 yum
安装 Nginx
$ yum -y install nginx
2.如需源码安装参考
点我 ---> Linux 下编译安装 Nginx
3.启动
$ systemctl start nginx
$ systemctl enable nginx
二、实操配置
1.简单实现(轮循 round-robin
)
- 最基本的配置方法,它是 upstream 模块默认的负载均衡默认策略;
- 每个请求会按时间顺序逐一分配到不同的后端服务器;
- 如果后端服务器 down 掉,能自动剔除;
- 此策略适合服务器配置相当,无状态且短平快的服务使用。
$ vim /etc/nginx/nginx.conf
http {
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
proxy_pass http://backserver;
#指定的访问反向代理到服务器列表
}
}
upstream backserver {
server 10.10.10.6;
server 10.10.10.12;
}
}
参数:
- down #标记服务器永久停机了
eg:
upstream backserver {
server 10.10.10.6 down;
server 10.10.10.12;
}
#相当于 10.10.10.6 服务器 down 了,请求只会去 10.10.10.12
- max_fails #设置在 fail_timeout 参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了
- fail_timeout #与 max_fails 结合使用
- fail_time #服务器会被认为停机的时间长度,默认为10s
- backup #标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里
- max_conns #限制分配给某台服务器的最大连接数,超过这个数量,反向代理服务器将不会分配新的连接,默认为 0,表示不限制;
2.权重(Weight
)
- 权重越高分配到需要处理的请求越多
- 此策略比较适合服务器的硬件配置差别比较大的情况
- 此策略可以与 least_conn 和 ip_hash 结合使用
upstream backserver {
server 10.10.10.6 weight=10;
server 10.10.10.12 weight=2;
}
3.ip_hash
(绑定访问 IP
)
- 在 nginx 版本 1.3.1 之前,不能在 ip_hash 中使用权重 weight
- ip_hash 不能与 backup 同时使用
- 此策略适合有状态服务,比如 session
- 当有服务器需要剔除,必须手动剔除掉
upstream backserver {
ip_hash;
server 10.10.10.6;
server 10.10.10.12;
}
4.least_conn
- 把请求转发给连接数较少的后端服务器
- 有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn 这种方式就可以达到更好的负载均衡效果
- 此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况
upstream backserver {
least_conn;
server 10.10.10.6;
server 10.10.10.12;
}
7.fair
(需安装第三方模块)
- 增强了 Nginx 提供的 round-robin 负载均衡算法,可以跟踪后端服务器的负载来分发请求
官方 github
下载地址:
https://github.com/gnosek/nginx-upstream-fair
如果从
github
下载最新版本,在安装到nginx 1.14.0 版本时,会报出编译错误。修改参照(如果你看到这篇文章时,已经修改了该 bug,或者你用的是 nginx 1.14.0以下版本,请忽视...)
https://github.com/gnosek/nginx-upstream-fair/pull/27/commits/ff979a48a0ccb9217437021b5eb9378448c2bd9e
已编译好的源码
https://files.cnblogs.com/files/ztlsir/nginx-upstream-fair-master
增加模块参考上面 Linux 下编译安装 Nginx
--add-module=/root/nginx-upstream-fair-master
upstream backserver {
server 10.10.10.6;
server 10.10.10.12;
fair;
}
8.url_hash
(需安装第三方模块)
- 按访问 url 的 hash 结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用
- 实现每个 url 定向到同一个后端服务器
- 在 1.7.2 之后的nginx版本中,该模块应集成到内核中,不需要单独安装
wget http://wiki.nginx.org/images/7/78/Nginx_upstream_hash-0.3.tar.gz
--add-module=/root/Nginx_upstream_hash-0.3.1
upstream backserver {
hash $request_uri;
server 10.10.10.6;
server 10.10.10.12;
}
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1271 0 2020-09-12
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
随机推荐
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353289 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...