一 负载平衡概述
1.1 负载平衡先容
负载平衡是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。对于Web应用,通过负载平衡,可以将一台服务器的事情扩展到多台服务器中执行,提高整个网站的负载能力。其本质接纳一个调剂者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载平衡。二 Nginx负载平衡
2.1 优点
2.2 主要平衡机制
2.3 负载平衡计谋
nginx的负载平衡计谋可以划分为两大类:内置计谋和扩展计谋,扩展计谋为第三方提供。 内置计谋2.4 负载平衡内置变量
nginx负载平衡器内置变量(Embedded Variables),nginx负载平衡模块ngx_http_upstream_module支持下列内置变量:2.5 负载平衡康健检查
nginx反向署理包罗内置的或第三方扩展来实现服务器康健检测的。若是后端某台服务器响应失败,nginx会符号该台服务器失效,在特定时间内,请求不分发到该台上。 fail_timeout:该指令界说了多长时间服务器将被符号为失败。在fail_timeout后,服务器照样failed,nginx将检测该服务器是否存活,若是探测乐成,将符号为活的。 max_fails:该指令设置在fail_timeout期间内延续的失败实验。默认情形下,max_fails为1。若是被设置为0,该服务器的康健检测将禁用。2.6 负载平衡状态码
三 默认轮询负载平衡
3.1 环境预设
1 [root@nginx02 ~]# mkdir /usr/share/nginx/balanc/ 2 [root@nginx02 ~]# echo '<h1>Rs_172.24.10.22</h1>' > /usr/share/nginx/balanc/index.html
1 [root@nginx02 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF 2 server { 3 listen 9090; 4 server_name 172.24.10.22; 5 location / { 6 root /usr/share/nginx/balanc; 7 index index.html; 8 access_log /var/log/nginx/rs.access.log main; 9 error_log /var/log/nginx/rs.error.log warn; 10 } 11 } 12 EOF
1 [root@nginx02 ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@nginx02 ~]# nginx -s reload #重载设置文件
1 [root@nginx03 ~]# mkdir /usr/share/nginx/balanc/ 2 [root@nginx03 ~]# echo '<h1>Rs_172.24.10.23</h1>' > /usr/share/nginx/balanc/index.html
1 [root@nginx03 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF 2 server { 3 listen 9090; 4 server_name 172.24.10.23; 5 location / { 6 root /usr/share/nginx/balanc/; 7 index index.html; 8 access_log /var/log/nginx/rs.access.log main; 9 error_log /var/log/nginx/rs.error.log warn; 10 } 11 } 12 EOF
1 [root@nginx03 ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@nginx03 ~]# nginx -s reload #重载设置文件
1 [root@nginx04 ~]# mkdir /usr/share/nginx/balanc/ 2 [root@nginx04 ~]# echo '<h1>Rs_172.24.10.24</h1>' > /usr/share/nginx/balanc/index.html
1 [root@nginx04 ~]# cat > /etc/nginx/conf.d/rs.conf <<EOF 2 server { 3 listen 9090; 4 server_name 172.24.10.24; 5 location / { 6 root /usr/share/nginx/balanc/; 7 index index.html; 8 access_log /var/log/nginx/rs.access.log main; 9 error_log /var/log/nginx/rs.error.log warn; 10 } 11 } 12 EOF
1 [root@nginx04 ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@nginx04 ~]# nginx -s reload #重载设置文件 3 [root@client ~]# curl 172.24.10.22:9090 4 <h1>Rs_172.24.10.22</h1> 5 [root@client ~]# curl 172.24.10.23:9090 6 <h1>Rs_172.24.10.23</h1> 7 [root@client ~]# curl 172.24.10.24:9090 8 <h1>Rs_172.24.10.24</h1>
3.2 默认轮询方式设置
1 [root@nginx01 ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 server 172.24.10.22:9090; 4 server 172.24.10.23:9090; 5 server 172.24.10.24:9090; 6 } 7 8 server { 9 listen 80; 10 server_name balance.linuxds.com; 11 access_log /var/log/nginx/mybalance.access.log main; 12 error_log /var/log/nginx/mybalance.error.log warn; 13 location / { 14 proxy_pass http://mybalance01; 15 index index.html; 16 proxy_redirect off; 17 proxy_set_header Host $host; 18 proxy_set_header X-Real-IP $remote_addr; 19 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 20 client_max_body_size 10m; #允许客户端请求的最大单文件字节数 21 client_body_buffer_size 128k; #缓冲区署理缓冲用户端请求的最大字节数 22 proxy_connect_timeout 300; #nginx跟后端服务器毗邻超时时间(署理毗邻超时) 23 proxy_send_timeout 300; #后端服务器数据回传时间(署理发送超时) 24 proxy_read_timeout 300; #毗邻乐成后,后端服务器响应时间(署理吸收超时) 25 proxy_buffer_size 4k; #设置署理服务器(nginx)保留用户头信息的缓冲区巨细 26 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 27 proxy_busy_buffers_size 64k; #高负荷下缓冲巨细(proxy_buffers*2) 28 proxy_temp_file_write_size 64k; #设定缓存文件夹巨细,大于这个值,将从upstream服务器传 29 } 30 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件
3.3 确认测试
浏览器接见:http://balance.linuxds.com/,而且刷新3次测试效果。四 加权轮询负载平衡
4.1 环境预设
参考3.1。4.2 加权轮询方式设置
1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 server 172.24.9.11:9090 weight=1 max_fails=1 fail_timeout=2; 4 server 172.24.9.12:9090 weight=8 max_fails=2 fail_timeout=2; 5 server 172.24.9.13:9090 backup; #设置为备份服务器 6 } 7 8 server { 9 listen 80; 10 server_name balance.linuxds.com; 11 access_log /var/log/nginx/mybalance.access.log main; 12 error_log /var/log/nginx/mybalance.error.log warn; 13 location / { 14 proxy_pass http://mybalance01; 15 index index.html; 16 proxy_redirect off; 17 proxy_set_header Host $host; 18 proxy_set_header X-Real-IP $remote_addr; 19 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 20 client_max_body_size 10m; 21 client_body_buffer_size 128k; 22 proxy_connect_timeout 300; 23 proxy_send_timeout 300; 24 proxy_read_timeout 300; 25 proxy_buffer_size 4k; 26 proxy_buffers 4 32k; 27 proxy_busy_buffers_size 64k; 28 proxy_temp_file_write_size 64k; 29 } 30 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件设置释义: weight:参数值越高则被分配到的概率越大。
4.3 确认测试
浏览器接见:http://balance.odocker.com/,而且刷新3次测试效果。此时测试172.24.9.12更容易被分配,172.24.9.13在其他RS正常的时刻不会介入响应。五 最小毗邻负载平衡
5.1 环境预设
参考3.1。5.2 最小毗邻方式设置
1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 least_conn; 4 server 172.24.10.21:9090; 5 server 172.24.10.22:9090; 6 server 172.24.10.23:9090; 7 } 8 9 server { 10 listen 80; 11 server_name balance.linuxds.com; 12 access_log /var/log/nginx/mybalance.access.log main; 13 error_log /var/log/nginx/mybalance.error.log warn; 14 location / { 15 proxy_pass http://mybalance01; 16 index index.html; 17 } 18 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件
5.3 确认测试
浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于请求处置时间长短不一造成服务器过载的情形。六 IP hash负载平衡
6.1 环境预设
参考3.1。6.2 ip hash方式设置
1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 ip_hash; 4 server 172.24.10.21:9090; 5 server 172.24.10.22:9090; 6 server 172.24.10.23:9090; 7 } 8 9 server { 10 listen 80; 11 server_name balance.linuxds.com; 12 access_log /var/log/nginx/mybalance.access.log main; 13 error_log /var/log/nginx/mybalance.error.log warn; 14 location / { 15 proxy_pass http://mybalance01; 16 index index.html; 17 } 18 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件
6.3 确认测试
浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于会话保持。七 fair负载平衡
7.1 环境预设
参考3.1。7.2 fair方式设置
1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 fair; 4 server 172.24.10.21:9090; 5 server 172.24.10.22:9090; 6 server 172.24.10.23:9090; 7 } 8 9 server { 10 listen 80; 11 server_name balance.linuxds.com; 12 access_log /var/log/nginx/mybalance.access.log main; 13 error_log /var/log/nginx/mybalance.error.log warn; 14 location / { 15 proxy_pass http://mybalance01; 16 index index.html; 17 } 18 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件
7.3 确认测试
浏览器接见:http://balance.linuxds.com/。 提醒:该方式下响应快的服务器都市优先分配,接着才会分配响应速度较慢的服务器。因此此方式主要应用于后端服务器性能不均一。八 url_hash负载平衡
8.1 环境预设
参考3.1。8.2 ip hash方式设置
1 [root@balance ~]# vi /etc/nginx/conf.d/balance.conf 2 upstream mybalance01 { 3 hash $request_uri; 4 hash_method crc32; 5 server 172.24.10.21:9090; 6 server 172.24.10.22:9090; 7 server 172.24.10.23:9090; 8 } 9 10 server { 11 listen 80; 12 server_name balance.linuxds.com; 13 access_log /var/log/nginx/mybalance.access.log main; 14 error_log /var/log/nginx/mybalance.error.log warn; 15 location / { 16 proxy_pass http://mybalance01; 17 index index.html; 18 } 19 }
1 [root@balance ~]# nginx -t -c /etc/nginx/nginx.conf #检查设置文件 2 [root@balance ~]# nginx -s reload #重载设置文件
8.3 确认测试
浏览器接见:http://balance.linuxds.com/。 提醒:此方式主要应用于后端服务器为缓存时对照适用。 参考文档: https://ifeve.com/nginx-http/ https://www.cnblogs.com/lcword/p/11800474.html,欢迎进入Allbet Gmaing代理(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。
网友评论
最新评论