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

相关推荐
何中应20 小时前
Nginx转发请求错误
前端·后端·nginx
大大水瓶1 天前
Tomcat
java·tomcat
芝士雪豹只抽瑞克五1 天前
Nginx 高性能Web服务器笔记
服务器·nginx
失重外太空啦2 天前
Tomcat
java·服务器·tomcat
屎到临头想搅便2 天前
TOMCAT
java·tomcat
失重外太空啦2 天前
nginx
运维·nginx
大大水瓶2 天前
HAProxy 从入门到实战:负载均衡与流量管理全解析
运维·负载均衡
微风起皱2 天前
企业级WEB应用服务器TOMCAT
java·前端·tomcat
天蓝不会忘记022 天前
lvs,haproxy,keepalived,nginx,tomcat介绍和实验
nginx·tomcat·lvs