培训时间:2023年8月24日
授课讲师:原厂讲师
培训目标:围绕TongWeb中间件产品功能、运维使用、运维管理等进行全面培训,使学员能够了解并使用TongWeb中间件产品。

中间件简介

中间件概念的引入

古代人们自己将钱财从一地传送到另一地时,不得不面对很多困难,例如土匪强盗、饮食住宿、车马挑夫、过关文书等共性问题。镖局这一中间角色的出现,使人们不必处理财物传输时的各种复杂细节。

中间件的功能与此类似:中间件,运行于操作系统、数据库与应用软件之间可以简化应用软件的复杂性、克服网络环境多种挑战的一类系统软件。

应用软件A <——> 中间件 <——> 底层资源(数据库、操作系统、网络)
应用软件A <——> 中间件 <——> 应用软件B

  • 通道——保障系统消息的可靠传递
  • 桥梁——达成业务系统的互联互通
  • 框架——促成业务系统的完整集成
  • 平台——实现分布式应用的顺利部署

中间件的作用

  • 开发效率
    能够提高开发效率,开发周期缩短25%~50%。
  • 软件质量
    层次明晰,可插拔方式对接,保障软件质量。
  • 节约成本
    据统计,应用系统可节省系统资源75%,运行成本减少50%。
  • 运行环境
    屏蔽底层硬件和软件运行环境带来的差异性,在异构平台间稳定运行。

    • 基于不同指令集的CPU

      • ARM:鲲鹏,飞腾
      • MIPS:龙芯
      • X86:天津海光(AMD),兆芯(VIA)
      • ALPHA:申威
    • 不同数据库

      • 国内主流数据库:达梦、人大金仓、神州通用、瀚高、优炫
      • 国外主流数据库:Oracle,IBM,Mysql等
      • 开源:openGauss,PostgreSQL,MariaDB
    • 不同的操作系统发行版本

      • 麒麟、统信、Redhat、SUSE……

中间件国产化替代必要性

基础软硬件是关键核心技术。
中间件:基础软件三驾马车之一。

  • 网络环境下处于操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件
  • 主要解决异构网络环境下分布式应用软件的互连与互操作问题
  • 提供标准接口、协议,屏蔽实现细节,提高应用系统易移植性

中间件在整合系统的过程中屏蔽底层技术细节

  • 应用中间件
    屏蔽底层的技术差异(CPU/OS等)
  • 消息中间件
    消息要求可靠性,实时性,定制化需求高,通过IBM MQ/东方通消息中间件TongLINKQ/Kafka等
  • 数据库表交换信息
    一般大量结构化数据、实时或非实时需求,通过ETL/CDC/数据交换平台等
  • 文件共享
    非机构化数据,半结构化数据,需要脱耦合等场景,通过FTP/RSYNC/NAS/通用文件传输平台
  • 服务接口
    实时性要求高,数据量少,数据拥有方对于数据比较敏感等,通过ESB/API网关等
  • 其他方式
    如线下,邮件等方式

大型机构通常有消息交换、库表交换、文件交换、服务接口交换等,经常混合使用!

东方通中间件产品及全替代能力

东方通中间件产品

东方通产品对标/替换国外产品备注
应用中间件TongWebWAS、Weblogic、Tomcat、Jboss、Glassfish等XC目录、基础软件,支持容器云版/嵌入版,全行业海量替换案例
消息中间件TongLINK/QIBM MQ功能完善、性能优越,国内领先,全行业应用,出货量30万+套
交易中间件TongEASYOracle Tuxedo、IBM CICS金融、运营商、社保等行业核心交易系统应用
分布式数据缓存TongRDSRedis成功应用在运营商、金融等行业业务系统中
高速传输平台TongHTPKafka、RocketMQ、RabbitMQ等支持万级并发的接入与可靠传输、亿级消息堆积能力
负载均衡TongHSApache、Nginx等负载均衡软件,支持万级并发接入
服务总线TongESBIBM ESB、Oracle ESB等基于SOA,易用、易管的服务集成框架,政务、电信、企业等领域应用系统集成
数据集成TongETLInformatica、IBM DataStage、Oracle Data Integration 等数据集成工具,全行业替换
文件传输TongGTP/WTPIBM Sterling Connect:Direct 、开源FTP可管理文件传输平台,金融领域市占率遥遥领先
数据交换平台TongDXP国外无相关产品打破数据孤岛,国家级平台、15+省级平台等大量应用

