7.nginx实现后端tomcat的负载均衡调度
7.nginx实现后端tomcat的负载均衡调度
1. 实验架构
2. 负载均衡主机和网络地址规划
10.0.0.8 proxy.magedu.org 调度器 Nginx
10.0.0.18 t1.magedu.org tomcat1 JDK8、Tomcat9
10.0.0.28 t2.magedu.org tomcat2 JDK8、Tomcat9
3.配置DNS实现域名解析
[root@centos7 ~]# service named restart
Redirecting to /bin/systemctl restart named.service
[root@centos7 ~]# hostname -I
10.0.0.7
[root@centos7 ~]# nslookup t1.magedu.org
Server: ::1
Address: ::1#53
Name: t1.magedu.org
Address: 10.0.0.18
[root@centos7 ~]# nslookup t2.magedu.org
Server: ::1
Address: ::1#53
Name: t2.magedu.org
Address: 10.0.0.28
[root@centos7 ~]# nslookup proxy.magedu.org
Server: ::1
Address: ::1#53
Name: proxy.magedu.org
Address: 10.0.0.8
4.tomcat主机配置
修改tomcat的虚拟机主机为自定义的主机名,并设为默认的虚拟主机
4.1.安装jdk+tomcat
4.2.修改主机名并生成jsp页面文件
Tomcat1:
[root@CentOS8 ~]# hostnamectl set-hostname t1.magedu.org;exit
[root@t1 ~]# hostname
t1.magedu.org
生成项目目录
[root@t1:~]# mkdir /data/webapps/ROOT -pv
生成index.jsp页面
[root@t1 data]# vim /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>t1.magedu.org</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
修改默认主机为t1.magedu.org,并添加对应的虚拟主机,在</Host>之下添加,
[root@t1 data]# vim /usr/local/tomcat/conf/server.xml
.....
<Engine name="Catalina" defaultHost="t1.magedu.org">
....
</Host>
<Host name="t1.magedu.org" appBase="/data/webapps/"
unpackWARs="true" autoDeploy="true">
</Host>
.....
[root@t1 data]# chown -R tomcat.tomcat /data/webapps/
[root@t1 data]# systemctl restart tomcat
Tomcat2:
[root@CentOS8 ~]# hostnamectl set-hostname t2.magedu.org;exit
[root@t2 ~]# hostname
t2.magedu.org
[root@t2 ~]# mkdir /data/webapps/ROOT -pv
[root@t2 ~]# vim /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>t2.magedu.org</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
修改默认主机为t2.magedu.org,并添加对应的虚拟主机,在</Host>之下添加,
[root@t2 ~]# vim /usr/local/tomcat/conf/server.xml
.....
<Engine name="Catalina" defaultHost="t2.magedu.org">
....
</Host>
<Host name="t2.magedu.org" appBase="/data/webapps/"
unpackWARs="true" autoDeploy="true">
</Host>
.....
[root@t2 ~]# chown -R tomcat.tomcat /data/webapps/
[root@t2 ~]# systemctl restart tomcat
5. nginx主机实现代理
1.修改nginx配置文件,添加负载均衡,指定location路径
[root@centos7 ~]# vim /etc/nginx/nginx.conf
...........
upstream tomcat-server {
server t1.magedu.org:8080;
server t2.magedu.org:8080;
}
server {
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat-server;
}
}
............
[root@centos7 ~]# nginx -s reload
5. client进行测试测试
http://proxy.magedu.com/index.jsp,可以看到轮询调度效果,每次刷新后端主机和SessionID都会变化.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~