Nginx -- 07 -- 搭建Nginx + Tomcat负载均衡集群
当我们的应用程序部署到服务器上后,在接收大量请求时,单一的服务器终究是无法满足需要处理的负荷量的,另外一旦该服务器发生故障,则该应用程序就无法访问了,因此这个时候就需要用到集群了
既然提到了集群,就不得不再提下另外两个概念:负载均衡和分布式,我们先来了解下这三个概念
-
集群
- 将多台服务器连接起来共同工作,在某种程度上,可以被看作是一台服务器,集群中单台服务器通常称为节点
-
负载均衡
- 将一台服务器上要处理的请求,根据负载均衡算法分配到其他服务器上去处理,从而减少该台服务器的负载,防止因为负载过大而造成响应超时或宕机等意外情况的发生
-
分布式
-
将不同的业务模块部署在不同的服务器上
-
和集群的区别在于
-
集群是将同一个业务部署在多台服务器上
-
分布式是将不同的业务部署在不同的服务器上
-
-
这里我们来搭建一个简单的Tomcat集群并实现负载均衡
一、部署 Nginx 和 Tomcat
首先我们现在服务器上搭建一个 Nginx 和两个 Tomcat,修改两个 Tomcat 的端口 (Tomcat 配置文件中有三个端口号,最好都一起改了),为了方便起见,我将它们命令为 Tomcat001 和 Tomcat002
二、修改 Tomcat 配置文件及默认页
为了一会更好地展示,我们来修改下 Tomcat 的默认页面,其位于 /usr/local/tomcat/apache-tomcat-9.0.17/webapps/ROOT 目录下 (根据自己的安装路径来查找)
Tomcat001
<Server port="8000" shutdown="SHUTDOWN">
<Connector port="8001" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8002" protocol="AJP/1.3" redirectPort="8443" />
<div id="asf-box">
<h1>我是001号Tomcat</h1>
</div>
Tomcat002
<Server port="8003" shutdown="SHUTDOWN">
<Connector port="8004" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8005" protocol="AJP/1.3" redirectPort="8443" />
<div id="asf-box">
<h1>我是002号Tomcat</h1>
</div>
三、修改 Nginx 配置文件
#其余配置省略
http {
#tomcatcluster.com:服务器集群的名字
upstream tomcatcluster.com {
#127.0.0.1:8001:Tomcat001访问地址
#weight:权重大小,权重越大,分配的概率越大
server 127.0.0.1:8001 weight=1;
#127.0.0.1:8004:Tomcat002访问地址
server 127.0.0.1:8004 weight=2;
}
server {
listen 8888;
server_name 127.0.0.1;
location / {
#proxy_pass:代理地址,需要与upstream配置的服务器集群名字相同
proxy_pass http://tomcatcluster.com/;
}
}
}
四、测试
此时我们先启动 Nginx 和 Tomcat,然后在浏览器地址栏中输入 http://xxxxxxxxx:8888 查看运行状态
第一次刷新

第二次刷新

第三次刷新

我们不断地刷新,会发现访问 Tomcat002 的概率是访问 Tomcat001 的 2 倍,这是因为我们之前设置的权重起了作用
四、总结
到此,我们就已经简单地搭建了一个 Nginx + Tomcat 的负载均衡集群,是不是很容易!不过这只是最简单,想要深入了解的话还是要多多学习

浙公网安备 33010602011771号