应用的描述信息配置在系统核心位置,用一个文件描述,通常称为ubbconfig文件,在主控机器上。整个TUXEDO系统的管理任务可以在一台机器上完成,在配置中被定为主控节点。
在运行时,这些信息被装入一段共享内存(一个IPC资源),称为公告牌(Bulletin Board—BB);包含有配置中不同机器的信息,在这些机器上运行的服务的信息,这些服务提供的交易的信息以及其他相关信息。
客户端在运行时连接公告牌。当客户端程序调用一个交易,将根据公告牌找到合适的服务队列。
TUXEDO提供一个管理进程,称为BBL(Bulletin Board Liaison),包含了一个公告牌的本地拷贝和本地服务器上应用的状态。
TUXEDO提供的另一个管理进程DBBL(Distinguished Bulletin Board Liaison),用于多服务器配置时。DBBL与BBL协同,保证所有部分的公告牌内容的一致性。
一、配置文件
ubbconfig文件可视作包含应用启动信息的容器,需编译成二进制文件tuxconfig,作为启动时的参考。UBBCONFIG配置文件分为9节,各节之间具有包含关系,从上到下是一对多的关系。
其内信息包括:
v 系统范围信息(*RESOURCES节)
v 机器信息(*MACHINES节)
v 组信息(*GROUPS节)
v 服务信息(*SERVERS节)
v 交易信息(*SERVICES节)
v 网络组信息(*NETGROUPS节)
v 网络信息(*NETWORK节)
v 路由原则信息(*ROUTING节)
当完成了ubbconfig文件后,用tmloadcf命令生成tuxconfig。
二、信息内容
1. RESOURCES定义
*RESOURCES节包含整个应用范围的信息。本节必须在配置文件第一节,不可缺少。信息说明如下:
参数 意义
*RESOURCES *RESOURCES节
IPCKEY 公告板id
UID TUXEDO管理员用户id
GID TUXEDO管理员用户组id
PERM TUXEDO管理员组用户的权限
MAXACCESSERS 服务端和客户端的最大进程数
MAXSERVERS 限制可以启动服务总数
MAXSERVICES 限制可以发布交易总数
MASTER 指出主控节点的逻辑名,第二个是备份节点
MODEL 应用构架,MP表示多机,否则为单机模式SHM
SYSTEM_ACCESS PROTECTED,NO_OVERRIDE,应用代码不得干扰共享内存
LDBAL 设Y则进行负载平衡
SCANUNIT 内部时间间隔单位,单位是秒
SANITYSCAN 检索公告牌的内部时间间隔,单位是SCANUNIT
BLOCKTIME 交易超时时间,单位是SCANUNIT
BBLQUERY 所有BLL轮询TUXEDO状况的时间间隔
MAXCONV 同时最大会话数
2. MACHINES定义
*MACHINES节包含应用有关的每个处理器的信息。本节必须在*RESOURCES节后列出。
参数 意义
*MACHINES MACHINES节
TUXDIR TUXEDO系统软件安装位置
APPDIR 应用服务位置全路径
TUXCONFIG TUXEDO配置文件全路径
ENVFILE 环境文件全路径
ULOGPFX 应用日志文件全路径
MAXACCESSERS 本机最多处理器数,可以超越*RESOURCES节定义
MAXCONV 本机最大会话数,可以超越*RESOURCES节定义
注意:本处未列出全部参数。这些系统范围内参数可以被后序节内参数超越。
3. GROUP定义
*GROUP节包含服务组的定义。一台机器至少要定义一个服务组。如果没有定义组,管理命令tmadmin可能依然能运行。
每个组只要定义组名,映射组名的组号和逻辑机器名。组为分布式交易系统和数据依赖路由等灵活性措施提供了支持。
参数 意义
*GROUPS GROUP节
BANKB1 组的唯一标识符,可以是字母数字
GRPNO 组的唯一数字标识符
LMID 组所在的机器
4. 服务定义
ubbconfig的*SERVERS 节包含的是服务进程的信息。本节中每一个入口代表一个应用启动时加载的服务。这些信息包含服务名,命令行参数,服务环境,重启动等等。由于每个服务功能各不相同,其配置参数也因此相同或相异。
参数 意义
*SERVERS SERVER节,列出所有服务程序
DEFAULT: 本处列出的参数为其下列出的服务的缺省值,但可以被单列条目替代相应值
RESTART 如果设成Y,则服务可以重启动
MAXGEN 在GRACE定义时间之内,服务可以重启动MAXGEN次
GRACE 周期,单位是秒
RCMD 每次服务重启动,本处定义的脚本或命令被执行
ENVFILE 列有环境变量的文件,在交易启动前设入环境
TLR 一个服务名,用buildserver建立,应在APPDIR或$TUXDIR/bin
SRVGRP 服务属于一个在*GROUPS节中定义的服务组;如果需要移植服务,也可以定义在多个组中。
SRVID 服务组中代表服务的唯一值
MIN 最少在启动时启动的服务数
MAX 运行时,最多可以起的实例数
CLOPT 跟随服务启动的其他参数
-A 服务内建交易全发布
–r 指定服务记录时间戳,用于以后计算交易处理时间
-e 定义标准错误重定向文件
-o 定义标准输出重定向文件
-- TUXEDO参数和服务特定参数的分隔符
… 传给tpsvrinit()的参数
SYSTEM_ACCESS 设定后,应用错误不干扰公告牌
RQADDR 当设定此项后,所有本服务的实例都使用相同的请求队列。这是在应用中设置MSSQ(Multiple Server Single Queue)的方便办法,可以改善处理流量。任何时候,所有MSSQ集中的实例发布相同的交易集。
REPLYQ 设成Y,则服务又作为一个MSSQ集配置,任何其中的交易调用其他交易,就建立一个单独的回应队列。
5. 交易定义
*SERVICES节提供了应用的特殊交易的信息。包括负载平衡(LOAD)、service优先级、数据依赖路由、全局事务和数据缓冲类型检查(BUFTYPE)。如果全部都是缺省值则本节可以省略。
参数 意义
*SERVICES 交易节
# 注释行符号
大写字母 交易名,由应用服务提供
BUFTYPE 任何向该交易的请求,数据应该是此处定义类型
GROUP 交易所在服务所在的组
LOAD 负载因子,表示处理请求的时间,用于计算负载平衡
PRIO 优先级
DDR 定义数据依赖路由
AUTOTRAN 调用该service时是否自动启动一个全局事务,默认为N
没有相关应用,大家作为了解即可。
三、生成TUXCONFIG文件
UBBCONFIG文件是一个可以编辑成需要的应用配置的文本文件。但是,/T在实际应用上读取的是二进制TUXCONFIG文件用于操作。命令tmloadcfg可以把UBBCONFIG文件转化成TUXCONFIG文件。
tmloadcf命令接受以下4个参数:
-c 计算运行应用需要的IPC资源,该信息将提供给管理员,用于在各机器上配置资源。
-n 进行语法检查并不生成TUXCONFIG。
-b 控制TUXCONFIG占用的物理页数。
-y 无条件覆盖TUXCONFIG
环境变量TUXCONFIG必须设定指向二进制TUXCONFIG文件。
在安全要求高的应用中,tmloadcf不能从标准输入接受,环境变量APP_PW必须包含应用密码。
tmunloadcf将TUXCONFIG转换成ASCII格式用于检查。该工具读取环境变量TUXCONFIG指向的文件。输出包含所有的参数,包括TUXEDO设定的缺省值,是UBBCONFIG文件的一个超集。
四、关于MSSQ的配置
在默认情况下,Tuxedo的每一个Server进程对应一个请求队列,该Server从请求队列中取客户端发来的请求,并把处理的结果通过该请求队列返回给客户端,Tuxedo的Server可以配置成多个Server对应一个请求队列,即MSSQ方式,以提高响应的速度。
与MSSQ有关的参数是:
(1) RQADDR:请求队列的名字,一般设成与该Server的名字一样。
(2) RAPERM:请求队列的存取权限,默认为0666。
(3) REPLYQ:该Server中的某个Service调用其他的Service,并有返回结果,则应设置REPLYQ=Y,即把其他Service的应答放到该队列中。
(4) CONV:设置该Server是否采用会话通信方式。注意采用会话通信的service要单独在一个server中,不能与采用其他通信方式的service在同一个server中,并且该server要设置CONV=Y。
(5) CLOPT:设置server的启动参数。
五、远程客户端配置
1. 本地客户端与远程客户端的区别
1) 本地客户端只能用C语言或COBAL语言编写,远程客户端可以用几乎所有的编程语言编写。
2) 在远程客户端所在的机器上要安装Tuxedo的客户端软件,并要设置相应的环境变量(WSNADDR)。在本地客户端上则不用。
3) 在SERVERS中配置WSL,配置WSL的侦听端口。
4) 本地客户端对应一个消息队列,接受server的处理结果;远程客户端不占用消息队列。
5) 用buildclient编译远程客户端程序时要加“-w”,编译本地客户端则不用。
2. 远程客户端的配置
1)在MACHINES中配置MAXWSCLIENTS
2)在SERVERS中配置server:WSL
首先通过WSL配置,了解一下WSH(WorkStation Handler Server)和WSL(WorkStation Listener)交互过程,系统中WSL的配置如下:
WSL SRVGRP=WSLGRP_HLJBOSS SRVID=16000 RESTART=Y MAXGEN=10
CLOPT= "-A -t -- -n //10.110.0.200:28770 -m10 -M50 -x10 -K both -c 10240"
CLOPT可带参数:
-n netaddr:WSL的侦听端口
-m minh:最少启动多少个WSH进程
-M maxh:最多启动多少个WSH进程,默认为MAXWSCLIENTS/x
-x mpx_factor:每个WSH进程可以同时与多少个远程客户端连接
-c compression_threshold:如果传送的数据包大小超过“-c”指定参数,自动进行数据压缩
-T Client_timeout:指定一个远程客户端的空闲时间
-t timeout_factor:指定远程客户端与WSH建立连接的时间
-N [-p minwshport][-P maxwshport]:指定WSH可以使用的端口范围
上面的配置在启动后可以处理同时m*x=100个并发请求,最大可以处理500个。
在TCP并发处理方式之上进行了改进。监听进程还是只有一个(WSL),但是事先已经起了多个处理请求的进程(WSH),每个WSH又可以处理多个请求,这样就保证了大量的请求能同时得到处理,也省去了临时开服务进程的开销。
3) 环境变量的设置
TUXDIR
WSNADDR 为“-n”参数的值
WSTYPE(可选)
注:不要忘记用buildclient编译远程客户端程序时要加“-w”
local domain和remote domain可以在同一台服务器上,也可以在不同服务器上,即一台服务器可以有一个或多个DOMAIN。针对域的管理有三个服务进程DMADM,GWADM和GWTDOMAIN。这些服务必须配置在UBBCONFIG文件中。配置信息必须在远程和本地应用环境中定义。
除UBBCONFIG外,配置/DOMAINS还需要一些信息。这些信息在DMCONFIG文件中。DMCONFIG的文本文件通过dmloadcf编译成二进制文件BDMCONFIG。
服务DMADM是管理DOMAIN的server,维护和管理DMCONFIG,对GATEWAY GROUP(GWADM和GWTDOMAIN)提供支持。
服务GWADM是管理DOMAIN的域网关进程(GWTDOMAIN)的server,从DMADN取得DOMAIN的配置信息,并对GWTDOMAIN及全局事务的LOG文件进行管理。
服务GWTDOMAIN(GWT)负责响应域间通讯,处理DOMAIN之间的互操作。服务GWTDOMAIN通过TCP/IP协议与其他域进行通讯。物理上远程的域的应用位置是透明的。服务GWTDOMAIN是双向的,可以处理远程域发来的请求也可以向远程域发出请求。
GWTDOMAIN和DMADM必须在同一个组中,在一个tuxedo系统中可以有多个GWTDOMAIN、GWADM对,一个tuxedo系统只能有一个DMADM,DMADM可以在任何一个组中。
配置过程
第一步:UBBCONFIG应作相应改动
为/DOMAIN建立的新组应该和其他应用组隔离开。其一用于管理,其他是网关服务。
UBBCONFIG
*RESOURCES
IPCKEY 49152
MAXACCESSERS 2
MAXSERVERS 25
MASTER SITE1
MODEL SHM
*MACHINES
class2 LMID=SITE1
TUXDIR=”/usr/tuxedo”
APPDIR=”/usr/apps/atmapp”
TUXCONFIG=”/usr/apps/atmapp/atmapp.tux”
*GROUPS
LDMGRP LMID=SITE1 GRPNO=20
LGWGRP LMID=SITE1 GRPNO=30
#下一行用于‘prod’域
APP1 LMID=SITE1 GRPNO=10
*SERVERS
DMADM SRVGRP=LDMGRP SRVID=200
GWADM SRVGRP=LGWGRP SRVID=310
GWTDOMAIN SRVGRP=LGWGRP SRVID=320
#下一行用于‘prod’域
CUSTOMER CLOPT=”-A” SRVGRP=APP1(对应上面的group) SRVID=100
*SERVICES
#下一行用于‘prod’域
ProdCust
第二步:为域间请求创建DMCONFIG
下文的ASCII数据存在的文件一般称为DMCONFIG,由此生成的二进制格式文件称为BDMCONFIG。以下的DMCONFIG存在于“TEST“域,用来请求远程的”prod“域”ProdCust“交易。
DMCONFIG on TEST DOMAIN
#本地域信息
*DM_LOCAL_DOMAINS
#域网关组的标识符
test GWGRP=LGWGRP
#域类型:TDOMAIN即TUXEDO DOMAINS
TYPE=TDOMAIN
#域的唯一标识符
DOMAINID=”TEST”
#service的日志
DMTLOGDEV=”/usr/apps/atmapp/logs/DLOG”
#远程域信息
*DM_REMOTE_DOMAINS
production TYPE=TDOMAIN
DOMAINID=”prod”
*DM_TDOMAIN
#地址和设备名
prod NWADDR=”//lcspn1:3070”
NWDEVICE=”/dev/xti/tcp”
TEST NWADDR=”//lcspn2:3070”
NWDEVICE=”/dev/xti/tcp”
#远程域的service
*DM_REMOTE_SERVICES
ProdCust
*DM_LOCAL_SERVICES
第三步:创建DMCONFIG指定对域外提供的交易
下文的DMCONFIG位于域’prod’,该域将向其他域提供可调用交易:ProdCust。
域‘prod’上的DMCONFIG
#本地域信息
*DM_LOCAL_DOMAINS
production GWGRP=LGWGRP
TYPE=TDOMAIN
DOMAINID=”prod”
DMTLOGDEV=”/usr/apps/atmapp/logs/DLOG”
#远程域信息
*DM_REMOTE_DOMAINS
test TYPE=TDOMAIN
DOMAINID=”TEST”
*DM_TDOMAIN
prod NWADDR=”//lcspn1:3070”
NWDEVICE=”/dev/xti/tcp”
TEST NWADDR=”//lcspn2:3070”
NWDEVICE=”/dev/xti/tcp”
*DM_REMOTE_SERVICES
*DM_LOCAL_SERVICES
#远程域可以使用的服务
ProdCust
第四步:设定环境变量
/DOMAIN进程需要额外的环境变量去访问/DOMAINS配置信息
export BDMCONFIG=/usr/apps/atmapp/atmapp.bdm
第五步:编译ubbconfig
本过程是从两个域中相同的UBBCONFIG生成二进制文件TUXCONFIG。在本例中,UBBCONFIG的信息位于’ubbconfig’。
tmloadcf –y ubbconfig
第六步:编译dmconfig
本过程是创建二进制DOMAINS配置文件,BDMCONFIG,在两个域中相同;而两者都有的文件‘dmconfig’内容是不同的。
dmloadcf –y dmconfig