首页 > 系统相关 >nginx实现后端tomcat的负载均衡调度

nginx实现后端tomcat的负载均衡调度

时间:2023-10-07 15:37:40浏览次数:35  
标签:10.0 负载 tomcat magedu nginx org root localhost


1.负载均衡主机和网络地址规划
10.0.0.152 proxy.magedu.org nginx
10.0.0.150 t1.magedu.org tomcat1
10.0.0.160 t2.magedu.org tomcat2
#只需在10.0.0.52的nginx主机上实现域名解析
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.152 proxy.magedu.org proxy
10.0.0.150 t1.magedu.org t1
10.0.0.160 t2.magedu.org t2

2.负载均衡tomcat主机准备
修改tomcat的虚拟机主机为自定义的主机名,并设为默认的虚拟主机
t1虚拟主机配置conf/server.xml
[root@centos8 ~]#vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="t1.magedu.org">
   <Host name="t1.magedu.org" appBase="/data/webapps" autoDeploy="true" >
   </Host>
</Engine>
[root@centos8 ~]#systemctl restart tomcat

t2虚拟主机配置conf/server.xml
[root@centos8 ~]#vim /usr/local/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="t2.magedu.org">
   <Host name="t2.magedu.org" appBase="/data/webapps" autoDeploy="true" >
   </Host>
</Engine>
[root@centos8 ~]#systemctl restart tomcat

3.准备负载均衡规划测试用的jsp文件
#在t1和 t2节点创建相同的文件/data/webapps/ROOT/index.jsp
[root@centos8 ~]#mkdir -pv /data/webapps/ROOT
mkdir: created directory '/data/webapps'
mkdir: created directory '/data/webapps/ROOT'
[root@centos8 ~]#vim /data/webapps/ROOT/index.jsp
[root@centos8 ~]#cat /data/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</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>
[root@centos8 ~]#chown -R tomcat.tomcat /data/webapps/

4.Nginx 实现后端 tomcat 的负载均衡
[root@localhost ~]# yum install -y nginx
[root@localhost ~]# vim /etc/nginx/nginx.conf
#在http模块中添加一下几行
upstream tomcat {
server t1.magedu.org:8080;
server t2.magedu.org:8080;
}
server {
server_name proxy.magedu.org;
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat;
}
}

[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl http://proxy.magedu.org/index.jsp

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On tomcat</div>
<div>10.0.0.150:8080</div>
<div>SessionID = <span style="color:blue">23B0399E91F79E1F934E1AA087BB26D0</span></div>
Fri Dec 31 21:55:40 CST 2021
</body>
</html>
[root@localhost ~]# curl http://proxy.magedu.org/index.jsp

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On tomcat</div>
<div>10.0.0.160:8080</div>
<div>SessionID = <span style="color:blue">306D4E2B1415782E799AE991EFA3286C</span></div>
Fri Dec 31 21:55:45 CST 2021
</body>
</html>

#可以看到轮询调度效果,每次刷新后端主机和SessionID都会变化

5.实现 session 黏性
#在upstream中使用ip_hash指令,使用客户端IP地址Hash。
[root@localhost ~]# vim /etc/nginx/nginx.conf
#在http模块中添加一下几行
upstream tomcat {
ip_hash;
server t1.magedu.org:8080;
server t2.magedu.org:8080;
}
server {
server_name proxy.magedu.org;
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat;
}
}
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl http://proxy.magedu.org/index.jsp

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On tomcat</div>
<div>10.0.0.160:8080</div>
<div>SessionID = <span style="color:blue">36DA811FDAEFC13070FE522BC206E68D</span></div>
Fri Dec 31 21:58:53 CST 2021
</body>
</html>

[root@localhost ~]# curl http://proxy.magedu.org/index.jsp

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tomcat test</title>
</head>
<body>
<div>On tomcat</div>
<div>10.0.0.160:8080</div>
<div>SessionID = <span style="color:blue">39CC514BF59EBC8244BF2CD510EE2419</span></div>
Fri Dec 31 21:58:55 CST 2021
</body>
</html>
#用curl访问每次都调度到10.0.0.160主机上,但因为curl每次请求不会自动携带之前获取的cookie,所有SessionID每次都在变化
#通过图形浏览器可看到主机不变,sessionID不变

 

