Nginx——nginx作为负载均衡服务(负载均衡策略ip_hash方式)
2021/8/6 7:06:08
本文主要是介绍Nginx——nginx作为负载均衡服务(负载均衡策略ip_hash方式),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 一、nginx作为负载均衡服务的调度算法
- 二、lz虚拟机说明
- 三、ip_hash调度算法演示
- 1、配置192.168.3.11虚拟机(即模拟三台虚拟机应用服务器)
- 2、配置192.168.3.10虚拟机(即负载均衡服务器)
- 四、ip_hash调度算法缺点
一、nginx作为负载均衡服务的调度算法
调度算法 | 作用 |
---|---|
轮询(默认) | 按时间顺序逐一分配到不同的后端服务器 |
加权轮询 | weight值越大,分配到的访问几率越高 |
ip_hash | 每个请求按访问IP的hash结果分配,这样来自同一个Ip访问一个后端服务器 |
url_hash | 按照访问的URL的hash结果来分配请求,使每个URL定向到同一个后端服务器 |
least_coon | 最少连接数,哪个后端服务器连接数少就分发到哪个后端服务器 |
hash关键数值 | hash自定义的key |
二、lz虚拟机说明
ip | 说明 |
---|---|
192.168.3.10(已安装nginx) | 此虚拟机作为负载均衡服务器 |
192.168.3.11(已安装nginx) | 此虚拟机通过nginx配置三个端口访问三个不同的页面(模拟三台虚拟机应用) |
三、ip_hash调度算法演示
1、配置192.168.3.11虚拟机(即模拟三台虚拟机应用服务器)
(1)、分别在/opt/app/code1、code2、code3目录下创建index.html页面(模拟三台服务器分别对应的index页面)
-
/opt/app/code1/目录下创建index.html页面,内容如下:
<html lang="en"> <head> <meta charset="utf-8"> <title>server1</title> </head> <body style="background-color:red;"> <h1>server1</h1> </body> </html>
-
/opt/app/code2/目录下创建index.html页面,内容如下:
<html lang="en"> <head> <meta charset="utf-8"> <title>server2</title> </head> <body style="background-color:yellow;"> <h1>server2</h1> </body> </html>
-
/opt/app/code3/目录下创建index.html页面,内容如下:
<html lang="en"> <head> <meta charset="utf-8"> <title>server3</title> </head> <body style="background-color:blue;"> <h1>server3</h1> </body> </html>
(2)、编辑 nginx.conf 配置文件可以看到在/etc/nginx/conf.d/目录下可以创建子配置文件,如下图:
(3)、在/etc/nginx/conf.d/目录下分别创建server1.conf、server2.conf和server3.conf三个配置文件(模拟三台服务器通过不同的端口访问对应目录下的index页面,即模拟三台服务三个不同的应用)
-
server1.conf配置文件内容如下:
server { listen 8001; #8001端口 server_name localhost; #ip地址 location / { root /opt/app/code1;#指定code1目录下的文件 index index.html index.htm; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
-
server2.conf配置文件内容如下:
server { listen 8002; #8002端口 server_name localhost; #ip地址 location / { root /opt/app/code2;#指定code2目录下的文件 index index.html index.htm; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
-
server3.conf配置文件内容如下:
server { listen 8003; #8003端口 server_name localhost; #ip地址 location / { root /opt/app/code3;#指定code3目录下的文件 index index.html index.htm; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
(4)、启动nginx服务并从新加载配置文件
-
启动nginx服务
[root@localhost conf.d]# systemctl start nginx.service
-
检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错
[root@localhost nginx]# nginx -t -c /etc/nginx/nginx.conf
-
重新加载nginx配置文件,并查看
[root@localhost conf.d]# nginx -s reload -c /etc/nginx/nginx.conf
-
查看本机启用nginx的端口
[root@localhost conf.d]# netstat -luntp|grep nginx
(5)、浏览器分别输入地址,访问模拟的三台服务器分别对应的index页面(即模拟三台服务三个不同的应用)
-
http://192.168.3.11:8001
-
http://192.168.3.11:8002
-
http://192.168.3.11:8003
2、配置192.168.3.10虚拟机(即负载均衡服务器)
(1)、编辑 nginx.conf 配置文件可以看到在/etc/nginx/conf.d/目录下可以创建子配置文件,如下图:
(2)、在/etc/nginx/conf.d/目录下创建upstream_server.conf配置文件,内容如下:
upstream blance {#配置服务器的分别对应的应用ip和的端口 ip_hash;#每个请求按访问IP的hash结果分配 server 192.168.3.11:8001; server 192.168.3.11:8002; server 192.168.3.11:8003; } server { listen 80; #80端口 server_name localhost; #ip地址 location / {#配置代理,名称与upstream后面追加的名称相同 proxy_pass http://blance; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
(3)、启动nginx服务并从新加载配置文件
-
启动nginx服务
[root@localhost conf.d]# systemctl start nginx.service
-
检查配置修改的配置文件是否正确,返回successful表示配置文件修改无错
[root@localhost nginx]# nginx -t -c /etc/nginx/nginx.conf
-
重新加载nginx配置文件,并查看
[root@localhost conf.d]# nginx -s reload -c /etc/nginx/nginx.conf
-
查看本机启用nginx的端口
[root@localhost conf.d]# netstat -luntp|grep nginx
(4)、浏览器输入代理服务的访问地址http://192.168.3.10/,因为负载均衡服务器的端口为80可以直接省略,依次刷新服务器,可以看到同一台电脑每次都在访问同一个后端服务器的页面,如下图:
-
如下图lz不管访问多少次,只能访问端口为8002的server2应用服务页面。
四、ip_hash调度算法缺点
- 如果ip为192.168.3.10的负载均衡服务器前面在加一层代理的话,那我们获取到的ip就不是用户真实的ip,这样就无法基于用户真实的ip做轮询。
- 因为获取的始终是代理服务器的ip,永远会访问同一个后端服务器。
这篇关于Nginx——nginx作为负载均衡服务(负载均衡策略ip_hash方式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享