培训时间: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网关等 - 其他方式
如线下,邮件等方式
大型机构通常有消息交换、库表交换、文件交换、服务接口交换等,经常混合使用!
东方通中间件产品及全替代能力
东方通产品 | 对标/替换国外产品 | 备注 |
应用中间件TongWeb | WAS、Weblogic、Tomcat、Jboss、Glassfish等 | XC目录、基础软件,支持容器云版/嵌入版,全行业海量替换案例 |
消息中间件TongLINK/Q | IBM MQ | 功能完善、性能优越,国内领先,全行业应用,出货量30万+套 |
交易中间件TongEASY | Oracle Tuxedo、IBM CICS | 金融、运营商、社保等行业核心交易系统应用 |
分布式数据缓存TongRDS | Redis | 成功应用在运营商、金融等行业业务系统中 |
高速传输平台TongHTP | Kafka、RocketMQ、RabbitMQ等 | 支持万级并发的接入与可靠传输、亿级消息堆积能力 |
负载均衡TongHS | Apache、Nginx等 | 负载均衡软件,支持万级并发接入 |
服务总线TongESB | IBM ESB、Oracle ESB等 | 基于SOA,易用、易管的服务集成框架,政务、电信、企业等领域应用系统集成 |
数据集成TongETL | Informatica、IBM DataStage、Oracle Data Integration 等 | 数据集成工具,全行业替换 |
文件传输TongGTP/WTP | IBM 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 7 | Java EE 7 | Java EE 7 | Java 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)
- TongWeb7的bin目录下的./startserver.sh
- 自动重启
./startserver.sh restart <——只有 startserver.sh 有 restart
此时,使用 ps 可以查看到两个进程,一个 monitor 进程,一个 tongweb进程。这样,当 tongweb进程意外崩溃后(如 kill -9),会自动拉起来。
停止
Windows
- 使用Ctr+C组合键
在TongWeb的运行窗口直接按Ctrl+C组合键,即可停止TongWeb - 运行停止脚本
TongWeb安装成功后,运行bin目录下的stopserver.bat,即可停止TongWeb
- 使用Ctr+C组合键
Linux
- 使用Ctr+C组合键
在TongWeb的前台运行窗口直接按Ctrl+C组合键,即可停止TongWeb - 运行停止脚本
在bin目录下运行stopserver.sh,即可停止TongWeb
- 使用Ctr+C组合键
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应用结构
说明:classes中可以编写传统的servlet,也可以有EJB,对于JavaEE新规范,传统部署描述文件web.xml可以省略掉,通过JavaEE新规范的原注释定义在servlet类中。
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。