Nginx配置实例--负载均衡

11/11/2023 Nginx

# 一、Nginx负载均衡实现原理

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式(策略):
①轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
②weight(权重)
weight 代表权重默认为 1,权重越高被分配的客户端请求越多。
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream server_pool{
  	server 192.168.139.27			weight = 10;
  	server 192.168.139.28			weight = 20;
}
1
2
3
4

③ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。例如:

upstream server_pool{
  	ip_hash;
  	server 192.168.139.27;
  	server 192.168.139.28;
}
1
2
3
4
5

④fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{
  	server 192.168.139.27;
  	server 192.168.139.28;
  	fair;
}
1
2
3
4
5

# 二、Nginx负载均衡配置实例

实现效果:浏览器地址栏输入地址 http://192.168.139.27/edu/a.html,负载均衡效果,平均 8080 和 8081 端口中

# 1、准备工作

准备两台tomcat服务器,一台开放8080端口,一台开放8081端口,在两台tomcat里面的webapps目录下创建edu文件夹,在edu文件下创建页面a.html。

# 2、配置nginx负载均衡

找到/usr/local/nginx/conf/nginx.conf配置文件,进行如下配置:

upstream myserver{
  	server 192.168.139.27:8080;
  	server 192.168.139.27:8081;
}
1
2
3
4
server {
		listen		80;
		server_name		192.168.139.27;   ##指定服务器IP地址

		location / {
				proxy_pass		http://myserver;	##指定前边定义的myserver,将请求负载分担到myserver中的IP和端口上
      	root		html;
      	index		index.html index.htm; 	
		}
}
1
2
3
4
5
6
7
8
9
10

测试:使用浏览器访问http://192.168.139.27/edu/a.html,一直刷新页面,会发现有时响应结果为8080端口tomcat的页面内容,有时响应结果为8081端口tomcat的页面内容,nginx已将请求负载均衡到两台tomcat服务器。