vlambda博客
学习文章列表

读书笔记《apache-tomcat-7-essentials》Tomcat升级

第 10 章 Tomcat 升级

技术变革和创新以非常快的速度发生。为了适应当前的技术要求并为用户提供最新技术,需要对系统进行升级。新版系统自带最新功能和bug修复,更加稳定可靠。

在本章中,我们将讨论:

  • 升级过程的生命周期

  • IT 行业遵循的最佳实践

  • 如何将 Tomcat 6 升级到 Tomcat 7

每个组织都根据系统的关键性按照他们的流程升级服务器。通常,产品的评估由技术架构师完成。架构师根据应用程序的重要性定义架构,升级应用程序需要遵循该架构。只有在开发服务器上成功升级后才能进行生产升级。

不同类型的环境

根据其架构,IT 行业中的任何系统基本上都有四种类型的环境。下图展示了大多数行业创建的不同环境:

读书笔记《apache-tomcat-7-essentials》Tomcat升级

开发环境

它可以定义为软件和硬件的组合,这是团队构建和部署代码所必需的。简单来说就是构建代码并部署所需的完整包。

以下几点描述了我们为什么需要开发环境及其优势:

  • 整合:例如,通过查看整个开发环境的基础架构需求,您可能会发现您只需要一个 Web/应用程序服务器来部署应用程序。

  • 资源估计:在支持业务项目的任何生产基础设施上提供资源之前,需要资源来支持开发活动和测试开发环境。

质量保证环境

该环境主要用于开发模块的集成,随后由质量保证团队进行功能测试。如果 QA 团队发现应用程序的功能有任何问题,他们会通知开发人员解决问题。

暂存环境

此环境是生产环境的副本。主要用于性能测试,模拟用户加载过程中的实时问题。

生产环境

这可以定义为用户可以在应用程序中执行操作的真实环境。例如,您执行货币交易的银行网站可以称为生产环境。

不同类型的环境


根据其架构,IT 行业中的任何系统基本上都有四种类型的环境。下图展示了大多数行业创建的不同环境:

读书笔记《apache-tomcat-7-essentials》Tomcat升级

开发环境

它可以定义为软件和硬件的组合,这是团队构建和部署代码所必需的。简单来说就是构建代码并部署所需的完整包。

以下几点描述了我们为什么需要开发环境及其优势:

  • 整合:例如,通过查看整个开发环境的基础架构需求,您可能会发现您只需要一个 Web/应用程序服务器来部署应用程序。

  • 资源估计:在支持业务项目的任何生产基础设施上提供资源之前,需要资源来支持开发活动和测试开发环境。

质量保证环境

该环境主要用于开发模块的集成,随后由质量保证团队进行功能测试。如果 QA 团队发现应用程序的功能有任何问题,他们会通知开发人员解决问题。

暂存环境

此环境是生产环境的副本。主要用于性能测试,模拟用户加载过程中的实时问题。

生产环境

这可以定义为用户可以在应用程序中执行操作的真实环境。例如,您执行货币交易的银行网站可以称为生产环境。

升级的生命周期


在本主题中,我们将讨论升级期间执行的各个步骤。生命周期由升级中涉及的端到端流程组成。通常,升级从开发环境开始,然后是 QA/阶段/生产环境。以下屏幕截图显示了 IT 行业任何系统升级所遵循的基本步骤顺序:

读书笔记《apache-tomcat-7-essentials》Tomcat升级
  1. 1.增强功能及业务需求分析:这一步在升级过程中起着非常关键的作用。在这个过程中,常设委员会(技术架构师、业务所有者和功能所有者)决定哪些特性对于新版本是必不可少的,以及它们如何用于支持业务需求。

  2. 2.安装新版本的先决条件:按照前面的流程,基础架构团队确保整个软件都可用于安装及其依赖性也存在。

  3. 3.升级产品的安装:在这个过程中,新版本产品的安装将由基础架构工程师完成。

  4. 4.配置和性能调优:安装完成后,就可以对新产品进行配置和性能调优了。

  5. 5.应用迁移:Tomcat 7配置完成后,升级仍未完成。现在,迁移最繁琐的部分从这里开始,即应用从当前环境迁移到新系统。

    笔记

    在将应用程序从当前环境迁移到新环境之前,您需要确认应用程序是否支持新版本。如果没有,请确认供应商提供的解决方法是什么。

  6. 6.负载和功能测试:应用迁移完成后,您必须对升级后的系统进行负载和功能测试,以便确保应用程序正常运行,并且通过升级过程嵌入的新功能根据业务需求运行。

  7. 7. 适应新环境。

