部署Tomcat及其负载均衡

news2024/9/24 9:19:33

简介

        在前面已经学习了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站点进行切换了。

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

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

相关文章

牛仔行头目标检测竞赛 李沐老师Kaggle(有代码有注释)

一、比赛地址 CowBoy Outfits Detection | Kaggle 二、数据介绍 这次比赛的数据集一共有4879个image&#xff0c;需要自己划分训练集和验证集。annotation的格式是json&#xff0c;因此如果用yolo系列的算法会涉及到json2txt这一步。当然如果不用yolo系列的就不要这段代码了。…

[vivado ] report_utilization -name

可以Open Synthesiezed或 Implementation 后的Design使用下面的命令&#xff0c;一定要加-name这个option, 后面的utilization_1可以可以自定义。 report_utilization -name utilization_1

【Python机器学习】分类器的不确定估计——预测概率

predict_proba的输出是每个类别的概率&#xff0c;通常比decision_function的输出更容易理解&#xff0c;对于二分类问题&#xff0c;它的形状始终是(n_samples,2)。 import mglearn.tools from sklearn.ensemble import GradientBoostingClassifier from sklearn.datasets im…

从DETR到Mask2Former(3):masked attention的attention map可视化

Mask2Former的论文中有这样一张图&#xff0c;表示masked attenion比cross attention效果要好 那么这个attention map是怎么画出来的&#xff1f; 在mask2attention的源代码中 CrossAttentionLayer这个类中&#xff0c;在forward_post函数中做如下修改&#xff1a; def forwar…

轴组【CAN】

如果有126个轴&#xff0c;你程序里挨个添加轴很麻烦。 可以用轴组批量添加。【数组】 CAN驱动器 0x164 就是下个驱动器 p_CAN主站地址:ADR(IoConfig_Globals.CANopen_Manager_SoftMotion);p_CAN从站地址1:ADR(IoConfig_Globals.DMA882_CAN);p_CAN从站地址2:ADR(IoConfig_Gl…

重磅!OpenAI正式发布,自定义ChatGPT商店!

1月11日凌晨&#xff0c;OpenAI在官网正式发布了&#xff0c;自定义GPT商店&#xff0c;可以帮助用户找到目前最好用、流行的自定义ChatGPT助手。 在2024年第一季度&#xff0c;OpenAI将启动GPT 开发者收入计划。首先&#xff0c;美国地区的开发者将根据用户对其 GPT 的使用情…

HTML--超链接

超链接 作用&#xff1a;点击跳转到相应位置 a标签 语法&#xff1a; <a href"链接地址">文本或图片</a>范例&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"/><title>跳转到百度</t…

蓝桥杯单片机进阶教程4——需要分配进程的模块

前言&#xff1a; 【蓝桥杯单片机保姆级教学】 https://www.bilibili.com/video/BV1h3411m7Aw/?p117&share_sourcecopy_web&vd_sourcec4fc67867c5218768e783d04475bc5a2 P117-118 比赛的时候也按照这个顺序来写 一、数码管显示 分析考题 &#xff08;1&#xff09;…

大文件上传切片上传

大文件上传&切片上传 简历中如何写项目经验&技术 切片上传相关面试题 基础实现流程 实现核心&#xff1a;秒传 断点续传 切片 …… 如何实现的 最基本的视图 加上拖拽 加上拖拽事件。监听drop事件&#xff0c;event.dataTransfer.files文件对象。其他dragenter dragove…

odoo17基础培训1-odoo开发基础知识准备以及odoo17开发环境安装

odoo17基础培训 一、odoo开发基础知识准备以及odoo17开发环境安装 1、odoo是什么&#xff1f; 当我介绍客户使用odoo系统作为业务管理平台时&#xff0c;有时会被问到Odoo是什么&#xff1f; 简单点&#xff0c;可以这么说&#xff1a; Odoo是一套完整的系统&#xff0c;是…

Pycharm安装numpy库失败解决办法

一、出现错误&#xff08;以matplotlib为例&#xff09;&#xff1a; 二、解决办法&#xff1a; 方法一&#xff08;失败&#xff09;&#xff1a;PyCharm中有一个安装库的方法是&#xff1a;Settings>>Python Interpreter>>点击右侧的加号 第二个图 失败原因&am…

【开源】基于JAVA语言的固始鹅块销售系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固始鹅块模块2.4 鹅块订单模块2.5 评论管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 鹅块类型表3.2.2 鹅块表3.2.3 鹅块订单表3.2.4 鹅块评论表 四、系统展示五、核心代码5.…

x-cmd pkg | jless - 受 Vim 启发的命令行 JSON 查看器

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 jless 是一个命令行 JSON 查看器&#xff0c;设计用于读取、探索和搜索 JSON 数据。可以使用它来替代 less 、 jq 、 cat 以及您当前用于查看 JSON 文件的编辑器的任何组合。它是用 Rust 编写的&#xff0c;可以作为单…

确保CentOS系统中的静态HTTP服务器的数据安全

确保CentOS系统中的静态HTTP服务器的数据安全是一项重要的任务&#xff0c;它有助于保护网站免受未经授权的访问、数据泄露和其他安全威胁。以下是一些关键步骤和最佳实践&#xff0c;以确保CentOS系统中静态HTTP服务器的数据安全&#xff1a; 限制访问权限确保只有授权用户可…

Python爬虫---scrapy shell 调试

Scrapy shell是Scrapy提供的一个交互式shell工具&#xff0c;它可以帮助我们进行爬虫的开发和调试。可以使用它来测试xpath或css表达式&#xff0c;查看它们是如何工作的&#xff0c;以及它们从你试图抓取的网页中提取的数据。它允许你在编写spider时交互地测试表达式&#xff…

JFinal学生信息管理系统

JFinal学生信息管理系统 项目地址&#xff1a;mendianyu/StudentManage: JFinal学生信息管理系统 (github.com) 环境介绍&#xff1a; IDE&#xff1a;IDEA 2021.2.3 jdk:1.8 maven:3.6.3 项目介绍&#xff1a;JFinal框架实现的学生信息管理系统&#xff0c;完成简单的学生信…

MATLAB | 龙年大吉,使用MATLAB绘制会动的中国风神龙

hey各位好久不见&#xff0c;龙年到了&#xff0c;这期画一期配色非常中国风的龙&#xff0c;这个造型的龙参考了某些html绘制龙的视频&#xff0c;但是由于html版全网都是也不咋给代码和代码出处&#xff0c;因此自己写了个MATLAB版本&#xff1a; 可以看到还是非常酷炫的&…

Vulnhub靶机:driftingblues 3

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues3&#xff08;10.0.2.19&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

利用C语言实现输出杨辉三角的前10行

杨辉三角的特点 第一列都为1&#xff0c;对角线为1 第x行第x列为1 第几行就有几个元素 从第三行开始,第二列的元素等于第二行的第一列元素第二列元素之和(排除从第三行开始的首和尾元素) //用C语言实现打印出10行杨辉三角 #include<stdio.h>int main(){int a[10][10];//…

膜结构球形影院为观众打造观影新体验

在数字科技快速发展的当下&#xff0c;轻空间公司打破传统影院的束缚&#xff0c;领航未来娱乐体验的创新浪潮。膜结构球形影院问世&#xff0c;它不仅仅是一个娱乐场所&#xff0c;更是一场極致沉浸感的感官之旅&#xff0c;为观众带来震撼性的视听冲击。 沉浸式体验的新纪元 …