应用服务器中间件

TongWeb 属于应用服务器中间件,是东方通的明星产品。
同类中间件有weblogic、websphere(WAS)、tomcat、jboss等。

应用服务器是现在使用最广的中间件,主要应用于Web系统,它是创建、部署、运行、集成和维护多层分布式企业级应用的平台。

Web应用

  • 位于客户端(浏览器)和数据库之间
  • 把业务逻辑(应用)“暴露”给客户端
  • 为业务逻辑(应用)提供运行平台和系统服务
  • 管理对数据库的访问

应用服务器

  • 为Web系统下的应用开发者提供开发工具和运行平台
  • 企业级应用服务器通过Web容器和EJB容器为上层应用的运行提供基础平台支撑。

TongWeb 版本选择

企业版安全版标准版轻量版容器云版嵌入式版
适用场景大型复杂应用环境更高安全级别环境,内置ASDP安全插件中小型应用环境资源占用及启动速度要求较高的应用环境Docker、k8s环境SpringBoot/Cloud环境
规范支持Java EE 7Java EE 7Java EE 7Java EE 7(Web)Java EE 8(Web)Java EE 8(Web)
后台管理支持支持支持支持(仅命令)不支持不支持
硬件集群支持支持支持支持支持支持
软件集群(F5、Array等)支持支持支持支持支持支持
session复制(TongHttpServer、Apache、Nignx等)支持支持不支持不支持不支持不支持

TongWeb的安装

安装前提条件

支持JDK的主流操作系统都可以安装。
要求JDK7至JDK17(TongWeb7.0最新版)。
一定要配置JAVA_HOME

环境变量:
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

建议使用普通用户安装。

TongWeb安装-通用机

  • Windows平台

    • 直接执行Install_TW7.x.xx Standard_Windows.exe
  • Unix/Linux平台

    • 图形安装命令 ./Install_TW7.x.x.x_Standard.bin
    • 字符安装命令 ./Install TW7.x.x.x Standard.bin -i console
  • 绿色免安装版本

    • 直接解压缩即完成安装(推荐)
  • 安装License

    • 将TongWeb7产品光盘中的license.dat文件复制到安装完成的TongWeb7根目录下

要点:安装目录、端口确认、授权详细
安装步骤可参考: 002_TongWeb7产品简介及安装指南pdf

TongWeb安装-专用机-正式签名

1、确定操作系统时间
确定时间应为当前时间 (root用户)
2、登安全用户
将签名文件拷贝到桌面(secadm用户)
3、导入正式签名g7文件
运行“配置管理”,点击“添加”-浏览文件,选中并点击“打开”-最后提示“添加成功"
4、登录root用户
将对应平台的安装包文件(rpm或者deb文件)拷贝到桌面
5、导入正式安装包
运行配置管理-点击“添加”,选择安装包,点击“打开等待一段时间后,提示成功则完成导入
6、登录root用户
7、安装正式安装包
配置管理列表页中选择刚添加成功的TongWeb后的“安装”按钮安装过程根据不同硬件平台速度不一样,等待一段时间安装成功后TongWeb会被安装到固定目录/opt (所有通过配置管理安装的软件都安装在这个目录下),即/opt/TongWeb
8、安装授权文件
将license.dat (文件名称必须完全一致) 拷贝到/opt/TongWeb

Demo: 绿色版安装

[tongweb@demo1 ~]$ ls
license.dat TongWeb7.0.4.9_Enterprise_Linux.tar.gz
[tongweb@demo1 ~]$ tar zxvf TongWeb7.0.4.9_Enterprise_Linux.tar.gz
[tongweb@demo1 ~]$ mv TongWeb7.0.4.9_Enterprise_Linux tongweb
[tongweb@demo1 ~]$ mv license.dat tongweb

安装后的目录介绍

