最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux环境下Nginx 通过upstream如何配置负载均衡以及实现
时间:2022-06-30 18:21:30 编辑:袖梨 来源:一聚教程网
一,服务器准备情况,四台:
1,前段服务器:
192.168.1.112 hosts定向测试域名nginx.21yunwei.com
192.168.1.113 备用前端服务器。
后端web服务器池web_pools:
192.168.1.102
192.168.1.103
2,环境:统一centos 6
前端服务器安装nginx。环境安装这里就不写了,可以参考文章《linux下如何安装nginx环境配置》部署nginx环境。
后端web服务器 池统一安装apache:yum install httpd -y 并关闭防火墙。否则会出现前端服务器无法请求web池情况。
二,nginx负载均衡配置。
1,修改nginx配置文件。
egrep -v "#| ^$" nginx.conf.default > nginx.conf
处理配置文件并输出到nginx.conf,这里清除了注释行和空行,方便直观查看nginx配置文件。
我们知道nginx负载均衡是通过ngx_http_upstream_module这个模块来实现的,详情可以查看官网http://nginx.org/en/docs/http/ngx_http_upstream_module.html介绍。
修改后的配置文件如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream web_pools {
server 192.168.1.102:80 weight=5; //192.168.1.102web节点服务器,权重5.权重越大,越优先分配。
server 192.168.1.103:80 weight=5; //192.168.1.103web节点服务器,权重5.测试使用,可以根据实际环境进行权重分配。
server 192.168.1.104:80 weight=5 backup; // 备用节点服务器,如果之前启用的web节点挂了,备用服务器将进行启用访问。
}
server {
listen 80;
server_name nginx.21yunwei.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://web_pools;
}
}
}
Nginx模块upstream_module详细介绍以及调度算法
一,upstream模块介绍
nginx负载均衡就是依赖于ngx_http_upstream_module模块,支持代理方式有proxy_pass(前边我们用到的) 、fastcgi_pass、 memcached_pass。运行原理是前端访问的时候,请求到哪个主机,执行到后边定义的比如proxy_pass(单独笔记知识点),就会按照我们定义的upstream 名称执行对应的模块,比如《Linux环境下Nginx 通过upstream如何配置负载均衡以及实现》定义的web_pools这个web池。然后按照upstream定义的服务器以及设置好的算法进行分发执行。
二,upstream语法
以我们之前定义的文件为例:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream web_pools {
server 192.168.1.102:80 weight=5 max_fails=3 fail_timeout=3;
server 192.168.1.103:80 weight=5 max_fails=3 fail_timeout=3;
server 192.168.1.104:80 weight=5 backup;
keepalive 500;
}
server {
listen 80;
server_name nginx.21yunwei.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://web_pools;
}
}
}
三,upstream模块说明
1,upstream必须放到http{}标签中。
2,默认算法是wrr,权重轮训。
3,upstream内部参数说明:
server 192.168.1.102:80 weight=5; 定义的真实服务器,可以是IP也可以是域名,端口可以不写,默认80。如改成其他端口需要指定。
weight:表示当前指定server负载权重,权重越大,被请求的几率越大。默认权重为1.
down:表示当前server已停用
backup:表示当前server是备用服务器,非backup服务器挂了以后该服务器将会启用。注意:当服务器都down才会启用备用服务器。
max_fails:最大尝试失败次数,默认1。如设置0,则表示禁止尝试。根据实际需要来配置,一般配置2-3或更高。
fail_timeout:失败超时时间。默认10s,一般配置2-3秒就可以了。常于max_fails结合使用。
max_conns:并发连接数。保护节点服务器参数。
keepalive 300; 长连接最大连接数。
四,upstream模块调度算法方式。
Nginx的upstream支持5种分配方式。其中,前三种为Nginx原生支持的分配方式,后两种为第三方支持的分配方式:
1、rr轮询
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。按照1:1轮询。
upstream backend {
server 192.168.1.101:88;
server 192.168.1.102:88;
}
2、wrr轮询。
轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream backend {
server 192.168.1.101 weight=1;
server 192.168.1.102 weight=2;
server 192.168.1.103 weight=3;
}
3、ip_hash
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
upstream backend {
ip_hash;
server 192.168.1.101:81;
server 192.168.1.102:82;
server 192.168.1.103:83;
}
4、fair
fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
fair;
}
5、url_hash
与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
hash $request_uri;
hash_method crc32;
}
hash_method为使用的hash算法,需要注意的是:server语句中不能加weight等参数。后边两种目前作了解即可。
相关文章
- 《绝区零》伊芙琳培养材料汇总 01-24
- 《无限暖暖》1.2春节兑换码一览 01-24
- 《网上国网》查询阶梯档位方法 01-24
- 《蛋仔派对》神游贺岁盲盒获取方法 01-24
- 《炉石传说》星际联动盗贼卡组玩法介绍 01-24
- 皮革珊瑚属于珊瑚中的 01-24