Nginx负载均衡、动静分离Tomcat案例实战

news/发布时间2024/5/20 14:17:39

一、前言

1)Tomcat是一款开源的、免费的WEB软件服务器,是隶属于Apache基金会旗下的,主要是用于去发布网站代码、提供网页信息服务的。用户通过浏览器可以实现网站页面的访问。
2)Tomcat WEB软件默认可以处理静态网页(Apache、Nginx),同时也可以处理动态网页,主要是处理JSP动态网页,JSP(Java Server Pages)是基于Java语言开发的动态网站程序。
静态网页:一般是跟后端数据库不发生交互的网页,网页内容很少更新或者几乎不更新的,其网页文件后缀命名通常是.htm、.html、.xml等结尾的。
动态网页:一般是跟后端数据库发生交互的网页,网页内容经常更新或者随着后端数据库内容变化而更新的,其网页文件后缀命名通常是.asp、.jsp、.php等结尾的。
3)Java、JDK、Tomcat三者之间的关系?
Java是一门面向对象的编程语言,JDK是Java语言开发的环境、SDK工具包,同时JDK也是Java程序运行所需的环境(JRE:JVM虚拟机+Java类、库),Tomcat软件自身是基于Java语言开发的。
4)基于CentOS、Rocky Linux 9.x系统,部署一套Tomcat WEB集群(提前配置JDK环境),采用二进制Tar包方式。部署的方法和指令如下:

#从Apache官网下载tomcat软件包;
ls -l apache-tomcat-9.0.7.tar.gz
#通过Tar工具对其解压;(-x extract解压,-z gzip压缩格式,-v verbose详细显示,-f file文件属性)
tar -xzvf apache-tomcat-9.0.7.tar.gz
#Cd切换至Tomcat解压目录;
cd apache-tomcat-9.0.7/
#创建4个Tomcat实例的部署目录;
for i in $(seq 1 4);do mkdir -p /usr/local/tomcat_v$i.jfedu.net/ ;done
#将解压后的Tomcat程序文件拷贝至部署目录即可;
for j in `seq 1 4`;do \cp -a * /usr/local/tomcat_v$j.jfedu.net/ ;done
#修改4个Tomcat服务端口(8005:8001-8004   8080:8081-8084  8009:8111-8114);
for i in $(seq 1 4);do sed -i "s/8005/800$i/g;s/8080/808$i/g;s/8009/811$i/g" /usr/local/tomcat_v$i.jfedu.net/conf/server.xml ;done
#将4个Tomcat实例server.xml文件中HTTP协议端口找出来;
for i in $(find /usr/local/tomcat_v* -name server.xml);do grep -aiE "HTTP/1.1" $i ;done |grep -aiE "port="|awk -F\" '{print $2}'|sort -n|uniq
#启动4个Tomcat服务进程;
for m in $(seq 1 4);do /usr/local/tomcat_v$m.jfedu.net/bin/startup.sh ;sleep 5;done
#查看Tomcat服务进程;
ps -ef|grep -aiE tomcat
#查看4个Tomcat监听端口;
netstat -tnlp|grep -aiwE "java"
#Firewalld防火墙对外开放Tomcat HTTP协议端口;
for port in $(for i in $(find /usr/local/tomcat_v* -name server.xml);do grep -aiE "HTTP/1.1" $i ;done |grep -aiE "port="|awk -F\" '{print $2}'|sort -n|uniq );do firewall-cmd --add-port=$port/tcp --permanent ;done ;firewall-cmd --reload ;firewall-cmd --list-all 

根据如上Tomcat WEB集群实战,用户通过浏览器可以访问服务器IP地址+8081-8084,即可访问Tomcat测试页面,如图所示:
http://192.168.101.128:8081/

http://192.168.101.128:8082/

http://192.168.101.128:8083/

http://192.168.101.128:8084/

二、Nginx负载均衡、动静分离Tomcat集群

1)在企业生产环境中,Tomcat WEB集群不会直接放在网站最前端去提供访问,通常会引入负载调度器:LVS、Haproxy、Nginx,将Nginx和Tomcat集群整合形成一个完整的WEB架构,Nginx、Tomcat整合的意义:
负载均衡:
用户通过浏览器向Nginx发起Request请求,Nginx WEB会将请求转发(均衡分发、采用RR轮训方式)至后端4个Tomcat机器上,进而实现负载均衡,提高系统的性能。
反向代理:
用户通过浏览器向Nginx发起Request请求,Nginx WEB会将请求转发至后端Tomcat集群,后端Tomcat处理完成之后会将数据返回给Nginx,最终由Nginx返回给用户。
动静分离:
用户通过浏览器向Nginx发起Request请求,Nginx WEB检测到用户请求的静态网页,那么Nginx则直接处理。如果检测到用户请求的动态网页,Nginx是不能直接处理的,那么Nginx 会将动态网页请求转发至后端Tomcat去处理。
2)基于Nginx负载均衡、反向代理后端4个Tomcat WEB集群,修改nginx.conf配置文件添加upstream、proxy_pass参数,nginx.conf配置文件代码如下所示:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcat_web {
         server 192.168.101.128:8081 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8082 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8083 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8084 weight=100 max_fails=2 fail_timeout=15s;  
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
             proxy_pass http://tomcat_web;
             proxy_set_header host $host;
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

http://192.168.101.130/

3)基于Nginx负载均衡、反向代理、动静分离后端4个Tomcat WEB集群,修改nginx.conf配置文件添加upstream、proxy_pass参数,nginx.conf配置文件代码如下所示:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcat_web {
         server 192.168.101.128:8081 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8082 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8083 weight=100 max_fails=2 fail_timeout=15s;
         server 192.168.101.128:8084 weight=100 max_fails=2 fail_timeout=15s;  
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
             proxy_pass http://tomcat_web;
             proxy_set_header host $host;
            root   html;
            index  index.html index.htm;
        }
         location ~ .*\.(htm|html|js|css|txt|jpg|jpeg|gif|png)$
         {
             root html;
             expires 30d;
         }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
} 

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/15231374.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

