部署Tomcat及其负载均衡

简介

        在前面已经学习了Nginx服务器的安装配置,本章主要采用案例课的形式介绍Tomcat及Nginx+Tomcat负载均衡群集。Tomcat案例首先介绍其应用场景,然后重点介绍Tomcat的安装配置,Nginx+Tomcat负载均衡群集案例是应用于生产环境下的一套可靠的Web站点解决方案。

应用场景

        Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,Tomcat虽然和Apache或者Nginx这些Web服务器一样,具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常是作为一个Servlet和JSP容器,单独运行在后端。

一、部署Tomcat

1.实施准备

(1)关闭firewalld防火墙

[root@love ~]# systemctl stop firewalld

(2)在安装 Tomcat 之前必须先安装JDK。 JDK的全称是Java Development Kit,是Sun公司免费提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。编写好的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。

        在平台兼容性方面,JDK作为解释字节码文件并据此调用操作系统API实现对应功能的Java虚拟机,与操作系统类型和平台位数密切相关,因此存在不同类型的版本,而Tomcat也具有上述特征,默认情况下JDK已经安装,所以需要预先下载Tomcat,本章中所使用的Tomcat软件的源码包为apache-tomcat-8.5.16.tar.gz。

2.查看JDK是否安装

        运行java-version命令查看Java是否安装。如果没有安装需要自行下载安装。

3.安装配置Tomcat

(1)解压apache-tomcat-8.5.16.tar.gz包。

[root@love ~]# tar xf apache-tomcat-8.5.16.tar.gz

(2)解压后生成apache-tomcat-8.5.16文件夹,将该文件夹移动到/usr/local/下,并改名为
tomcat7。