标签:10.0,负载,tomcat,magedu,nginx,org,root,localhost
From: https://www.cnblogs.com/tanll/p/17746405.html

相关文章

  • 总结tomcat优化方法
     ##1、概述Tomcat的运行依赖于JVM,从虚拟机的角度把Tomcat的调整分为外部环境调优和Tomcat自身调优两部分##2、外部环境JVM调优Tomcat首先跑在JVM之上的,因为它的启动其实也只是一个java命令行,首先我们需要对这个JAVA的启动命令行进行调优。帮助:manjava......
  • 编译安装nginx,实现多域名 https
     #编译安装nginx[root@centos8~]#yum-yinstallgccpcre-developenssl-develzlib-devel[root@centos8~]#useradd-s/sbin/nologinnginx[root@centos8~]#cd/usr/local/src/[root@centos8src]#wgethttp://nginx.org/download/nginx-1.18.0.tar.gz......
  • nginx负载均衡中常见的算法及原理有哪些?
     #1)轮询(round-robin) 轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。 特点:由于......
  • 总结查看系统负载的几种命令,总结top命令的指标大概什么含义
    [12:57:20root@centos8~]#uptime12:57:22up2min, 1user,loadaverage:0.12,0.15,0.07​12:57:22up2min系统当前时间12:57:22,up表示系统运行的状态,开机运行了2分钟​1user一个用户登录系统​loadaverage:0.12,0.15,0.07 表示最近1,5,15分钟的系统负载情......
  • 低代码平台如何借助Nginx实现网关服务
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在典型的系统部署架构中,应用服务器是一种软件或硬件系统,它承载着应用程序的核心逻辑。它接收客户端的请求并处理相应的业务逻辑、数......
  • 华为云云耀云服务器L实例评测 | 3分钟搞懂如何在华为云服务器安装Nginx并配置静态访问
    文章目录一、什么是Nginx?二、申请华为云服务器三、使用XShell连接华为云服务器并安装Nginx四、FileZilla连接服务器五、Linux下安装Nginx❇️配置80端口并关闭Linux防火墙✳️测试六、配置静态html至华为云服务器并访问⚠️在华为服务器新建路径⏰使用Filezilla上传文件至华为云服务器⚡......
  • Nginx__高级进阶篇之LNMP动态网站环境部署
    动态网站和LNMP(Linux+Nginx+MySQL+PHP)都是用于建立和运行web应用程序的技术。动态网站是通过服务器端脚本语言(如PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不同的网页。LNMP是一种服务器端技术组合,它使用Linux操作系统,Ngin......
  • 如何使用『Nginx』配置后端『HTTPS』协议访问
    前言本篇博客主要讲解如何使用Nginx部署后端应用接口SSL证书,从而实现HTTPS协议访问接口(本文使用公网IP部署,读者可以自行替换为域名)申请证书须知请在您的云服务平台申请SSL证书,一般来说证书期限为一年,到期限需要再次申请博主这里使用的是阿里云云服务器,阿里云每年可以免费......
  • Nginx__高级进阶篇之LNMP动态网站环境部署
    动态网站和LNMP(Linux+Nginx+MySQL+PHP)都是用于建立和运行web应用程序的技术。动态网站是通过服务器端脚本语言(如PHP、Python、Ruby等)动态生成网页内容的网站。通过这种方式,动态网站可以根据用户的不同请求生成不同的网页。LNMP是一种服务器端技术组合,它使用Linux操作系统,Nginx......
  • tomcat/logs几种清空catalina.out日志方式
    查看文件大小[root@hblogs]#du-hcatalina.out重定向清空文件[root@hblogs]#>catalina.out重定向true命令清空文件[root@hblogs]#true>catalina.out使用cat/cp/dd命令及/dev/null来清空文件[root@hblogs]#cat/dev/null>catalina.out[root@hblogs]#cp/......