dotnet 9 WPF 支持 Style 的 Setter 填充内容时可忽略 Value 标签

本文记录 WPF 在 dotnet 9 的一项 XAML 编写语法改进点,此改进点用于解决编写 Style 的 Setter 进行给 Value 赋值时,不能将 Value 当成默认内容,需要多写 Value 标签的问题。通过此改进点可减少两行 XAML 代码在原先的 WPF 版本里面,对 Style 的 Setter 填充复杂的对象内容…

WDS+MDT网络启动自动部署windows(十七)MDT中文变量,描述,组织单位OU

简介 这简直就是歧视,在MDT使用变量时,数据库设置时,居然不能用中文。 计算机描述,我将在数据库中设置为使用人,主要是其他地方也不方便看。 描述是存在注册表中的,未来自动化也将会使用使用人这个字段,用来注册OCS这样,有标签,使用人字段的软件。 方向 解决MDT/BDD无…

WDS+MDT网络启动自动部署windows(十六)计算机自动进入指定OU

简介 新装计算机总是在默认电脑,不方便配置终端计算机策略权限。 要想办法让MDT装好的计算机,自动进入指定组织单位OU。 dsquery 大概意思是 domain server query ,就是域服务器搜索的意思。 在域控执行 dsquery ou 先看看OU是怎么用LDAP表示的。 从左到右,OU,逐级的组…

OpenVX技术图例(二)

OpenVX技术图例(二) 参考文献链接 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/tiovx/docs/user_guide/index.html人工智能芯片与自动驾驶

Linux Shell 脚本专题

本文介绍了Linux Shell环境变量和脚本使用的常用知识点。V1.0 2024年5月8日 发布于博客园目录常用环境变量一、环境变量的概念1、环境变量的含义2、环境变量的分类3、Linux环境变量二、常用的环境变量1、查看环境变量2、常用的环境变量三、设置环境量1、系统环境变量2、用户环境…

注册表延长Windows更新时间

打开注册表【Win】+【R】打开运行窗口输入regedit在输入框中输入计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings后回车在右侧空白处选择新建->DWORD(32位)值(D)命名为FlightSettingsMaxPauseDays,选中10进制数据数值为暂停更新的天数。 确定后关…