autodeploy:自动部署目录
applications:系统应用所在目录
bin:服务器启动,停止脚本目录
conf:服务器的配置文件所在目录
deployment:已部署应用的应用程序目录
domain_template:域模板目录
doc:手册压缩包存放目录(快速上手的话推荐看下这里的快速使用手册)
TongDataGrid:TongDataGrid缓存所在目录
lib:服务器类文件所在目录(自带性能分析工具apm所在目录)
logs:服务器存放日志文件的目录
samples:TongWeb的示例目录
persistence:存放各类监视量的持久化文件
snapshot:存放服务器生成的快照文件
service:以系统服务方式运行TongWeb服务的工具存储目录
temp:服务器产生的临时文件 (应用清缓存从这清理)
Tools:集成开发可以使用Eclipse、idea等IDE插件l,使用方法参考手册。

TongWeb的启停

启动

  • Windows

    • 快捷方式
      开始->所有程序-> TongWeb7 ->启动TongWeb7
    • 命令行方式
      执行TongWeb7的bin目录下的startserver.bat
    • 服务方式
      TW注册成系统服务,从服务列表里启动
  • Linux/Unix

    • TongWeb7的bin目录下的./startserver.sh
      前台启动,终端关掉进程会停止
    • 远程调试启动
      /startserver.sh debug 8888
    • 后台启动,终端关掉进程也不会停止
      ./startservernohup.sh (脚本已集成nohup)
  • 自动重启
    ./startserver.sh restart <——只有 startserver.sh 有 restart
    此时,使用 ps 可以查看到两个进程,一个 monitor 进程,一个 tongweb进程。这样,当 tongweb进程意外崩溃后(如 kill -9),会自动拉起来。

停止

  • Windows

    • 使用Ctr+C组合键
      在TongWeb的运行窗口直接按Ctrl+C组合键,即可停止TongWeb
    • 运行停止脚本
      TongWeb安装成功后,运行bin目录下的stopserver.bat,即可停止TongWeb
  • Linux

    • 使用Ctr+C组合键
      在TongWeb的前台运行窗口直接按Ctrl+C组合键,即可停止TongWeb
    • 运行停止脚本
      在bin目录下运行stopserver.sh,即可停止TongWeb

TongWeb bin下常用命令

版本信息查看:
./version.sh

查看cpu占用较高的java进程的堆栈:
./thread-profiler.sh pid (pid为java进程id)

命令行工具:
./commandstool.sh
该工具非常强大,使用方法参考手册。

TonbWeb 域管理

如果想在同一台主机上安装两套TongWeb,直接安装在两个不同的目录,端口会冲突,需要将 <DIR>/conf/tongweb.xml 中的默认端口进行修改。

Tongweb 引入了域的概念,每创建一个域后,就会在 <DIR>/domains/ 目录下生成一个与域同名的目录。各个域之间互不冲突。

TonbWeb 安装完成后,就存在一个默认域(此时 domains 目录下无内容):

$ cat <DIR>/conf/domains.list 
/home/xuwang/tongweb7

创建域:

$ ./domain.sh create domain1
[DomainUtil] 2023-08-26 01:02:24: TongWeb home: /home/xuwang/tongweb7
[DomainUtil] 2023-08-26 01:02:24: Agent home: /home/xuwang/tongweb7/Agent
[DomainUtil] 2023-08-26 01:02:24: creating domain: /home/xuwang/tongweb7/domains/domain1
[DomainUtil] 2023-08-26 01:02:24: Operation has been completed.

创建域的命令会在 domains 目录下生成与域同名的目录,同时在 domain.list 文件中生成记录。

[xuwang@demo1 tongweb7]$ ll domains
total 0
drwxrwxr-x 11 xuwang xuwang 135 Aug 26 01:02 domain1
 
[xuwang@demo1 tongweb7]$ cat conf/domains.list 
/home/xuwang/tongweb7/domains/domain1
/home/xuwang/tongweb7

删除域:

[xuwang@demo1 bin]$ ./domain.sh delete domain1
[DomainUtil] 2023-08-26 01:05:30: TongWeb home: /home/xuwang/tongweb7
[DomainUtil] 2023-08-26 01:05:30: Agent home: /home/xuwang/tongweb7/Agent
[DomainUtil] 2023-08-26 01:05:30: You are going to delete the domain [/home/xuwang/tongweb7/domains/domain1], are you sure? [ yes / no ]
yes
[DomainUtil] 2023-08-26 01:05:39: deleting domain: /home/xuwang/tongweb7/domains/domain1
[DomainUtil] 2023-08-26 01:05:39: Operation has been completed.

删除域的命令会删除目录,同时删除 domains.list 中的记录。
注意:如果直接使用 rm 只删除域目录,没有删除文件中的记录的话,TongWeb会出错。

启动域:

$ nohup ./startdomain.sh domain1 > /dev/null 2>&1 &

停止域:

./stopdomain.sh domain1

domain的启停除了可以使用上面的 *domain.sh 命令来完成外,还可以进入到 domain 所在的目录,使用域目录下的bin目录下的脚本启动。

TongWeb 管理控制台

建议通过管理控制台对TongWeb进行管理。
单节点控制台http://[TongWeblP]:9060/console; thanos/thanos123.com
集中管理控制台http://[TongWeblP]:9060/heimdall; rig/rig123.com

首次登录后,会提示修改密码,必须点击“修改密码”进行密码修改。

首页

在首页里,可以看到TongWeb的安装目录、版本号、补丁信息、JDK信息、License信息等。

另外,可以下载 TongWeb.xml 和 external.vmoptions 文件。这两个文件之所以单独拿出来,是因为这两个文件很重要。前者是TongWeb的配置文件,后者TongWeb启动时就需要的配置文件。

“服务器选择文件可选目录”是指定一个目录,在TongWeb进行配置需要选择文件时,就从该指定的目录选择。
“控制台应用前缀配置”就是指http://192.168.189.141:9060/console/中的这个"console"字 串

启动参数配置

有这几个标签页:jvm参数、其他jvm参数、服务器参数、环境变量。
通常只需要配置 “jvm 参数” 标签中的 “最大堆内存” 和 “最小堆内存”。
对应的配置文件是 <DIR>/bin/external.vmoptions
配置文件中的 # 是配置区域识别符,所以不用使用 # 当作注释来使用。
修改后重启生效。

$ ps aux | grep java
xuwang    27309  194 46.1 4599416 459584 pts/1  Sl   04:18   0:07 /home/xuwang/jdk1.8.0_201/bin/java -classpath …… -Xmx2048m -Xms1024m ……

这儿的 Xmx就是最大堆内存,Xms就是最小堆内存。

JDBC配置(连接池)

数据库驱动可以由框架来管理,也可以由应用容器来管理。
如果使用的应用框架来管理,则不需要配置这儿的JDBC,当然,也可以配置但不调用。

基本属性:
名称:mysql8(自定义)
数据库类型:选择mysql8
数据库驱动类名:保持默认 com.mysql.cj.jdbc.Driver
连接 url:jdbc:mysql://127.0.0.1:3306/cydb
用户名:cyapp
密码:cypassword
驱动路径:点击浏览选择驱动文件 mysql-connector-j-8.1.0.jar(注意驱动文件要放在首页指定的路径下)。

注意,如果已经将驱动文件放到了 <DIR>/lib/ 目录下,这儿也可以不选择驱动文件。

池设置:
设置最大连接数、最小空闲连接数、获取连接的最大等待超时时间等。

验证连接属性:
生产上建立把“创建连接时验证”、“获取连接时验证”、“归还连接时验证” 这三个验证都开启。

高级属性:
根据自己的实际情况设置,例如慢sql检测。

应用程序如何引用数据源的,请参考开发手册。也可以通过 JNDI > 服务器资源域下的 JNDI 树进行引用。
下面是引用数据库连接的一些简单的示例:

方式1:应用配置文件(常用)

如SpingMVC项目等,修改应用中数据库连接池相关配置文件。

方式2:直接调用