Tomcat从6升级到7


到目前为止,我们已经讨论了升级的各种理论过程。现在是享受乐趣的时候了,这是每个管理员在其职业生涯中都想要的。

在这个话题中,我们将讨论本书最期待的话题,那就是Tomcat升级。网络管理员总是希望从以前的主要版本升级到新版本。它还将管理员的观念从日常维护问题转变为架构级集成。如果您参与了产品的升级活动,那么您是组织中第一个从事该产品工作的人,这使您在其他人中具有更好的知名度。但在执行升级之前,让我们讨论一下 Tomcat 7 与 Tomcat 6 相比提供了哪些新功能/更新。以下是这些功能:

  • 小服务程序 3.0

    • 异步支持

    • 动态配置

    • 扩展的 Servlet API

    • 更简单、更快、对开发人员更友好

    • 简化嵌入

    • 改进的日志记录

  • 系统改进

    • 没有更多的内存泄漏

    • 安全改进

现在我们知道了使用 Tomcat 7 的优点是什么,让我们开始从 Tomcat 6 升级到 Tomcat 7。为了启动升级过程,首先想到的是,我们必须在哪个硬件上执行升级?升级基本上有两种方式:

  • 在已经运行 Tomcat 6 的同一系统上:当我们有高端服务器时使用这种方法,这些服务器有足够的 RAM 和 CPU 来处理新版本产生的负载。

  • 在单独的系统上:在当今的 IT 基础架构中,由于虚拟化趋势的增加,这种方法非常普遍。这里创建了低端服务器,只能处理新版本 Tomcat 7 的负载。

笔记

这种方法的主要优点是您可以在升级期间并行运行当前操作,并且对当前环境没有影响。

我们将采用第二种方法进行升级,因为这是任何 IT 行业中最常用的方法。

Tomcat 7 的先决条件

默认情况下,Tomcat 6 运行在 JDK 1.5 上,而 Tomcat 7 需要 JDK 1.6,因此 Tomcat 7 升级的主要前提是安装 JDK 1.6。在第一章中,Tomcat 7的安装,我们已经讨论了详细的Java安装步骤。因此,我们将继续进行下一个安装步骤。

如果您必须在运行 Tomcat 6 的同一系统上安装 Tomcat 7,那么您一定在想如何设置两个不同的 JAVA_HOME Path? 在这种情况下,您必须使用不同的用户安装 Tomcat,并在用户配置文件中设置 JAVA_HOME。此外,同一用户应该具有 sudo 访问权限来运行 Tomcat 服务。

安装Tomcat 7进行升级

在系统上完成 JDK 1.6 的安装和配置后,就可以在机器上安装 Tomcat 7 了。执行以下步骤:

  1. 1.从Tomcat官网下载最新稳定版, http://tomcat .apache.org/download-70.cgi。下载完成后,将其保存在 /opt 位置。

  2. 2.解压Tomcat 7源码,即 apache-tomcat-7.0.12.zip,使用如下命令:

    [root@localhost opt]# unzip apache-tomcat-7.0.12.zip 
  3. 3. 解压 apache-tomcat-7.0.12.zip后,会创建一个名为 apache-tomcat-7.0.12的文件夹 opt 目录中的 code>。

  4. 4。使用以下命令进入 apache-tomcat-7.0.12 bin目录:

    [root@localhost opt]# cd apache-tomcat-7.0.12/bin/< /strong> 
  5. 5. 运行以下命令。如果您错过执行以下命令,则在启动服务时 Tomcat 将不会启动。原因是,包带有读/写权限,但没有给包执行权限。我们必须手动更新权限。

    [root@localhost bin]# chmod 0755 *.sh [root@localhost bin]# pwd /opt/apache-tomcat-7.0.12/bin 

    笔记

    chmod 0755 file 相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1) 0 没有指定特殊模式。

  6. 6. 启动 Tomcat 服务并验证 Tomcat 设置。

    笔记

    如果您在同一台机器上进行安装,则必须更改 Tomcat 7 的默认连接器端口,否则您将收到 Port already in use 异常并且服务不会开始。要更改默认连接器端口,您必须编辑 server.xml

