3.1Nginx介绍
首先讲讲网站架构演化:
1.初期阶段,网站架构比较简单,系统部署时应用程序、数据库和文件等所有资源往往集中在一台服务器上。
2.数据服务与应用分离,将应用和数据分别部署,即应用服务器、文件服务器与数据服务器。
3.缓存
为了减少数据库访问压力,提高网站的数据访问速度,需要整合缓存。
4.集群
单一应用服务器能够处理的请求连接有限,这时选用负载均衡处理器势在必然。负载均衡处理器把来自浏览器的访问请求分发到应用集群中的任何一台服务器上,从而将压力分发出去。
5.动静分离
为了减轻Web服务器(Tomcat)的负载,我们可以将静态资源请求和动态请求拆分开来。再进一步,还可以对静态请求进行缓存。
接下来,讲解如何利用Nginx+Tomcat实现负载均衡的集群系统,以及如何利用Nginx+Tomcat实现动静分离。
Nginx是一个负载均衡器,负责请求的转发和集群的实现。另外还有一些重要的功能特点:
1.反向代理
在计算机网络中,反向代理是代理服务器的一种。服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
2.负载均衡
系统压力越来越大,单机Tomcat已经不足以支撑这种压力时,选用优化方案是增加Tomcat服务器,即把应用服务器从一台变成两台甚至多台,把用户的请求分散到不同服务器中,缓解单机瓶颈带来的隐患,提高系统的负载能力,Nginx+多Tomcat实例的集群方案就是一个不错的选择。
反向代理和集群方案的不同。在反向代理中,三台Tomcat服务器中部署的是三个不同项目且访问域名不同。集群是多台Tomcat服务器中部署的是同一个项目,多台Tomcat组成集群共同对外服务,此时的Nginx作为负载均衡调度器对请求进行分配。
3.HTTP服务器
Nginx本身也是一个静态资源服务器,当只有静态资源时可以将Nginx作为服务器。同时,现在很流行的动静分离,也可以通过Nginx来实现。
4.正向代理
正向代理与反向代理是相对的,反向代理是替代服务器接受客户端的请求,而正向代理是替代客户端发起请求。我们可以结合 VPN 来理解正向代理的概念。当某一资源无法访问,而另外一台机器 P1 可以访问时,我们可通过某种设置将 P1 当作跳板机,来访问该资源。这个跳板机就是我们的代理服务器,此时的代理即为正向代理。
5.动静分离
Nginx既可以作为HTTP服务器处理静态资源,也可以作为反向代理工具,将请求转发至Tomcat进行处理,因此我们可以利用Nginx+Tomcat实现用户请求的动静分离,进一步减轻Tomcat服务器的负载压力,且Nginx在处理静态资源文件上性能更优秀。
Nginx+Tomcat集群搭建
Nginx下载地址:
下载之后在Nginx文件下的命令行窗口输入 “start nginx ”,在网页端网址输入localhost:80即可访问Nginx。
“nginx -s stop”是关闭命令。
集群
搭建Tomcat集群需要两个以上的Tomcat目录。可以copy已有的Tomcat。
这个时候两个Tomcat服务器的所有设置和文件都是相同的,为了实现集群功能并区分不同的Tomcat,需要对Tomcat的设置和页面文件做部分修改。
首先修改Tomcat的端口设置,分别进入两个Tomcat服务器的conf目录,打开server.xml配置文件并修改:
将Tomcat1三个端口修改为8081、8082、8083,浏览器访问Tomcat1使用的端口号为8082,Tomcat2的三个端口号改为8084、8085、8086。
其次为了区分Tomcat1和2,需要将index.jsp进行修改。
打开服务器,访问localhost:8082和localhost:8085,若成功,集群搭建的第一步就完成了。
负载均衡
前面完成的集群还不完整,要访问它们,依然只能通过各自的地址+端口号访问,无法作为一个整体对外提供服务。要想使集群功能更加完整就需要加入负载均衡器,即Nginx。
在Nginx安装目录下编辑conf目录下的nginx.conf配置文件,在http节点下加入upstream节点,增加如下内容:
upstream HA-tomcat{
server locahost:8082;
server locahost:8085;
}
在server节点下面的location/节点中添加如下内容:
proxy_pass http://HA-tomcat;
配置完成后,打开命令行执行“nginx -s reload”命令重启Nginx服务,之后再访问http://localhost ,看到此时的页面已经不是 Nginx 的默认欢迎页,而是两台 Tomcat 的页面,一直刷新页面可以看到请求已经被轮流分发到 Tomcat1 和 Tomcat2 服务器上,至此集群和负载功能搭建完成。
总结:
Nginx+Tomcat集群负载均衡的实现过程步骤:
1、安装Nginx和Tomcat;
2、部署多台Tomcat;
3、修改Tomcat配置文件server.xml端口;
4、Nginx配置负载均衡(可使用“nginx -t 验证配置文件”);
5、启动Tomcat集群和Nginx。