Context initialContext-new InitialContext();
DataSource dataSource=(DataSource)initialContext.lookup(“testDB");

方式3:标注方式

@Resource(name=“testDB")
javax.sql.Datasource ds;

方式4:将全局JNDI资源映射到组件资源

Servlet 代码片断:
InitialContext initialcontext = new InitialContext();
DataSource ds =(DataSource)initialcontext.lookup("java:comp/env/TestDS");

web.xml片段:
  <resource-ref>
   <res-ref-name>TestDS</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth></resource-ref>

tongweb-web.xml片段:
  <resource-ref>
   <res-ref-name>TestDS</res-ref-name>
   <jndi-name>testDB</jndi-name>
   ……
  </resource-ref>
其中testDB为外部数据源的全局JNDI名,TestDS为组件资源中的JNDI名。

应用管理(应用部署)

Java EE应用文件的类型

类型扩展名用途和构成
Web应用.war包含Servlet和JSP等Web组件以及静态HTML页面、Jar文件、标记库等,在JavaEE6及以上规范中还可以存在EJB。
EJB应用.jar包含EJB实现以及EJB实现所需的类
连接器应用.rar包含连接器(资源适配器)的实现类
企业应用.ear包含上述三种应用类型

web应用结构

web应用结构

说明:classes中可以编写传统的servlet,也可以有EJB,对于JavaEE新规范,传统部署描述文件web.xml可以省略掉,通过JavaEE新规范的原注释定义在servlet类中。

EAR应用结构

EAR 应用结构
说明:application.xml是JavaEE标准的部署描述文件。APP-INF下存在的是企业应用的公共类。

控制台部署

应用包支持两种形式

  • 目录形式
    目录形式即应用以展开的目录方式进行部署,目录部署的优点是方便应用的修改。(开发时推荐)
  • 文件形式
    文件形式部署即应用以应用包(如.war,.ear等)的方式进行部署,部署后应用解压在deployment目录下。

点击“部署应用”,从本地或者服务器中选择应用包文件后,点击“开始部署”。

这儿以 <DIR>/samples/servletjsp-samples/servletjsp-tomcatexamples/TC_examples.war 为例

在“基本属性”标签中,设置应用名称、应用前缀等。
在“虚拟主机”标签中,选择应用的虚拟主机。
在“完成部署”标签,确认信息无误后,点击完成。

命令行部署

  • 执行 <DIR>/bin/commandstool.sh 命令
  • 首次使用需要修改默认密码:
    commandstool> change-admin-password --user cli (初始密码:cli123.com)
  • 举例-部署应用命令:
    commandstool> deploy --host=192.168.1.2 --port=9060 --contextroot=dbpooltest --applocation=/test.war testapp

详细的命令,可以参考“006_TongWeb7Commandstool使用指南.pdf”

自动部署

在控制台“服务”菜单中,打开自动部署开关、设置自动检查时间间隔、指定自动部署目录,将应用包以文件或目录形式放入autodeploy目录(默认),即完成自动部署。

默认已经打开,并且已经选择 autodeployment 目录作为自动部署目录。

  • 文件形式:会将应用包自动解压到deployment目录下
  • 目录形式:不会在deployment目录下生成数据
  • 是否部署成功:在 autodeploy/.autodeploystatus/ 目录下,部署成功会生成以”应用包名”命名的目录,部署失败会生成以”应用包名.failed”命名的目录

示例:

$ cd tongweb7/samples/servletjsp-samples/servletjsp-tomcatexamples/
$ cp TC_examples.war /home/xuwang/tongweb7/autodeploy/
$ ll /home/xuwang/tongweb7/autodeploy/
total 724
-rwxr-xr-x 1 xuwang xuwang 738277 Aug 27 23:52 TC_examples.war
$ ll /home/xuwang/tongweb7/autodeploy/.autodeploystatus/
total 0
drwxrwxr-x 2 xuwang xuwang 17 Aug 27 23:52 TC_examples.war

然后在控制台的”应用管理“下,就可以看到自动部署的TC_examples。
在deployment目录下也可以看到同名的解压后的目录。

热部署

在部署应用的时候,勾选”类热加载“即可。
这样一个,将修改的class文件直接扔到 deployement 目录下,替换相关文件即可。

监控

”监视“菜单。
在 ”监视配置“中,打开总开关和需要监控的条目开关。
在”监视明细“中,就可以看到监控数据了。
在”监视回放“中,可以对历史监控数据进行查看。
在”hung线程“中,可以对hung线程进行分析。
在”阈值配置“中,可以定义当发生某一条件时,生成快照信息,并且可以指定生成的快照信息包含的内容。
在”告警配置“中,显示了已创建的告警阈值配置。默认已经有了几条预定义的告警。

诊断

"诊断"菜单。
可以查看日志:系统日志、SQL日志、访问日志、告警记录。
在”快照“中,可以手动生成快照。如果产生的问题在前面的阈值配置里没有涵盖(没有自动生成快照),我们就可以在这儿手动生成快照。自动或者手动生成的快照都保存在 snapshot 目录下,生成后,可以查看生成的文件内容,分析问题。
在”snmp“中,可以配置 snmp 信息。

日志服务

日志级别配置:默认各个模块都是 INFO 级别,都会打印到 server.log 中
应用用得比较多的是 "System out"模块,在 server.log 中是[systemout]。
如果不想打印到 server.log中,可以设置为 OFF,这样,日志就打印到应用日志中了。

系统日志配置:配置系统日志数量、大小、轮转、目录等。

压缩日志配置:配置系统日志、访问日志、持久化日志的压缩。

类加载分析工具

类加载器树:对已经部署的应用分析具体类的加载与分布情况。
类资源分析:上传应用包文件,对应用包中的的类进行分析。
类冲突检测:上传应用包文件,对类冲突进行检测。

资源

文件集:这儿可以上传文件并对已经上传的文件进行管理,通常是库文件。
共享库:这儿可以创建共享库,选择文件集中的文件进行共享。

类的加载顺序

在应用管理界面,可以指定要使用的共享库和类加载顺序(父优先和子优先)。

父优先(tw 优先):tw/lib/endorsed > tw/lib > tw/lib/common > domain/lib > war/class > war/lib > 共享库
子优先(war包优先):tw/lib/endorsed > war/class > war/lib > 共享库 > tw/lib > tw/lib/common > domain/lib

通常推荐子优先(默认)。

乱码问题

在web应用访问过程中出现乱码,可以从如下三个地方修改字符集。

  • 容器配置
  • HTTP通道管理
  • <安装目录>/bin/exteral.vmoptions 中增加 Dfile.encoding 参数。

密码错误或权限不对

1.TongWeb 控制台密码忘记
2.confsecurity 中文件损坏,报密码或权限不对
解决办法:
重置TongWeb密码,利用<DIR>/domain_template/conf/security 中的文件模版去覆盖 <DIR>/conf/security 目录,或是域下的conf/security目录对应文件即可,重启TongWeb恢复原始密码。

集中管理工具、集群简介

登录:http://192.168.189.141:9060/heimdall/
用户名/密码:rig/rig123.com
登录后,必须修改密码。

管理界面跟单机的管理控制台差不多。

节点管理

编辑被管理节点的 <DIR>/Agent/conf/agent.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configFile>
    <agentIp>192.168.189.141</agentIp>
    <agentPort>7070</agentPort>
    <fileReceiverPort>19090</fileReceiverPort>
    <masterIp>192.168.189.141</masterIp>
    <masterPort>9060</masterPort>
    <masterContextRoot>/heimdall</masterContextRoot>
</configFile>

agentIp 是被管理节点的IP地址,masterIp是集中管理工具所在服务器的IP地址。

然后启动 Agent:

cd /home/xuwang/tongweb7/Agent/bin
./startbg.sh

现在,在节点管理 > 节点代理中,就可以看到注册的节点了。

创建集群

点击 集群 > 创建集群。
创建集群,选择使用的节点(可以只要一个节点)。
部署完成后,把集群实例起起来。

发布应用

应用管理 > 部署应用
方法与单机类似,部署目标选择刚才创建的集群。
这样一来,集群中的所有节点就都部署上了。

此时,点击 服务器管理,可以看到受master管理的tongweb。

-- By 许望(RHCA、OCM、VCP)
最后修改:2024 年 12 月 18 日 02 : 38 PM
如果觉得我的文章对你有用,请随意赞赏