Tomcat 7的配置

您一定在思考我们是在安装还是升级 Tomcat。阅读本节后,您将了解实际的升级。我们将讨论需要参考 Tomcat 7 完成的各种配置。它还应该执行与 Tomcat 6 相同的功能,并集成新功能。让我们按顺序讨论配置。

JVM 配置

JVM 在 J2EE 容器的性能和维护中起着至关重要的作用。从 Tomcat 6 升级到 Tomcat 7 时,适应旧环境的 JVM 参数并添加新的增强功能是非常重要的要求。在配置 JVM 时,我们必须牢记许多事情。其中一些提到如下:

  • 当前在 Tomcat 6 上运行了多少应用程序

  • 并发用户数

  • 当前配置

  • 从 32 位升级到 64 位

让我们对比一下Tomcat 6和Tomcat 7的默认内存分配。你会发现在内存分配方面没有太多的重大变化。但是,在实践中,当我们升级系统时,与之前的版本相比,我们定义了更多的 JVM 内存。原因是,它既要支持当前的应用程序,又要支持最新版本的增强功能。

读书笔记《apache-tomcat-7-essentials》Tomcat升级

上一张截图显示了 Tomcat 6 的内存结构及其组件的内部划分。下图是Tomcat 7的内存分配情况。对比系统,你会发现内存方案的架构并没有太大的区别,但是在实时生产环境中,这个配置因系统而异.

读书笔记《apache-tomcat-7-essentials》Tomcat升级

笔记

如果您将系统从 32 位升级到 64 位,那么内存分配将比系统上当前分配的内存多 30%。

在进行升级时,您必须启用与旧版本相同的配置参数,并且您必须对环境启用整个自定义配置。为了为应用程序提供支持,它有助于维护 Tomcat 服务器的性能。下面以Tomcat 6的配置为例,参照Tomcat 7实现,如下代码行所示:

JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

现在,如果您想对 Tomcat 7 进行相同的配置,则必须根据资源的可用性和应用程序要求增加配置,如以下代码行所示:

JAVA_OPTS="-Xms1024m Xmx1024m -XX:MaxPermSize=256m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000"

笔记

内存泄漏问题在 Tomcat 7 中完全解决。如果我们增加 JVM 内存,那么应用程序将更密集地使用内存。此外,这不会在一段时间内对系统造成任何问题,与之前版本的 Tomcat 相比,我们必须定期回收 Tomcat。

数据库连接设置

数据库响应在应用程序性能调优中非常关键。一个微不足道的错误也会对应用程序产生很大的影响。但是,如果您正确地进行配置,它将导致应用程序的性能出现奇迹(我们将看到性能结果超过基准)。让我们比较一下 Tomcat 6 和 Tomcat 7 的数据源配置。以下代码行中突出显示的代码显示了 Tomcat 6 和 7 的配置差异:

Tomcat 6:

<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver
"url="jdbc:oracle:thin:@192.168.0.1:1521:mysid"username="scott" password="tiger" maxActive="20" maxIdle="10" maxWait="-1"/>

Tomcat 7:

<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc. OracleDriver" url="jdbc:oracle:thin:@192.168.2.1:1521:mysid" username="scott" password="tiger" maxActive="50" maxIdle="10" maxWait="-1"/>

Tomcat 6 和 7 连接到不同的 DB 服务器,但它们使用相同的用户名和密码连接到同一个数据库。原因是,在升级时,建议使用数据库的新实例。这种方法的好处是,如果数据库崩溃,那么当前应用程序不会受到影响,您可以并行进行升级。此外,您可以尝试不同的配置参数来提高性能。

