Tuxedo
配置管理简要
说明
一、Tuxedo基本命令
#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.编译ubb文本生成二进制配置文件:tmloadcf ?Cy ubbconfig
#3.所有机器上运行tlisten,具体见文档中NETWORK一节
#4.启动tmboot ?Cy
#5.关闭tmshutdown ?Cy
参数:
-A 在所有机器上启动/关闭管理的Server进程
-M 只在MASTER机器上启动/关闭管理的Server进程
-i srvid 启动/关闭某个server id指定的Server进程
-g grpname 启动/关闭某个server group名字指定的Server Group
-S 启动/关闭所有应用服务器(LMID)
-s server-name 启动/关闭某个server名字指定的Server进程
-l lmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)
-T grpname 启动/关闭指定的server group中所有的TMS进程
-B lmid 在指定的机器上启动/关闭BBL进程
-e command 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行
-c 计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源
#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得参数值(没有设置的有缺省值)
#用tmloadcf ?Cc或tmboot ?Cc可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。
二、UBB文件配置 说明
UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干节。
DEFAULT表示该节中所有对象共有的缺省属性。
*RESOURCES
#RESOUCES节提供整个系统的基本参数。
IPCKEY 55555 (32767-262143)
#进行IPC通讯的key值
DOMAINID unicom
#DOMAIN的ID值
MASTER unicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题,管理主机切换至unicom2
MAXACCESSERS 1000
#这里该值表示整个系统中每个机器上可以访问TUXEDO的Client和Server的总数(可以访问 BBL的最大进程数),应大于license用户数+server数(副本应记入)。该字段会被MACHINE部分的MAXACCESSERS覆盖。
#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目,而ipc消息个数(MSGMAX)应大于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。
MAXSERVERS 80
#最大的server数(副本应记入)
MAXSERVICES 200
#最大的service数(多个server重复记入)
MAXGTT 20
#系统最多的并发的全局交易数目
MODEL MP
#表示cluster方式,否则为SHM
OPTIONS LAN,MIGRATE
#多机cluster方式时必须指定为LAN方式,MIGRATE表示可以以组为单位进行机器间SERVER的迁移。
LDBAL Y
#允许负载均衡
SCANUN99v 10
#SCANUN99v 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位, 它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。SAN99vYSCAN, BBLQUERY, DBBLWA99v, BLOCKTIME等参数都是SCANUN99v的倍数,而不是实际秒数。而作为时间单位SCANUN99v必须是5的倍数,并且满足0<SCANUN99v<60。
SAN99vYSCAN 12
#SAN99vYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUN99v为单元。缺省值满足(SCANUN99v*SAN99vYSCAN)约为120秒。
DBBLWA99v 2
#DBBLWA99v的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUN99v为单元,即超过DBBLWA99v*SCANUN99v(秒)就超时。每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满足(SCANUN99v*DBBLWA99v)的值等于SCANUN99v和20秒两者之间的最大者。
BBLQUERY 30
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUN99v为计算单位。如果DBBL的状态询问没有回答,该BBL就被‘隔离'了。缺省值满足(SCANUN99v * BBLQUERY) 约为 300秒。
BLOCKTIME 6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间,以SCANUN99v为计算单位。缺省值满足(SCANUN99v * BLOCKTIME) 约为60秒。
*MACHINES
DEFAULT:
#该部分对各主机进行描述。
unicom2 LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1 LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
#unicom2, unicom1为网络主机名用hostname获得(主机名要大写)。
#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。
#APPDIR要求放置SERVER的可执行文件。
#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。对于master机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表示可连接client的最大个数。
*GROUPS
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
GROUP1 LMID=unicom2 GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3 GRPNO=2 OPENINFO=NONE
*SERVERS
#这里描述应用服务器。SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。
DEFAULT:
CLOPT="-A"
BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log ?Cr -e ./err.log --
-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。控制算法如下:如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程; 如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100. create_time 缺省是50, and terminate_time 缺省是60。
注意;使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。
[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:1542) ,服务进程也不会增减。
WSL SRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。-n 表示出接入点为IP ORT方式,-m ?CM 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。-T 10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。
*SERVICES
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中 说明。
TOUPPER
*NETWORK
#NETWORK节对多机之间如何进行网络连接进行描述。
#cluster方式下要求先启动tlisten。事实上,对于非master机启动应用服务器是由tlisten完成的。
#tlisten的启动方式为
#unicom1: tlisten ?Cl //130.36.1.101:8891
#unicom2: tlisten ?Cl //130.36.0.102:8891
#NADDR指定网络连接的接入点。
#NLSADDR则指定tlisten的接入点。
#BRIDGE则指TCP连接所用的设备文件。
unicom2
NADDR="//130.36.0.102:8899"
NLSADDR="//130.36.0.102:8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:8899"
NLSADDR="//130.36.0.101:8891"
BRIDGE="/dev/streams/xtiso/tcp"
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
2.ubb 文件中 *GROUP节 TMSNAME=TMS_ORA TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development´s
Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle一侧需运行xaview.sql,并且scott用户有操作权限,运行结果会记录trc文件里.(在oracle8.0.5这一步不是必须的)
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracl
一、Tuxedo基本命令
#1.设置环境变量TUXDIR,APPDIR,TUXCONFIG,LANG(跟OS相关),LD_LIBRARY_PATH(跟OS相关)
#2.编译ubb文本生成二进制配置文件:tmloadcf ?Cy ubbconfig
#3.所有机器上运行tlisten,具体见文档中NETWORK一节
#4.启动tmboot ?Cy
#5.关闭tmshutdown ?Cy
参数:
-A 在所有机器上启动/关闭管理的Server进程
-M 只在MASTER机器上启动/关闭管理的Server进程
-i srvid 启动/关闭某个server id指定的Server进程
-g grpname 启动/关闭某个server group名字指定的Server Group
-S 启动/关闭所有应用服务器(LMID)
-s server-name 启动/关闭某个server名字指定的Server进程
-l lmid option 在指定的机器上启动/关闭所有TMS进程和应用服务器(LMID)
-T grpname 启动/关闭指定的server group中所有的TMS进程
-B lmid 在指定的机器上启动/关闭BBL进程
-e command 指定一个程序可以当在MASTER机器上启动任何一个进程失败时执行
-c 计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源
#用tmunloadcf > generated.ubb 可以得出目前配置得UBB文件所有得参数值(没有设置的有缺省值)
#用tmloadcf ?Cc或tmboot ?Cc可以计算出当前UBB配置的Tuxedo启动最少要占用的系统IPC资源。
二、UBB文件配置 说明
UBB配置文件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若干节。
DEFAULT表示该节中所有对象共有的缺省属性。
*RESOURCES
#RESOUCES节提供整个系统的基本参数。
IPCKEY 55555 (32767-262143)
#进行IPC通讯的key值
DOMAINID unicom
#DOMAIN的ID值
MASTER unicom1,unicom2
#指定DOMAIN中的管理主机为unicom1,运行过程中unicom1若出现问题,管理主机切换至unicom2
MAXACCESSERS 1000
#这里该值表示整个系统中每个机器上可以访问TUXEDO的Client和Server的总数(可以访问 BBL的最大进程数),应大于license用户数+server数(副本应记入)。该字段会被MACHINE部分的MAXACCESSERS覆盖。
#系统核心参数中SEMAPHORE的数目(SEMMNS)要大于这里的MAXACCESSERS数目,而ipc消息个数(MSGMAX)应大于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。
MAXSERVERS 80
#最大的server数(副本应记入)
MAXSERVICES 200
#最大的service数(多个server重复记入)
MAXGTT 20
#系统最多的并发的全局交易数目
MODEL MP
#表示cluster方式,否则为SHM
OPTIONS LAN,MIGRATE
#多机cluster方式时必须指定为LAN方式,MIGRATE表示可以以组为单位进行机器间SERVER的迁移。
LDBAL Y
#允许负载均衡
SCANUN99v 10
#SCANUN99v 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位, 它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。SAN99vYSCAN, BBLQUERY, DBBLWA99v, BLOCKTIME等参数都是SCANUN99v的倍数,而不是实际秒数。而作为时间单位SCANUN99v必须是5的倍数,并且满足0<SCANUN99v<60。
SAN99vYSCAN 12
#SAN99vYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUN99v为单元。缺省值满足(SCANUN99v*SAN99vYSCAN)约为120秒。
DBBLWA99v 2
#DBBLWA99v的值指定DBBL扫描BBL时等待所有BBL应答的最大时间,以SCANUN99v为单元,即超过DBBLWA99v*SCANUN99v(秒)就超时。每一次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复一个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满足(SCANUN99v*DBBLWA99v)的值等于SCANUN99v和20秒两者之间的最大者。
BBLQUERY 30
#BBLQUERY指定DBBL对所有BBL进行状态检查的时间间隔,它也是以SCANUN99v为计算单位。如果DBBL的状态询问没有回答,该BBL就被‘隔离'了。缺省值满足(SCANUN99v * BBLQUERY) 约为 300秒。
BLOCKTIME 6
#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间,以SCANUN99v为计算单位。缺省值满足(SCANUN99v * BLOCKTIME) 约为60秒。
*MACHINES
DEFAULT:
#该部分对各主机进行描述。
unicom2 LMID=unicom2
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXACCESSERS=100
unicom1 LMID=unicom1
APPDIR="/usr/tuxedo/apps/simpapp"
TUXCONFIG="/usr/tuxedo/apps/simpapp/tuxconfig"
TUXDIR="/usr/tuxedo"
UID=17
GID=26
MAXWSCLIENTS=50
#unicom2, unicom1为网络主机名用hostname获得(主机名要大写)。
#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。
#APPDIR要求放置SERVER的可执行文件。
#TUXCONFIG为全路径的二进制配置文件,要求和环境变量TUXCONFIG相同。对于master机tuxconfig文件是由tmloadcf生成的,而非master机则是由tmboot启动后由tlisten从master机上拷贝获得。
#TUXDIR为tuxedo安装目录,要求和环境变量TUXDIR相同。
#MAXWSCLIENTS表示可连接client的最大个数。
*GROUPS
#GROUP1为组名,LMID表示该组运行的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。
GROUP1 LMID=unicom2 GRPNO=1 OPENINFO=NONE
GROUP2 LMID=unicom3 GRPNO=2 OPENINFO=NONE
*SERVERS
#这里描述应用服务器。SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表示该服务器CLOPT提供运行的相关参数,要求是”-A -- ….”,可以在应用服务器的srvinit函数中获得这些参数。
DEFAULT:
CLOPT="-A"
BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4
RQADDR=QNAME REPLYQ=Y
CLOPT="-A -o ./out.log ?Cr -e ./err.log --
-p [L][low_water][,[terminate_time]][:[high_water][,create_time]]
如果MAX>1,并且使用了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。控制算法如下:如果请求队列中的请求个数大于high_water 后超过create_time 秒,就增加该服务的一个新进程; 如果请求队列中的请求个数小于low_water 后超过terminate_time 秒, 就停止该服务的一个进程。low_water 缺省是平均每个服务进程有一个请求消息或者workload 50;high_water 缺省是平均每个服务进程有两个请求消息或者workload 100. create_time 缺省是50, and terminate_time 缺省是60。
注意;使用TUXEDO的服务进程池时,用户自己在程序中如果用alarm()等系统调用来停止进程是不起作用的,但也不会报错。
[L] 标记意味着增减服务进程基于负载而不是请求队列的长度。仅用于SHM模式下并且LDBAL=Y,否则会报错 (LIBTUX_CAT:1542) ,服务进程也不会增减。
WSL SRVGRP=GROUP2 SRVID=1
CLOPT="-A -- -n //130.36.0.103:8889 -m 3 -M 10 -x 10 -T 10"
#WSL用于和client端进行连接。-n 表示出接入点为IP ORT方式,-m ?CM 表示最小和最大启动多少个WSH和前端通讯,-x则表示一个WSH和几个client端连接。-T 10表示如果client端和server连接后10分钟内没有交易请求则关闭连接。
*SERVICES
#不要求将所有的service在这里描述,当某个service有特别参数时才在SERVICE节中 说明。
TOUPPER
*NETWORK
#NETWORK节对多机之间如何进行网络连接进行描述。
#cluster方式下要求先启动tlisten。事实上,对于非master机启动应用服务器是由tlisten完成的。
#tlisten的启动方式为
#unicom1: tlisten ?Cl //130.36.1.101:8891
#unicom2: tlisten ?Cl //130.36.0.102:8891
#NADDR指定网络连接的接入点。
#NLSADDR则指定tlisten的接入点。
#BRIDGE则指TCP连接所用的设备文件。
unicom2
NADDR="//130.36.0.102:8899"
NLSADDR="//130.36.0.102:8891"
BRIDGE="/dev/streams/xtiso/tcp"
unicom1
NADDR="//130.36.0.101:8899"
NLSADDR="//130.36.0.101:8891"
BRIDGE="/dev/streams/xtiso/tcp"
三、数据库XA设置
3.1 ORACLE XA
1.在附件中提供了rm文件,另外建议运行oracle的demo文件获得要连接的所有lib库的名称.然后将这些名称全部写在RM文件中.
2.ubb 文件中 *GROUP节 TMSNAME=TMS_ORA TMSCOUNT=3 OPENINFO="Oracle_XA:Oracle_XA+Acc=P/scott/tiger+SesTM=120+LogDir=.+SqlNet=abcde"
具体在Oracle联机文档Application Development->oracle8 Application Development´s
Guild->Oracle XA->Defining the xa_open String中提供了解释
3.在oracle一侧需运行xaview.sql,并且scott用户有操作权限,运行结果会记录trc文件里.(在oracle8.0.5这一步不是必须的)
4.运行 buildtms -o $(TUXDIR)/bin/TMS_ORA -r Oracl