什么是Nginx?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。
优点:
1、可运行linux,并有windows 移植版
2、在高并发情况下,Nginx 可支持高达50000个并发连接数的响应。
需求描述:
随着网站的发展,服务器压力越来越大,我们可能首先会将数据库,静态文件分离出去。但是随着发展,单独业务API的请求的压力也会变得很大,这时候我们可能需要做负载均衡将一台服务器面临的压力分散到多台服务器上。
Nginx如何实现负载均衡?
1、Nginx反向代理
Nginx利用自身反向代理功能,在conf配置文件中添加反向代理地址,以代理服务器的身份接受客户端发送过来的请求,然后将请求转发给内部网络上的应用服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器,不过它只负责转发请求,不负责处理。
2、Nginx转发策略
Nginx转发请求可按照调度规则通过轮询、ip哈希、URL哈希、权重等多种方式对应用服务器做负载均衡,同时还支持后端服务器的健康检查,也就是上面讲的故障移除和恢复添加功能
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,能自动剔除。
2)、权重
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。Ps.大家不要看这些东西挺蒙,其实就是在Nginx服务器配置上指定的参数即可实现。 例如配置反向代理地址:proxy_pass,配置转发算法以及session共享
3、Nginx负载均衡如何配置?
我们在一台机器上模拟nginx的负载均衡,首先保证linux安装nginx,以及在服务器上放置三个tomcat1,tomcat2,tomcat3,我们通过修改每个tomcat的默认访问文件来区别nginx是否配置成功。分别修改tomcat的文件index.jsp的内容
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>server 1</h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>server 2</h1> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>server 3</h1> </body> </html>
修改每个tomcat的端口号:8080,8081,8082
![]()
启动访问每个tomcat是否正常访问
现在开始来修改nginx配置文件nginx.config
添加如下配置
http { # ..... 省略其它配置 upstream tomcats { server 192.168.0.203:8080; server 192.168.0.203:8081; server 192.168.0.203:8082; } server { listen 80; location / { proxy_pass http://tomcats; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # ..... 省略其它配置 }
启动nginx: systemctl start nginx,通过IP进行访问,可以看到访问的不同的tomcat证明配置成功。默认轮询方式。
通过关闭tomcat1可以看到访问的时候只能访问到tomcat2,tomcat3,这就是nginx的心跳机制,服务器如果宕机会自动剔除此节点。重新启动tomcat1,又可以访问到tomcat1了,说明检测到tomcat1正常,自动将其添加到请求队伍中。
Nginx实现负载均衡的优点:
1、转发功能:按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
2、故障移除:通过心跳检测方式,判断应用服务器当前是否可以正常工作,如果服务器宕掉,自动将请求发送到其他应用服务器。
3、恢复添加:如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
ngixn 负载均衡
最新推荐文章于 2024-01-24 18:02:42 发布