负载均衡,一般包含两方面的含义。一方面是,将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样可以大幅提高网络系统的处理能力;第二个方面的含义是,将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理,这样可以有效减少前端用户等待响应的时间。
Nginx服务器的负载均衡策略可以划分为两大类:即内置策略和扩展策略。内置策略主要包含轮询、加权轮询和IP hash三种;扩展策略主要通过第三方模块实现,种类比较丰富,常见的有url hash、fair等。
- 开启nginx:linux服务器下,进入终端,在超级用户的模式下,输入:(访问的是nginx的默认路径),然后在浏览器输入127.0.0.1就可以访问
实现原理
架构图解释:在这个图中,用户提交请求先到Nginx主服务器,然后由Nginx进行对这些请求的转发,转发到各个分服务器上,然后nginx进行逻辑处理。
部署
在新建一个项目,如test.com
- 在192.168.172.131,192.168.172.132和本机(负载服务器)安装好nginx,并新建好站点
test.com
,配置文件为test.com.conf
,本机hosts
绑定不同ip测试 - 在本机nginx/config/vhost/ 下执行vim test.com.conf 进行如下编辑
#服务器的集群
upstream test.com { #服务器集群名字
server 192.168.172.131:80 fail_timeout:60s weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 192.168.172.132:80 fail_timeout:60s weight=2;
}
server{
listen 80;
listen 443;
server_name test.com;
index index.php index.html index.htm default.php default.htm default.html;
root D:/wwwroot/test;
...
location / {
proxy_pass test.com;
proxy_set_header Host $host;
proxy_set_header X-real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forworded_for;
}
...
}
- 重启nginx
- 在浏览器地址栏输入:
test.com
,就可以进入压力比较小的服务器,重新进入会进入不一样的页面。
conf文件分析 HTTP Upstream
- ip_hash
如何实现让用户每次访问的是一个服务器:
用ip_hash;
关闭nginx=>killall -9 nginx
再打开nginx
清空浏览器的cookie,再次访问8080端口,那么多次访问都是你进入的当前浏览器,直到这个浏览器崩溃。
- server指令的操作
可以设置服务器的权重weight=2,哪个服务器的权重比较大,被访问的概率比较大。
先关闭ip_hash,在测试
关闭重新打开nginx
清空cookie,访问8080,访问182,18,79,243的概率比较大
- upstream 指令