首页 > 系统相关 >Nginx负载均衡、动静分离Tomcat案例实战

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

时间:2024-05-09 11:44:09浏览次数:25  
标签:负载 Tomcat tomcat 192.168 server Nginx html

一、前言

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;
        }
    }
} 

未完待续。。。

标签:负载,Tomcat,tomcat,192.168,server,Nginx,html
From: https://www.cnblogs.com/yds941268778/p/18181799

相关文章

  • redis、LVS、nginx的基本使用方法
    redis、LVS、nginxredis搭建哨兵原理哨兵搭建至少要有3个机器,且必须为奇数个redis搭建哨兵之前要先实现主从复制;master的配置文件中的masterauth和slave都必须相同实现主从复制之所有从节点配置文件[root@slave~]#yuminstall-yredis[root@slave~]#vim/etc/redis.c......
  • SHELL编程开发Nginx一键部署实战脚本
    一、基于SHELL编程开发Nginx一键部署脚本(Make源码方式),编程思路如下从Nginx官网下载软件包nginx-1.24.0.tar.gz;通过Tar工具对其解压,tar-xzvfnginx-1.24.0.tar.gz;cd切换至nginx-1.24.0/源代码目录;预编译,./configure;编译,make;安装,makeinstall;启动Nginx服务,/usr/local/nginx......
  • [转帖]Nginx流量拷贝 - 运维笔记
    https://www.cnblogs.com/kevingrace/p/14001080.html 一、Nginx的ngx_http_mirror_module模块实现流量复制介绍Nginx专门提供了ngx_http_mirror_module模块,用来实现流量拷贝。将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处:可以验证功能是否正常,以及服务......
  • 从零手写实现 tomcat-05-servlet 处理支持
    创作缘由平时使用tomcat等web服务器不可谓不多,但是一直一知半解。于是想着自己实现一个简单版本,学习一下tomcat的精髓。系列教程从零手写实现apacheTomcat-01-入门介绍从零手写实现apacheTomcat-02-web.xml入门详细介绍从零手写实现tomcat-03-基本的socket实......
  • 解决SpringBoot内置tomcat出现error:An incompatible version [1.2.16] of the Apache
    问题描述在运行SpringBoot时出现一个error2024-05-08T20:52:06.512+08:00ERROR20752---[springboot3-003-demo][main]o.a.catalina.core.AprLifecycleListener:Anincompatibleversion[1.2.16]oftheApacheTomcatNativelibraryisinstalled,wh......
  • NGINX配置记录
    ####NGINX配置记录server{listen80;server_namewww.222.com;charsetutf-8;#roothtml/222/wap/dist;#location/robots.txt{#301重定向#return301http://www.333.com;if($time_iso8601~"(\d{4})-(\d{2})-(\d{2})"......
  • Nginx
    Nginx是一款开源的高性能HTTP服务器和反向代理服务器,用于处理静态内容,维护持久连接,以及提供第七层负载均衡器支持。以下是Nginx的一些主要特性:静态内容服务:Nginx可以处理静态内容,如HTML,图片,CSS,JavaScript等。反向代理:Nginx可以作为代理服务器接收客户端请求,并将请求转发......
  • 微服务Spring Cloud17_负载均衡Ribbon6
    一、概述在刚才的案例中,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。但是实际环境中,往往会开启很多个user-service的集群。此时获取的服务列表中就会有多个,到底该访问哪一个呢?一般这种情况下就需要编写负载均衡算......
  • Linux系统下安装配置 Nginx
    一、下载下载地址:点击跳转有条件的可以直接下载:wget-chttp://nginx.org/download/nginx-1.26.0.tar.gz二、安装解压安装包tar-zxvfnginx-1.26.0.tar.gz移动位置一般安装在usr/local下mvnginx-1.26.0/usr/local/nginx进入nginx目录执行配置脚本cd/usr/local/ng......
  • 从零手写实现 tomcat-03-基本的 socket 实现
    创作缘由平时使用tomcat等web服务器不可谓不多,但是一直一知半解。于是想着自己实现一个简单版本,学习一下tomcat的精髓。系列教程从零手写实现apacheTomcat-01-入门介绍从零手写实现apacheTomcat-02-web.xml入门详细介绍从零手写实现tomcat-03-基本的socket实......