我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nginx中怎么利用Tomcat搭建集群

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nginx中怎么利用Tomcat搭建集群

这篇文章将为大家详细讲解有关Nginx中怎么利用Tomcat搭建集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创建Maven项目,添加依赖

使用IntelliJ IDEA创建Maven项目,并添加相关依赖,依赖如下:

<dependencies>        <!-- Jedis -->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.9.0</version>        </dependency>        <!-- Spring Data Redis -->        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-redis</artifactId>            <version>1.8.4.RELEASE</version>        </dependency>        <!-- Spring Session -->        <dependency>            <groupId>org.springframework.session</groupId>            <artifactId>spring-session</artifactId>            <version>1.3.1.RELEASE</version>        </dependency>        <!-- Apache Commons Pool -->        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-pool2</artifactId>            <version>2.4.2</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-webmvc</artifactId>            <version>${spring-framework.version}</version>        </dependency>    </dependencies>

这里要添加的依赖略多,不过大致可以分为如下三类:

Redis的Java客户端,这个通过Java代码来操作Redis
2.Spring Data Redis,这个用来简化Redis操作
3.Spring Session,这个用来进行Session的管理
4.Spring

搭建Spring+SpringMVC环境

首先在resources文件夹下创建spring+springmvc的配置文件:
Nginx中怎么利用Tomcat搭建集群
然后在web.xml文件中配置spring和springmvc,如下:

<context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext.xml</param-value>    </context-param>    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring-servlet.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>

然后在applicationContext.xml文件中简单的配置一下spring,如下:

<context:component-scan base-package="org.sang" use-default-filters="false">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan>

配置Spring容器要扫描的注解。
然后在spring-servlet.xml中配置SpringMVC容器要扫描的注解,如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <mvc:annotation-driven/>    <context:component-scan base-package="org.sang" use-default-filters="false">        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan></beans>

spring-servlet.xml的配置相对要简单一些。
OK,至此,Spring+SpringMVC的环境就搭建成功了。

配置Spring Session和Redis

Session一直是我们做集群时一个比较头疼的问题,之前有一个GitHub上的开源控件tomcat-redis-session-manager,但是这个东西目前只支持到Tomcat7,不是最佳选项,我们也可以使用Nginx提供的ip_tables,将同一个请求ip定位到同一台服务器上,但是这样没有办法充分利用服务集群的性能,Spring Session的出现可以很好的帮助我们解决这些问题,它具有如下特点:

Spring Session提供了redis、jvm的map、mongo、gemfire、hazelcast、jdbc等多种存储session的容器的方式。
2.同一个浏览器同一个网站,支持多个session。
3.不依赖于cookie。可通过header来传递sessionID
4.WebSocket和spring-session结合,同步生命周期管理。
5.使用简单

OK,接下来我们来看看怎么配置我们的Spring Session,首先在web.xml文件中添加过滤器:

<filter>        <filter-name>springSessionRepositoryFilter</filter-name>        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>    </filter>    <filter-mapping>        <filter-name>springSessionRepositoryFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

这里使用了Spring Web提供的代理过滤器,将拦截到的请求全部交给一个名为springSessionRepositoryFilter的过滤器进行处理。OK,然后在applicationContext.xml中配置Spring Session和Redis,如下:

<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">        <property name="hostName" value="192.168.248.128"/>        <property name="port" value="6379"/>        <property name="database" value="0"/>    </bean>

hostName即为redis的地址,port为redis的服务端口。

OK,写完这一切就OK了,我们来写一个简单的jsp页面测试一下,测试前记得启动你的redis服务哦。

测试

index.jsp页面如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body><form action="/setsession">    <input type="text" name="name"><input type="submit" value="提交"></form><form action="/getsession">    <input type="submit" value="获取"></form></body></html>

该页面我尽量做得简单,有两个按钮,第一个向session中存数据,第二个按钮从session中取数据,对应的Controller如下:

@Controllerpublic class HelloController {    @RequestMapping("/setsession")    @ResponseBody    public void setSession(HttpSession session, String name) {        session.setAttribute("name", name);    }    @RequestMapping(value = "/getsession",produces = "text/html;charset=utf-8")    @ResponseBody    public String getSession(HttpSession session, HttpServletRequest req) {        return session.getAttribute("name").toString()+"-----"+req.getServletContext().getRealPath("/");    }}

当我向httpsession中写数据时,这些数据会自动存储到redis缓存/数据库中。在返回session数据时我加上了项目部署路径,是为了在部署到集群上之后区分这个请求是由哪台服务器处理的。启动项目,页面如下:
Nginx中怎么利用Tomcat搭建集群
点击提交,会将数据保存到redis 中,如下:
Nginx中怎么利用Tomcat搭建集群
然后再回到起始页面,点击获取按钮,即可以拿到Session中的值,如下:
Nginx中怎么利用Tomcat搭建集群
OK,很简单吧!
至此,我们的Spring Session+Redis实现Session共享这个功能就完成了。接下来我们来看看如何为这个简单的web项目搭建集群。

搭建集群的准备工作

