Nginx+Tomcat群集

**Nginx + Tomcat 集群**

Nginx 和 Tomcat 集群的组合是一种常见且强大的架构方案,旨在实现高可用性、可扩展性和高性能的 Web 应用服务。

Nginx 是一款轻量级的高性能 Web 服务器和反向代理服务器。它能够高效地处理静态资源请求,并将动态请求转发到后端的 Tomcat 服务器。其优点包括:
-- 出色的并发处理能力,能够同时处理大量的连接请求。
-- 低资源消耗,在硬件资源有限的情况下仍能保持良好性能。

Tomcat 则是一个流行的 Java Servlet 容器,用于运行 Java Web 应用程序。

在构建 Nginx + Tomcat 集群时,通常会采用以下方式:
-- 负载均衡:Nginx 作为前端的负载均衡器,根据配置的策略将请求分发到后端的多个 Tomcat 实例上。例如,可以基于轮询、加权轮询、IP 哈希等算法进行分发。
-- 高可用性:通过监控 Tomcat 实例的状态,当某个实例出现故障时,Nginx 能够自动将请求转发到其他正常运行的实例上,确保服务的连续性。

举例来说,如果一个电商网站面临大量的用户访问,使用 Nginx + Tomcat 集群可以确保:
--在促销活动期间,即使访问量激增,系统也能快速响应,不会出现卡顿或崩溃。
-- 当某个 Tomcat 服务器进行维护或出现故障时,用户的购物体验不会受到影响,仍能正常浏览和下单。

总之,Nginx + Tomcat 集群为企业提供了一种可靠且高效的解决方案,以满足不断增长的业务需求和用户访问量。

1:关闭防火墙

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

2:安装java环境

[root@localhost ~]# yum -y install java
[root@localhost ~]# java -version

3:安装tomcat

[root@localhost ~]# tar zxvf apache-tomcat-9.0.8.tar.gz 
[root@localhost ~]# mv apache-tomcat-9.0.8 /usr/local/tomcat8

4:启动tomcat

[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
[root@localhost ~]# netstat -anpt | grep java

5:创建测试网页

[root@localhost ~]# mkdir -p /web/webapp1
[root@localhost ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<html>   
<head>
     <title>JSP test1 page</title>
</head>
   <body>
     <% out.println("动态页面 1,http://www.test1.com");%>
   </body> 
   <body> 
    <div>动态页面的图片 1</div><br><img src="logo.jpg"> 
   </body> 
</html>

6:修改tomcat主配置文件

[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml 

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Context docBase="/web/webapp1" path="" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

7:重启tomcat

[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh 

8:客户端访问测试

二:nginx配置(在192.168.10.101)

1:安装nginx

[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:编辑测试网页文件

[root@localhost ~]# vim /usr/local/nginx/html/index.html 
<body> 
<h1>静态页面</h1> 
<p>这是个静态页面</p> 
</body>

3:添加图片

[root@nginx ~]# mkdir /usr/local/nginx/html/img //创建静态文件目录 
[root@nginx ~]# cp /root/logo.jpg /usr/local/nginx/html/img

4:修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
(1)在http配置项中添加
upstream tomcat_server {
        server 192.168.10.102:8080 weight=1;
        server 192.168.10.103:8080 weight=1;
}


(2)在server配置项中添加
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

[root@localhost ~]# nginx

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

   <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. Zookeeper+Kafka

    2024-07-10 04:42:05       50 阅读
  2. Redis-主从、哨兵、

    2024-07-10 04:42:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 04:42:05       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 04:42:05       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 04:42:05       57 阅读
  4. Python语言-面向对象

    2024-07-10 04:42:05       68 阅读

热门阅读

  1. FlutterWeb渲染模式及提速

    2024-07-10 04:42:05       27 阅读
  2. Docker容器基础:Docker的安装与基本使用

    2024-07-10 04:42:05       28 阅读
  3. 【Python】多语言识别库 langid

    2024-07-10 04:42:05       30 阅读
  4. 海致科技实施实习生面试

    2024-07-10 04:42:05       20 阅读
  5. go获取正在运行的函数并及时捕获panic

    2024-07-10 04:42:05       23 阅读
  6. C语言中的static关键字

    2024-07-10 04:42:05       30 阅读
  7. LeetCode 202. 快乐数

    2024-07-10 04:42:05       29 阅读
  8. halcon学习

    2024-07-10 04:42:05       30 阅读
  9. MySQL快速安装(mysql8.0.30区别之前yum安装)

    2024-07-10 04:42:05       24 阅读