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

5.1. 引言

在Web应用开发中,随着访问量的增加,单个服务器往往难以承受高并发请求,同时对于静态资源和动态资源的处理也需要进行分离以提高效率。Nginx因其强大的静态资源处理能力和高并发支持,常被用作反向代理和负载均衡器;而Tomcat则以其轻量级和强大的Servlet/JSP支持,成为处理动态请求的首选。本文将详细介绍如何搭建Nginx+Tomcat的负载均衡与动静分离群集。

5.2. 环境准备

5.2.1 主机与软件环境

本案例涉及三台服务器,分别用于部署Nginx和两台Tomcat实例。具体环境如下:

|------------|-------------------|----------------|-----------------------------|
| 主机名 | 操作系统 | IP地址 | 主要软件 |
| Nginx服务器 | CentOS 7.3 x86_64 | 192.168.10.101 | nginx-1.12.0.tar.gz |
| Tomcat服务器1 | CentOS 7.3 x86_64 | 192.168.10.102 | apache-tomcat-8.5.16.tar.gz |
| Tomcat服务器2 | CentOS 7.3 x86_64 | 192.168.10.103 | apache-tomcat-8.5.16.tar.gz |

5.2.2 前期准备

1. 关闭防火墙

:在所有服务器上关闭firewalld防火墙。

[root@localhost ~]# systemctl stop firewalld 
 [root@localhost ~]# setenforce 0

2.安装JDK

:Tomcat运行需要JDK环境,确保所有Tomcat服务器上已安装JDK,并设置环境变量。

如未安装,可通过yum安装OpenJDK。

5.2.3. Tomcat部署

1 安装Tomcat

1.下载并解压Tomcat
bash 复制代码
[root@localhost ~]# tar xf apache-tomcat-8.5.16.tar.gz 
[root@localhost ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
2.启动Tomcat
bash 复制代码
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
3.验证Tomcat是否启动成功
bash 复制代码
通过浏览器访问http://:8080,查看Tomcat默认页面。

2 配置Tomcat

1.修改server.xml

在Tomcat的conf/server.xml文件中,可以修改端口号、定义虚拟主机等。

XML 复制代码
<Connector port="8080" protocol="HTTP/1.1"         
    connectionTimeout="20000"            
     redirectPort="8443" />   
     <Host name="localhost" appBase="webapps"  
           unpackWARs="true" autoDeploy="true">     
            <Context docBase="/web/webapp1" path="" reloadable="false">  
           </Context>  
       </Host>
2.创建Web应用目录

在/web/webapp1目录下创建JSP测试页面。

XML 复制代码
[root@localhost ~]# mkdir -pv /web/webapp1 
[root@localhost ~]# vim /web/webapp1/index.jsp

编辑index.jsp文件,添加JSP代码。

3.重启Tomcat
bash 复制代码
[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

3. Nginx配置

1.安装nginx
bash 复制代码
[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc*
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz 
[root@localhost ~]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
2:编辑测试网页文件
bash 复制代码
[root@localhost ~]# vim /usr/local/nginx/html/index.html <body> <h1>静态页面</h1> <p>这是个静态页面</p> </body>
3:添加图片
bash 复制代码
[root@nginx ~]# mkdir /usr/local/nginx/html/img //创建静态文件目录 
[root@nginx ~]# cp /root/logo.jpg /usr/local/nginx/html/img
4:修改主配置文件
bash 复制代码
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
(1)在http配置项中添加
bash 复制代码
upstream tomcat_server { server 192.168.10.102:8080 weight=1; server 192.168.10.103:8080 weight=1; }
(2)在server配置项中添加
XML 复制代码
charset utf-8;
location / {
       root   html;
       index  index.html index.htm;
}

location ~ .*\.jsp$ {
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Client-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://tomcat_server;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        root /usr/local/nginx/html/img;
        expires 30d;
}

5:启动nginx

XML 复制代码
[root@localhost ~]# nginx

6:修改tomcat的配置文件,并重启tomcat

XML 复制代码
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%a %r %t %{X-Real-IP}i" resolveHosts="false" />

6:测试

浏览器打开网站

(1)静态网站测试

http://192.168.10.101

(2)动态网站测试

http://192.168.10.101/index.jsp

相关推荐
这个需求建议不做1 小时前
vue3打包配置 vite、router、nginx配置
前端·nginx·vue
&星辰入梦来&1 小时前
Nginx从入门到入土(三): 静态资源管理与代理服务
运维·nginx·负载均衡
苹果醋33 小时前
SpringCloud系列之一---搭建高可用的Eureka注册中心
运维·nginx
丶21366 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
hanniuniu137 小时前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡
m0_635502207 小时前
Spring Cloud Gateway组件
网关·微服务·负载均衡·过滤器
骑鱼过海的猫1239 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
qmx_079 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战10 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
寻爱的希斯克利夫16 小时前
tomcat 配置jenkins_home 目录
servlet·tomcat·jenkins