Linux--部署 Tomcat 及其负载均衡

1.案例前置知识点

1)Tomcat简介

       名称由来:Tomcat最初是由 Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变 为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的 书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希 望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(公猫)。而O1Reilly 出版的介绍Tomcat的书籍的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。

       其实Tomcat最早在开始研发的时候并不叫这个名字,早期Tomcat项目的名字叫Cataline,所以 当我们安装完Tomcat 后会发现安装路径下面有很多和Catalina有关的目录和文件,而这些文件通常也是我们使用或者配置Tomcat的重要文件。

2)应用场景

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

3.案例环境

本案例环境,如下所示。

主机                              操作系统                               IP地址                  主要软件

Tomcat 服务器     apache-tomcat-8.5.16.tar.gz      192.168.184.101     CentOS 7.3 x86_64 

5.1.2案例实施

1.实施准备

(1)关闭 firewalld防火墙。

[root@node01 ~]# systemctl stop firewalld

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

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

2.查看JDK是否安装

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

[root@node01 ~]# java -version

3.安装配置Tomcat

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

[root@node01 ~]# ftp 172.16.37.13ftp> cd 软件下载/y2/y2cftp> lsftp> get apache-tomcat-8.5.16.tar.gz
ftp> get nginx-1.12.0.tar.gzftp> exit[root@node01 ~]# tar zxf apache-tomcat-8.5.16.tar.gz 
[root@node01 ~]# ls

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

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

(3) 启动tomcat。

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

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

[root@node01 ~]# netstat -anpt | grep 8080

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

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

4.Tomcat 配置相关说明

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

[root@node01 ~]# cd /usr/local/tomcat8/
[root@node01 tomcat8]# ll

(1)主要目录说明。

I--—bin/:存放Windows或Linux平台上启动和关闭 Tomcat 的脚本文件。

|一--conf/:存放Tomcat服务器的各种全局配置文件,其中最重要的是 server.xml 和 web.xml。

I---lib/:存放Tomcat运行需要的库文件(JARS)。

I---logs:存放Tomcat 执行时的LOG文件。

|---webapps:Tomcat 的主要Web发布目录(包括应用程序示例)。

|---work:存放JSP编译后产生的 class 文件。

(2)配置文件说明。

[root@node01 tomcat8]# ll conf/

catalina.policy:权限控制配置文件。

catalina.properties:Tomcat属性配置文件。

context.xml:上下文配置文件。

logging.properties:日志log相关配置文件。

server.xml:主配置文件。

tomcat-users.xml:manager-gui管理用户配置文件(Tomcat安装后提供一个manager-gui的管理 界面,通过配置该文件可以开启访问)。

web.xml:Tomcat的servlet、servlet-mapping、filter、MIME等相关配置。

7. 建立 java 的 Web 站点

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

[root@node01 ~]# mkdir -pv /web/webapp1

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

[root@node01 ~]# vim /web/webapp1/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><title>JSP test1 page</title></head><boby><% out.println("Welcom to test site,http//www.test1.com");%></body>
</html>[root@node01 ~]# more /web/webapp1/index.jsp 

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

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

[root@node01 ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Context docBase="/web/webapp1" path="" reloadable="false" ></Context>                              //docBase:web应用的文档基准目录//reloadable设置监视"类"是否变化//path=""设置默认"类"

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

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

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

5.2 案例:Nginx+Tomcat 负载均衡群集

5.2.1案例分析

1.案例概述

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

       本案例我们将讲解以Nginx作为负载均衡器,Tomcat作为应用服务器的负载群集的设置方法。 网站拓扑架构如图5.4所示。

2.案例环境 本案例环境如下所示。

表5-2案例环境

操作系统                          主机                            IP地址                             主要软件

Nginx服务器            CentOS 7.3 x86_64       192.168.184.200            nginx-1.12.0.tar.gz

Tomcat 服务器1      CentOS 7.3 x86_64        192.168.184.101:8080   apache-tomcat-8.5.16.tar.gz

Tomcat 服务器2      CentOS 7.3 x86_64        192.168.184.10:8080     apache-tomcat-8.5.16.tar.gz

5.2.2案例实施

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@node02 ~]# vim /web/webapp1/index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><title>JSP test2 page</title></head><boby><% out.println("Welcom to test site,http//www.test2.com");%></body>
</html>

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

2. Nginx服务器配置

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

(1)关闭防火墙。

(2)安装相关软件包。

