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

news2024/11/19 6:25:09

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.13

ftp> cd 软件下载/y2/y2c

ftp> ls

ftp> get apache-tomcat-8.5.16.tar.gz
ftp> get nginx-1.12.0.tar.gz

ftp> 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]# ls

CentOS-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.conf

upstream 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.coloradmin.cn/o/1389826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(-代码)

Python是一种功能强大的编程语言&#xff0c;它提供了许多库和工具&#xff0c;用于处理和可视化数据。在本文中&#xff0c;我们将介绍使用Python绘制热力图&#xff0c;并对VOC数据集中的类别标签进行分布及数量统计。 首先&#xff0c;我们需要导入所需的库。使用numpy库来…

【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

SpringBoot 源码解析4:refresh 方法解析

SpringBoot 源码解析4&#xff1a;refresh 方法解析 1. refresh 方法解析2. 准备刷新 AbstractApplicationContext#prepareRefresh3. 获取bean工厂 AbstractApplicationContext#obtainFreshBeanFactory4. 准备bean工厂 AbstractApplicationContext#prepareBeanFactory5. Servle…

Windows解决.conda文件夹占用C盘空间过大的问题

背景&#xff1a;C盘空间被.conda文件占用16G&#xff0c;主要原因是里面存放了python环境&#xff0c;提前进行环境迁移&#xff0c;防止后面环境增长C盘空间不足 解决办法&#xff1a; 1. .conda文件备份 2. 将.conda文件夹中的envs内容复制到Anaconda的安装目录下D:\Softwa…

HNU-编译原理-实验2-Bison

编译原理实验2Bison 计科210X 甘晴void 202108010XXX 实验要求 详细的实验项目文档为 https://gitee.com/coderwym/cminus_compiler-2023-fall/tree/master/Documentations/lab2 实验步骤 本次实验需要在 Lab1 已完成的 flex 词法分析器的基础上&#xff0c;进一步使用 b…

车机联网

通过笔记本电脑&#xff0c;D-link给车机提供网络 因为笔记本用的无线网络上网&#xff0c;将无线网络连接设置为共享 设置后的效果 本地连接属性设置 Dlink连接电脑和车机&#xff1b;获取车机的动态ip&#xff08;动态ip每次开关机都会变化&#xff0c;注意更新&#xff09…

【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片

目录 1 导入PIL模块&#xff08;pillow&#xff09; 1.1 PIL的全称&#xff1a;Python Imaging Library 1.2 导入PIL模块 1.2.1 可用的导入形式 1.2.2 常用的导入形式 1.2.3 PIL下面的常用子模块 2 PIL.Image的方法 (读入&#xff0c;生成和显示图片) 2.1 用 PIL.Image…

《教育》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教育》以教育行业的各类新闻为重点&#xff0c;积极推广各地教育部门改革经验及优秀成果&#xff0c;努力挖掘教育一线先进单位和个人&#xff0c;充分发挥新闻舆论的监督作用。 收录情况&#xff1a;知网收录 投稿方式&#xff1a;教育类&#xff5c;《教育》省级 出版周期&…

GPT2 GPT3

what is prompt 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评) 综述2. Paradigm Shift in Natural Language Processing(四星推荐) 综述3. Pre-Trained Models: Past, Present and Future Pro…

Vue学习笔记5-- nextTick | Vue封装的过渡与动画

一、nextTick(tick-工作&#xff0c;起作用&#xff1b;下次起作用&#xff09; 语法&#xff1a; this.$nextTick(回调函数&#xff09;作用&#xff1a;在下一次DOM更新结束后执行其指定的回调。什么时候用&#xff1a;当改变数据后&#xff0c;要基于更新后的新DOM进行某些…

虾皮电商 电商平台:虾皮(Shopee)东南亚领先的电子商务平台

在当今数字化时代&#xff0c;电子商务平台的兴起改变了人们的购物方式。虾皮&#xff08;Shopee&#xff09;作为东南亚地区领先的电子商务平台&#xff0c;为消费者提供了便捷、多样化的购物体验。由新加坡的Sea Group&#xff08;前称Garena&#xff09;于2015年创立&#x…

程序员书单|本月有哪些新书值得关注?

2024年的第一个月&#xff0c;看了一下计算机书籍的榜单&#xff0c;本周有这样几本新书上榜。 1、GPT图解 大模型是怎样构建的 带你从0到1构建大模型&#xff0c;突破语言奥秘&#xff0c;开启智能未来&#xff01;深入探索自然语言处理技术的核心原理&#xff0c;结合实战&a…

【Linux】第二十九站:再谈进程地址空间

文章目录 一、一些疑问二、程序没有加载前的地址&#xff08;程序)三、程序加载后的地址四、动态库的地址 一、一些疑问 什么是虚拟地址&#xff1f;什么是物理地址&#xff1f;CPU读到的指令里面用的地址&#xff0c;是什么地址&#xff1f;&#xff1f; 我们之前在使用动态…

将web如vue等项目部署到宝塔docker镜像中,以便能在任意浏览器访问

文章目录 一、准备工作二、具体步骤1、从已经推送的镜像中拉取镜像2、切换到宝塔-容器&#xff0c;添加容器3、启动容器4、将刚刚的端口号添加到防火墙白名单5、访问部署好的项目 参考资料 一、准备工作 仅需确认宝塔面板已经有docker镜像容器 目前新版宝塔面板都已经内置了d…

数据结构之list类

前言 list是列表类。从list 类开始&#xff0c;我们就要接触独属于 Python 的数据类型了。Python 简单、易用&#xff0c;很大一部分原因就是它对基础数据类型的设计各具特色又相辅相成。 话不多说&#xff0c;让我们开始学习第一个 Python 数据类型一list。 1. list的赋值 输…

做完十年数据分析后的思考与总结

种一棵树最好的时间是十年前&#xff0c;其次是现在。十年了&#xff0c;本次分享大多来自工作中的日常所思所想&#xff0c;欢迎自取。 01 数据分析的本质 数据是基础&#xff0c;分析才是重点。 行业内有专门的统计岗&#xff0c;就是只负责做好数据统计就可以了&#xff0…

使用pycocotools打印更多数据(注意,修改后最好再还原!最好是一次性使用)

文章目录 1 写在前面2 代码效果3 代码修改 1 写在前面 夹带私货&#xff0c;可能有用呢&#xff1a;YOLOv7-tiny&#xff0c;通过pycocotools包得到预测大中小尺寸目标的指标值 仅供参考&#xff01;写这个代码的目的是能够打印出iou0.50的AP、AR的小中大3个尺寸的值&#xff…

记录汇川:H5U与Factory IO测试14

现实53工位的物料运输。 设置了自动连续存启动&#xff1a;就是一个一个运&#xff0c;按照顺序将空的货架填满。 设置了自动连续存停止&#xff1a;就是完成当前循环后退出。 设置了自动连续取启动&#xff1a;就是一个一个运&#xff0c;按照顺序将有货的货架清空。 设置…

Linux系统:yum仓库

目录 一、yum 1、yum概述 2、yum仓库 3、yum实现过程原理 二、yum配置文件详解 1、主配置文件 2、yum仓库设置文件 3、yum日志文件 三、yum命令详解 1、查询 1.1 yum list [软件名] 1.2 yum info [软件名] 1.3 yum search <关键词> 1.4 yum provides <关…