笔记

如果是升级环境,建议使用最新的JDBC驱动连接数据库。

应用程序迁移

应用程序迁移是升级生命周期中非常困难和棘手的任务。我们不能直接部署应用程序。一些应用程序与新版本的 Tomcat 7 以及 JDK 1.6 不兼容。在这种情况下,我们必须在新版本中构建和编译应用程序。当涉及到应用程序部署时,这是一个棘手的问题。如果不在 TRACE 或 DEBUG 模式下运行应用程序,我们就无法直接指出错误。如果我们仔细分析应用日志,会发现 Path not found Class not found等异常。

笔记

对于新版本的应用程序,始终建议检查第三方应用程序 JAR 的兼容矩阵。

以下是应用程序迁移的步骤:

  1. 1. Tomcat 7 支持的 JDK 上的应用程序重新编译。

  2. 2. 将第三方JAR 升级到最新版本。

  3. 3. 部署新应用。

  4. 4. 测试新部署的应用程序。

别名配置

在当前环境中,您可能已经配置了许多虚拟主机。但是您不能对应用程序使用相同的 URL,因为它们指向旧环境。要解决此问题,您必须在新的 Tomcat 7 环境中配置虚拟 URL 以进行测试。这将帮助我们执行环境的上线前任务。

以下是别名配置步骤:

  • 虚拟 URL 的创建: 通过创建虚拟 URL,管理员可以检查应用程序的基本功能。

  • 使用虚拟 URL 进行用户测试: 通过在新环境中执行用户测试,功能团队可以验证应用程序的功能。

  • 从当前生产环境创建 CNAME 到新的虚拟 URL: 通过创建 Canonical Name( CNAME),我们将旧应用程序 URL 指向新环境。

  • Tomcat 7 上虚拟主机的配置: 通过在 Tomcat 7 中创建虚拟主机,我们让 Tomcat 知道应用程序内容将被重定向到哪里。

将 Tomcat 6 升级到 Tomcat 7 时会遵循前面的过程。

ITIL流程实现


到目前为止,我们已经讨论了 Tomcat 的技术流程及其配置。现在该了解信息技术基础架构库ITIL) 过程在升级过程中遵循,并根据功能和实现方法在升级的不同部分中使用。

可用性管理

它可以定义为允许组织以最低的环境成本确保其服务支持的过程。它由以下功能组成:

  • 可靠性:这是一个基于工作说明书衡量IT组件的过程 strong> (SOW)。

  • 可维护性:这是一个过程,我们通过该过程管理整个系统而不会出现任何计划外停机。

  • 安全性: 此服务与数据相关联。它总是指该数据的机密性、完整性和可用性。可用性一词是指环境可用的整个系统服务。

容量管理

这种支持是指通过帮助组织将其 IT 资源与其业务需求相匹配,以最佳且具有成本效益的方式提供 IT 服务。它还可用于估算任何项目的项目成本或环境的收入使用情况。

过程

环境

应用程序大小

舞台环境

容量规划

开发环境或项目开始前

绩效管理

舞台环境

服务过渡

Service Transition (ST) 与服务交付和通常由上线前的各种流程组成。以下是 ST 中的 ITIL 进程列表:

过程

环境(使用)

过渡规划和支持

在生产中发布上线支持

更换管理层

在投入生产之前

服务资产和配置管理

在投入生产之前

发布和部署管理

在投入生产之前

服务验证和测试

在投入生产之前

变更评估

在投入生产之前

知识管理

开发/质量保证/阶段/生产

概括


在本章中,我们讨论了从 Tomcat 6 升级到 Tomcat 7 的各种策略以及升级过程中遵循的各个步骤,例如升级的生命周期、Tomcat 7 的升级配置和数据源配置。

下一章,我们将讨论 Tomcat 7 的各种高级配置以及它们在实时 IT 行业中的使用方式,例如虚拟主机、Tomcat 7 的多实例、多应用部署、环境配置等.