[root@node03 ~]# cd /etc/yum.repos.d/[root@node03 yum.repos.d]# lsCentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo[root@node03 yum.repos.d]# mv * /opt/
[root@node03 yum.repos.d]# ls
[root@node03 yum.repos.d]# vim local.repo
[root@node03 yum.repos.d]# cd[root@node03 ~]# mount /dev/cdrom /mnt/mount: /dev/sr0 写保护,将以只读方式挂载[root@node03 ~]# yum -y install pcre-devel zlib-devel openssl-devel
[root@node03 ~]# yum -y install ftp.x86_64 

(3)解压并安装Nginx。

[root@node03 ~]# groupadd www
[root@node03 ~]# useradd -g www www -s /bin/false
root@node03 ~]# tar zxf nginx-1.12.0.tar.gz 
[root@node03 ~]# cd nginx-1.12.0/
[root@node03 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//--user=,--group=                指定运行的用户和组
//--with-file-aio                 启用文件修改支持
//--with-http_stub_status_module  启用状态统计
//--with-http_gzip_static_module  启用gzip静态压缩
//--with-http_flv_module          启用f1v模块,提供寻求内存使用基于时间的偏移量文件
//--with-http_ssl_module          启用SSL模块[root@node03 nginx-1.12.0]# make
[root@node03 nginx-1.12.0]# make install

(4)配置nginx.conf。

① 在 http {…} 中加入以下代码,设定负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大。为了使测试效果比较明显,我们把权重设置为一样。

[root@node03 ~]# vim /usr/local/nginx/conf/nginx.confupstream tomcat_server {server 192.168.184.101:8080 weight=1;server 192.168.184.10:8080  weight=1;}

② 在 http {…} - server {…} - location / {…} 中加入一行 “proxy_pass http://tomcat_server;"。

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

③ 把Nginx的默认站点通过proxy_pass方法代理到了设定好的tomcat_server 负载均衡服务器组上。配置完成的nginx.conf 文件内容如下。

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

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

(6)启动Nginx服务。

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

(7)查看Nginx服务进程。

[root@node03 ~]# ps aux | grep nginx

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

[root@node03 ~]# netstat -anpt | grep nginx

3.测试负载均衡效果

(1)打开浏览器访问:http://192.168.184.200/。

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

                                                           图5.5 test1的测试页面 

                                                            图5.6 test2的测试页面 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年第二届“华数杯”国际大学生数学建模竞赛 (A题 MCM)| 废水扩散分析 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看华数杯的A题&#xff01; 完整内容可以在文章末…

OpenCV-Python(34):FAST算法

目标 理解 FAST 算法的基础使用OpenCV 中的FAST 算法相关函数进行角点检测 介绍 FAST算法&#xff08;Features from Accelerated Segment Test&#xff09;是一种用于在图像中快速检测角点的算法。它是一种基于像素的检测方法&#xff0c;具有高效、准确的特点&#xff0c;常…

基于信号完整性的PCB设计原则

最小化单根信号线质量的一些PCB设计建议 1. 使用受控阻抗线&#xff1b; 2. 理想情况下&#xff0c;所有信号都应该使用完整的电源或地平面作为其返回路径&#xff0c;关键信号则使用地平面作为返回路径&#xff1b; 3. 信号的返回参考面发生变化时&#xff0c;在尽可能接近…

压力测试+接口测试(工具jmeter)

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因 为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是…

几内亚ECTN是什么?怎么办理?建议收藏!

几内亚ECTN是什么&#xff1f;怎么办理&#xff1f;建议收藏&#xff01; 一、去往几内亚的货物&#xff0c;从六月一日开始强制实施ECTN制度&#xff0c;取消原来并行的ENS制度。如若货物到港前没申请ECTN&#xff0c;几内亚海关将会强行扣货。 ECTN是英文&#xff1a;ELECTR…

Angular系列教程之自定义指令

文章目录 前言指令的基本概念在模板中使用指令总结 前言 在Angular中&#xff0c;指令是一种非常强大的工具&#xff0c;用于扩展HTML元素的功能和行为。它们允许我们创建可重用的组件&#xff0c;并在应用程序中的多个地方使用它们。本文将介绍Angular指令的基础知识&#xf…

散列函数,哈希表hash table

附上一句话&#xff1a;我知道大家可能曾经了解过这个散列表了&#xff0c;我发现&#xff0c;如果多看几个相关的视频&#xff0c;从不同的表述方式和不同的理解角度来理解这个问题&#xff0c;我会明白的更透彻&#xff0c;也有更多新的收获&#xff0c;尤其是对这个算法的应…

ElasticSearch降本增效常见的方法 | 京东云技术团队

Elasticsearch在db_ranking 的排名不断上升&#xff0c;其在存储领域已经蔚然成风且占有非常重要的地位。 随着Elasticsearch越来越受欢迎&#xff0c;企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢&#xff1f;今天我们就特地来聊聊ES降本增效的常见方法&#x…

Android 仿快手视频列表,RecyclerView与Banner联动效果

这是看到群里讨论过快手APP的一个观看他人视频列表的一个联动效果&#xff0c;但是并不是完全按照这个软件的效果来做的&#xff0c;只是参考&#xff0c;并不是完全仿照这个软件来做的&#xff0c;没时间去优化排版问题了&#xff0c;请见谅&#xff0c;如图&#xff1a; 实现…

ADA-YOLO:YOLOv8+注意力+Adaptive Head,mAP提升3%

生物医学图像分析中的目标检测和定位至关重要&#xff0c;尤其是在血液学领域&#xff0c;检测和识别血细胞对于诊断和治疗决策至关重要。虽然基于注意力的方法在各个领域中目标检测方面取得了显著的进展&#xff0c;但由于医学影像数据集的独特挑战&#xff0c;其在医学目标检…

cad的模型怎么打散导入3d---模大狮模型网

将CAD中的模型打散并导入3D建模软件&#xff0c;需要以下步骤&#xff1a; 将CAD中的模型进行分组或分层&#xff1a;在CAD中&#xff0c;将模型按照不同的组或层进行分组或分层。这样可以方便地控制每个部分的显示和隐藏&#xff0c;在导入3D建模软件后&#xff0c;也可以更方…

(超详细)2-YOLOV5改进-添加SimAM注意力机制

1、在yolov5/models下面新建一个SimAM.py文件&#xff0c;在里面放入下面的代码 代码如下&#xff1a; import torch import torch.nn as nnclass SimAM(torch.nn.Module):def __init__(self, e_lambda1e-4):super(SimAM, self).__init__()self.activaton nn.Sigmoid()self…

[开发语言][c++]:Static关键字和全局变量

Static关键字和全局变量 1. 生命周期、作用域和初始化时机2. 全局变量3. Static 关键字3.1 面向过程3.1.1 静态全局变量3.1.2 静态局部变量&#xff08;单例中会使用&#xff09;3.1.3 静态函数 3.2 面向对象3.2.1 类内静态成员变量3.2.2 类内静态成员函数 Reference 写在前面&…

使用@Slf4j后引入log,idea标红

引入Slf4j注解 idea标红Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到时&#xff0c;不妨关闭菜单再打开试下

概率论与数理统计————古典概型、几何概型和条件概率

一、古典概型 特点 &#xff08;1&#xff09;有限性&#xff1a;试验S的样本空间的有限集合 &#xff08;2&#xff09; 等可能性&#xff1a;每个样本点发生的概率是相等的 公式&#xff1a;P&#xff08;A&#xff09; A为随机事件的样本点数&#xff1b;S是样本…

5.3 Verilog 带参数例化

5.3 Verilog 带参数例化 分类 Verilog 教程 关键词&#xff1a; defparam&#xff0c;参数&#xff0c;例化&#xff0c;ram 当一个模块被另一个模块引用例化时&#xff0c;高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块…

STC8H8K蓝牙智能巡线小车——1. 环境搭建(基于RTX51操作系统)

1. 基本介绍 开发环境准备&#xff1a;Keil uVision5 烧录软件&#xff1a;STC-ISP&#xff08;V6.92A&#xff09; 芯片&#xff1a; STC8H8K64U-45I-LQFP64 芯片引脚&#xff1a; 2.创建项目 打开Keil&#xff0c;点击【Project】&#xff0c;选择【new uVersion proje…

网页设计(八)HTML5基础与CSS3应用

一、当当网企业用户注册页面设计 当当网企业用户注册页面 改版后当当网企业用户注册页面 <!-- prj_8_1.html --> <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>当当网企业用户注册页面设计</title><s…

LLM漫谈(三)| 使用Chainlit和LangChain构建文档问答的LLM应用程序

一、Chainlit介绍 Chainlit是一个开源Python包&#xff0c;旨在彻底改变构建和共享语言模型&#xff08;LM&#xff09;应用程序的方式。Chainlit可以创建用户界面&#xff08;UI&#xff09;&#xff0c;类似于由OpenAI开发的ChatGPT用户界面&#xff0c;Chainlit可以开发类似…

Kafka消费流程

Kafka消费流程 消息是如何被消费者消费掉的。其中最核心的有以下内容。 1、多线程安全问题 2、群组协调 3、分区再均衡 1.多线程安全问题 当多个线程访问某个类时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么就称这个类是线程安全的。 对于线程安全&…