[root@love ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8

(3)启动tomcat

        Tomcat默认运行在8080端口,运行netstat命令查看8080端口监听的信息。

(4)打开浏览器访问测试:http://192.168.19.10:8080/,如果出现以下界面,则
表示Tomcat 已经启动成功。

        如果想关闭Tomcat,则运行/usr/local/tomcat8/bin/shutdown.sh命令。

4.Tomcat配置相关说明

        Tomcat的主目录为/usr/local/tomcat8/。

(1)主要目录说明。

  • ---bin/:存放Windows或Linux平台上启动和关闭Tomcat的脚本文件。
  • ---conf/:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml。
  • ---lib/:存放Tomcat运行需要的库文件(JARS)。
  • ---logs:存放Tomcat执行时的LOG文件。
  • ---webapps:Tomcat的主要Web发布目录(包括应用程序示例)。
  • ---work:存放JSP编译后产生的class文件。

(2)配置文件说明。

  • catalina.policy:权限控制配置文件。
  • catalina.properties:Tomcat属性配置文件.
  • context.xml:上下文配置文件。
  • logging.properties:日志log相关配置文件。
  • server.xml:主配置文件。
  • torcat-users.xml:manager-gui管理用户配置文件(Tomcat安装后提供一个manager-gui的管理界面,通过配置该文件可以开启访问)。
  • web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相关配置。
5.Tomcat主配置文件说明

        server.xml为Tomcat的主要配置文件,通过配置该文件,可以修改Tomcat的启动端口、网站目录、虚拟主机、开启https等重要功能。
        整个server.xml由以下结构构成:< Server>、<Service>、<Connector/>、< Engine>、<Host>、<Context>、</Context>、</Host>、</Engine>、</Service>和</Server>。
        以下是默认安装后server.xml文件的部分内容,其中 <!--        -- >内的内容是注释信息,黑色斜体部分是我们需要注意和需要经常更改的部分。

6.Tomcat Server的组成部分说明

(1)Server

        Server元素代表了整个Catalina的servlet容器。

(2) Service

        Service 是这样一个集合:它由一个或者多个Connector,以及一个Engine(负责处理所Connector所获得的客户请求)组成。

(3)Connector

        一个Connector在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户。
        Tomcat 有两个典型的 Connector,一个直接侦听来自browser的http请求,一个侦听来自其他WebServer 的请求。
        Coyote Http/1.1 Connector在端口8080处侦听来自客户browser的http请求。
        Coyote JK2 Connector在端口8009处侦听来自其他WebServer(Apache)的servlet/jsp代理求。

(4)Engine

        Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名。当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理。Engine 有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理。

(5)Host

        Host 代表一个Virtual Host,即虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path。
        当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context 来处理匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context。
        所有无法和其他Context的路径名匹配的请求都将最终和该默认Context 匹配。

(6)Context

         一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成。

7.建立java的Web站点

(1)在根目录下建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件。

[root@love ~]# mkdir -pv /web/webappl

(2)在webapp1目录下建立一个index.jsp的测试页面。

[root@love ~]# vim /web/webappl/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>JSP test1 page</title>
  </head>
  <body>
    <% out.println("Welcom to test site,http://www.testl.com");%>
  </body>
</html>

[root@love ~]# more /web/webappl/index.jsp

(3)修改Tomcat的server.xml文件。

        定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,在host段增加context段。(加在149行下面)

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

<Context docBase="/web/webappl" path="" reloadable="false" >
</Context>

(4)关闭Tomcat,再重新启动。

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

(5)通过浏览器访问http://172.16.16.172:8080/,出现以下页面,说明该Tomcat
站点已经配置成功,并且已经能够运行JSP了。

二、Nginx+Tomcat负载均衡集群

案例环境、概述

        通常情况下,一台Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构。
        Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。
        本案例我们将讲解以Nginx 作为负载均衡器,Tomcat 作为应用服务器的负载群集的设置方法。

主机操作系统IP 地址主要软件
Nginx 服务器CentOS7.3 x86_64192.168.19.20nginx-1.12.0.tar.gz
Tomcat 服务器1CentOS7.3 x86_64192.168.19.10:8080apache-tomcat-8.5-16.tar.gz
Tomcat 服务器2CentOS7.3 x86_64192.168.19.30:8080apache-tomcat-8.5-16.tar.gz
1.Tomcat2 server配置

        Tomcat2 server配置方法基本同Tomcat1,其中包括:

(1)关闭防火墙。
(2)确认是否安装JDK,JAVA版本与Tomcat1 server保持一致。
(3)安装配置 Tomcat,版本与Tomcat1 server保持一致。
(4)创建/web/webapp1目录,修改Tomcat配置文件server.xml,将网站文件目录更改到/web/webapp1/路径下。
(5)在/web/webapp1/路径下建立 index.jsp,为了区别将测试页面index.jsp的内容更改如下。

[root@love ~]# vim /web/webappl/index.jsp

<html>
  <head>
    <title>JSP test2 page</title>
  </head>
  <body>
    <% out.println("Welcom to test site,http://www.test2.com");%>
  </body>
</html>

(6)启动Tomcat,浏览器访问Tomcat2 server,测试 http://192.168.19.30:8080/。

2.Nginx服务器配置

        在Nginx 服务器192.168.19.20上安装Nginx,反向代理两个Tomcat站点,并实现负载均衡。

(1)关闭防火墙。

(2)安装相关软件包.

[root@love ~]# yum -y install pcre-devel zlib-devel opemssl-devel

(3)解压并安装Nginx。

[root@love ~]# groupadd www
[root@love ~]# useradd -g www www -s /bin/false
[root@love ~]# tar xf nginx-1.12.0.tar.gz 
[root@love ~]# cd nginx-1.12.0/
[root@love nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module
[root@love nginx-1.12.0]# make
[root@love nginx-1.12.0]# make install

(4)配置nginx.conf

[root@love ~]# vim /usr/local/nginx/conf/nginx.conf

upstream tomcat_server {
          server 192.168.19.10:8080 weight=1;
          server 192.169.19.30:8080 weight=1;
    }

    location / {
        root   html;
        index  index.html index.htm;
        proxy_pass    http://tomcat_server;
    }

(5)测试Nginx配置文件是否正确

[root@love ~]# /usr/local/nginx/sbin/nginx -t

(6)启动Nginx服务

[root@love ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

(7)查看Nginx服务进程

(8)查看端口号及PID进程号

3.测试负载均衡效果

(1)打开浏览器访问:http://192.168.19.20/。
(2)不断刷新浏览器测试,可以看到由于权重相同,页面会反复在以下两个页面来回切换。第一次访问,出现test1的测试页面,如下图1。刷新后,第二次访问,出现test2的测试页面,如下图2。这说明负载均衡群集搭建成功,已经可以在两个Tomcat server站点进行切换了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/317171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

006集 正则表达式 re 应用实例—python基础入门实例

正则表达式指预先定义好一个 “ 字符串模板 ” &#xff0c;通过这个 “ 字符串模 板” 可以匹配、查找和替换那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模块&#xff0c;主要是用来处理正则表达式&#xff0c;还可以利用 re 模块通过正则表达式来进行网页数据的爬取…

NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态

原文&#xff1a;3 Modularity, Objects, and State 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 变化中安宁 &#xff08;即使它在变化&#xff0c;它仍然保持不变。&#xff09; ——赫拉克利特 变化越大&#xff0c;越是相同。 ——阿方斯卡尔 前面的章节介绍了构…

C++学习笔记——友元、嵌套类、异常

目录 一、友元 一个使用友元的示例代码 输出结果 二、嵌套类 一个使用嵌套类的示例代码 输出结果 三、异常 一个使用异常处理的示例代码 输出结果 四、结论 五、使用它们的注意事项 上一篇文章链接&#xff1a; C中的继承和模板是非常强大和灵活的特性&#xff0c;它…

C++学习笔记——标准模板库

目录 一、简介 二、STL概述 2.1STL是什么&#xff1f; 2.2STL的优势 三、容器&#xff08;Containers&#xff09; 3.1序列式容器&#xff08;Sequence Containers&#xff09; 3.2关联式容器&#xff08;Associative Containers&#xff09; 3.3容器适配器&#xff08;…

轻松批量重命名不同路径文件:从1到N的单独编号指南

在处理大量文件时&#xff0c;有时要批量重命名这些文件。整理、归档或是进行其他类型的处理。但不同的文件可能位于不同的路径下&#xff0c;增加了批量重命名的复杂性。下面来看云炫文件管理器如何批量重命名不同路径下的文件&#xff0c;从1到N单独编号的方法。 不同路径文件…

考研经验总结——目录

文章目录 一、写作顺序二、个人情况说明三、读评论四、一些小牢骚五、一些注意事项&#xff08;持续更新&#xff09; 一、写作顺序 我将准备从三个阶段开始介绍吧 考研前考研中考研后&#xff08;也就是现在我的这种情况&#xff09; 考研前我会分为&#xff1a;数学、专业…

三轴加速度计LIS2DW12开发(3)----检测活动和静止状态

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

vue3+vite开发生产环境区分

.env.development VITE_APP_TITLE本地.env.production VITE_APP_TITLE生产-ts文件中应用 console.log(import.meta.env.VITE_APP_TITLE)在html中应用&#xff0c;需要安装 html 模板插件 pnpm add vite-plugin-html -Dvite.config.ts中 import { createHtmlPlugin } from v…

python|切片

切片的语法格式 object[start_index:end_index:step] &#xff08;1&#xff09;step步长&#xff1a;有正负&#xff0c;正表示正着走&#xff0c;负表示负着走&#xff0c;步长的绝对值代表一步走的距离。 &#xff08;其中&#xff0c;在深度学习中卷积也有步长的说法&…

从比特币、以太坊生态,到AI与新公链复兴,谁将接棒2024年的主流叙事?

2023年10月份至今&#xff0c;现货比特币ETF一直都是促使市场反弹的核心叙事之一&#xff0c;如今靴子终于落地&#xff0c;那在ETF预期尘埃落定的大背景下&#xff0c;接下来的加密市场有哪些赛道值得关注&#xff1f; 泛比特币生态 2023年比特币生态浪潮中&#xff0c;OKX等赢…

什么是数通技术?以太网交换机在数通技术中的精要

什么是数通技术&#xff1f; 数通技术是指数字通信技术&#xff0c;它涵盖了数字信号处理、数据传输、网络通信等领域。通信工程师在数通技术中负责设计、建设和维护数字通信系统&#xff0c;以实现可靠、高效的信息传输。这涉及到数字信号的编解码、调制解调、数据压缩、网络…

【论文解读】SiamMAE:用于从视频中学习视觉对应关系的 MAE 简单扩展

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://siam-mae-video.github.io/resources/paper.pdf 项目主页&#xff1a;https://siam-mae-video.github.io/ 1.背景 时间是视觉学习背景下的一个特殊维度&#xff0c;它提供了一…

QT上位机开发(加密和解密)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 加密和解密是我们在软件开发中经常遇到的一种情形。最早的时候&#xff0c;加密是用在军事上面。现在由于各个行业、各个公司之间的竞争也非常激烈…

Kafka的安装、管理和配置

Kafka的安装、管理和配置 1.Kafka安装 官网: https://kafka.apache.org/downloads 下载安装包,我这里下载的是https://archive.apache.org/dist/kafka/3.3.1/kafka_2.13-3.3.1.tgz Kafka是Java生态圈下的一员&#xff0c;用Scala编写&#xff0c;运行在Java虚拟机上&#xf…

不会 python 语言没关系,GPT 会呀

在日常办公或者是编程过程中&#xff0c;经常要处理一些琐碎的任务。就拿编程来说&#xff0c;假如你现在收到一个任务&#xff0c;要提取源代码中所有的字符串&#xff0c;进行国际化。 一般来说&#xff0c;很多软件开发工具提供了国际化方案&#xff0c;比如 QT&#xff0c;…

x-cmd pkg | fx - Warp 支持的 JSON 查看和处理工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 fx 是一款由专为 JSON 定制的双用途命令行工具&#xff0c;提供基于终端的 JSON 查看器和 JSON 处理实用程序。虽然 JSON 查看器是用 Go 编写的&#xff0c;并且无需外部依赖即可运行&#xff0c;但 JSON 处理工具是用…

openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话

文章目录 openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话196.1 强制结束指定的问题会话196.1.1 问题现象196.1.2 处理办法 openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话 196.1 强制结束指定的…

实验室服务器升级

cuda、python、pytorch 版本兼容查看顺序及网站 任务&#xff1a; 在一个有GPU的电脑上安装pytorch时选择合适版本。 简述&#xff1a; 安装 pytorch 时&#xff0c;若要使用 GPU&#xff0c;需要考虑与 CUDA&#xff0c;python 的版本兼容情况。推荐考虑顺序&#xff1a;CUD…

NUS CS1101S:SICP JavaScript 描述:四、元语言抽象

原文&#xff1a;4 Metalinguistic Abstraction 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 …魔法就在于文字——Abracadabra&#xff0c;开门&#xff0c;以及其他——但一个故事中的魔法词在另一个故事中并不神奇。真正的魔法是理解哪些词起作用&#xff0c;何时…

Jenkins创建maven项目

Jenkins创建maven项目 环境准备 如果在项目没有看到maven&#xff0c;需要下载插件 本机需要有maven&#xff0c;并且maven配置过国内镜像&#xff0c;否则很大概率插件下不下来&#xff0c;如果有docker之前没有配置过需要进入docker手动配置。 需要在全局中配置maven的set…