下载Nginx(地址http://nginx.org/),我这里使用的Nginx版本是nginx-1.12.0
2.下载Tomcat,我这里使用的Tomcat版本是apache-tomcat-8.5.12

网络拓扑图如下:
Nginx中怎么利用Tomcat搭建集群
将下载的Tomcat复制成两份,如下:
Nginx中怎么利用Tomcat搭建集群
修改Tomcat的配置文件(conf/server.xml),重新设置端口号,每一个Tomcat的server.xml都需要修改三处,如下:
Nginx中怎么利用Tomcat搭建集群
要修改的地方有三处,我将给默认的端口号前面都加1,然后第二个Tomcat我给这三个地方的端口号前面都加2,这样方便我一会在同一台机器上跑多个Tomcat。
OK,做好这一切之后,可以先启动这两个Tomcat,看看能不能正常访问。

部署项目

OK,两台Tomcat都配置好之后,我们将刚才的项目拷贝到tomcat的webapps目录下,给两个Tomcat都拷贝。这里就不赘述了。

配置Nginx

下载Nginx,解压后,配置conf/nginx.conf文件,如下:
Nginx中怎么利用Tomcat搭建集群
配置完成后,启动nginx。再测试。

测试

向session中存数据:
Nginx中怎么利用Tomcat搭建集群
从session中取数据:
多取几次,你会看到请求是由不同的服务器处理的,如下:
Nginx中怎么利用Tomcat搭建集群
Nginx中怎么利用Tomcat搭建集群

关于Nginx中怎么利用Tomcat搭建集群就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nginx中怎么利用Tomcat搭建集群

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx中怎么利用Tomcat搭建集群

这篇文章将为大家详细讲解有关Nginx中怎么利用Tomcat搭建集群,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建Maven项目,添加依赖使用IntelliJ IDEA创建Maven项目
2023-06-19

怎么搭建Nginx和Tomcat的web集群环境

本篇内容介绍了“怎么搭建Nginx和Tomcat的web集群环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一直以来对于web服务器对to
2023-06-04

怎么使用Nginx搭建WCF集群

这篇文章主要介绍“怎么使用Nginx搭建WCF集群”,在日常操作中,相信很多人在怎么使用Nginx搭建WCF集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Nginx搭建WCF集群”的疑惑有所帮助!
2023-06-27

Linux环境搭建Nginx和Tomcat负载均衡集群

本篇内容介绍了“Linux环境搭建Nginx和Tomcat负载均衡集群”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Tomcat服务器是一个
2023-06-04

Kubernetes集群怎么搭建

本篇内容介绍了“Kubernetes集群怎么搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kubernetes 是一个可移植的、可扩展的
2023-06-27

怎么用docker搭建elasticsearch集群

本篇内容主要讲解“怎么用docker搭建elasticsearch集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用docker搭建elasticsearch集群”吧!概述用docker进
2023-06-19

nginx搭建高可用集群的实现方法

本文主要介绍了nginx搭建高可用集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-28

怎么在MySQL中搭建PXC集群

本篇文章给大家分享的是有关怎么在MySQL中搭建PXC集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、PXC 介绍1.1 PXC 简介PXC 是一套 MySQL 高可用集
2023-06-15

docker mysql集群怎么搭建

要搭建Docker MySQL集群,可以按照以下步骤进行操作:安装Docker:在每个节点上安装Docker引擎。创建Docker网络:创建一个Docker网络,用于连接MySQL容器。docker network create mysq
2023-10-27

mysql高可用集群怎么搭建

mysql 高可用集群是一种数据库架构,提供高可用性、容错性和可扩展性。搭建步骤包括:1. 准备基础设施;2. 安装 mysql 并配置集群模式;3. 配置复制,设置主从节点;4. 配置 galera 集群,启用多主机复制;5. 配置监控和
mysql高可用集群怎么搭建
2024-05-22

CentOS7怎么搭建高可用集群

这篇文章主要讲解了“CentOS7怎么搭建高可用集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS7怎么搭建高可用集群”吧!一、安装集群软件必须软件pcs,pacemaker,c
2023-06-28

centos6.9怎么搭建pxc集群

这篇文章主要讲解了“centos6.9怎么搭建pxc集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“centos6.9怎么搭建pxc集群”吧!一:环境介绍:10.1.32.49 10.1.
2023-06-05

docker怎么搭建redis集群

要搭建Redis集群,可以使用Docker来简化部署过程。下面是一些搭建Redis集群的步骤:首先,确保已经安装了Docker和Docker Compose,并且在命令行中可以正常使用。创建一个目录来保存Redis集群的配置文件和数据文件。
2023-10-26

Ubuntu怎么搭建Kubernetes集群

这篇文章主要介绍“Ubuntu怎么搭建Kubernetes集群”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Ubuntu怎么搭建Kubernetes集群”文章能帮助大家解决问题。关于 Kuberne
2023-07-04

怎么用Docker-Compose搭建Spark集群

这篇文章主要讲解了“怎么用Docker-Compose搭建Spark集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Docker-Compose搭建Spark集群”吧!docker-
2023-06-30

kubernetes集群怎么搭建和使用

要搭建和使用Kubernetes集群,可以按照以下步骤进行操作:1. 安装Docker:Kubernetes需要在每个节点上安装Docker来运行容器。2. 安装Kubernetes Control Plane:可以使用Kubeadm、Mi
2023-08-24

利用Docker Swarm实现Nginx的高可用集群(Docker Swarm如何助力构建Nginx高可用集群?)

通过DockerSwarm编排,可以构建Nginx高可用集群,提升可用性、性能和可扩展性。集群中的多个Nginx实例提供冗余,自动故障转移确保服务在故障时保持可用。Swarm提供负载均衡,将请求分布到集群实例,提升性能。最佳实践包括使用适当的负载均衡算法、监控集群状态、执行滚动更新和测试故障转移。
利用Docker Swarm实现Nginx的高可用集群(Docker Swarm如何助力构建Nginx高可用集群?)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录