Tuxedo 作为系统的中间件,其配置主要包括:资源文件的配置和应用环境的配置;其管理和维护主要包括:系统的启动和关闭、日志的跟踪查看工作。
Tuxedo应用系统的配置
一、应用系统的资源配置,全都包含在两个资源配置文件中(ubbconfig 和dmconfig ),在这两个配置文件中包含了系统所有的应用资源(文件)。
1、 对于ubbconfig文件,可以任意使用一个文件名(如:ubb.txt),使用一种文本编辑工具,将应用系统的资源分类进行配置,相关进程启动数量等等都应该配置在其中,然后设置环境变量TUXCONFIG,使用系统命令:tmloadcf 来将文本文件ubb.txt,转化生成环境变量TUXCONFIG制定的二进制文件。在该文件中主要包含了几个参数的设置:系统所使用的共享内存的键值IPCKEY,针对workstation客户端的监听进程的端口(WSL),多台机器之间互连(登记中心与各网关)的网络地址和端口(NADDR,NLSADDR),数据依赖路由的设定等等。
详细的内容参看《Ubbconfig配置.doc》
参看模版来实现移植或添加应用进程等等。
2、 对于dmconfig文件,可以任意使用一个文件名(如:dm.txt),使用一种文本编辑工具,将应用系统的多域互联及互相调用的关系进行配置,包括多域之间互联的地址和端口,然后使用系统命令:dmloadcf 来将文本文件dm.txt,转化成环境变量BDMCONFIG所指定的二进制文件。在该文件中主要包含了在多个域互连时用到的一些设置,主要包括:各个域的定义,各个域通讯连接的地址和端口(NWADDR),本地服务(DM_LOCAL_SERVICES)和远端服务(DM_REMOTE_SERVICES)以及数据依赖路由等等。
详细的内容参看《dmconfig配置.doc》
参看模版来实现移植或添加应用远端或本地服务等等。
3、 客户端代码:是指使用编译工具buildclient编译生成的执行代码。在编译过程中,当使用编译参数:-w 时,将连接库wsc等,生成的执行代码将调用远端的服务,即通过环境变量:WSNADDR来查找相应的WSL的地址和端口; 当编译没有使用参数:–w时,生成的执行代码将调用本机的服务,通过环境变量:TUXCONFIG来实现调用相应的服务,如果要调用异域(如:代理集中点到登记中心)的服务,就需要在dmconfig文件中配置和公布服务。
4、 服务进程:是指使用编译工具buildserver编译生成的执行代码,不要出现main()函数,启动和关闭要使用Tuxedo的工具:tmboot 和 tmshutdown
二、应用系统的环境配置,即系统运行时的环境变量的设置
一般的这些环境变量都放在用户注册是的.profile文件中,也可以根据应用放置在专门的文件中,如:setenv等等,环境的设置主要包括:
TUXDIR:其值为TUXEDO的安装目录。
例如:TUXDIR=/home/tuxedo 或 TUXDIR=/home/bea
TUXCONFIG:其值为含有绝对路径二进制的资源配置文件的文件名,系统启动、监控、关闭等等都要用到此环境变量,当客户端的代码要调用应用系统的本机服务时也需要使用此变量。
例如:TUXCONFIG=/home/work/etc/tuxconfig
BDMCONFIG:其值为含有绝对路径二进制的多域配置文件的文件名,在使用多域间互联时要用到此环境变量。
例如:BDMCONFIG=/home/work/etc/dmcomfig
PRINTERDIR:传输文件的放置目录,主要是针对文件传输来使用的。
例如:PRINTERDIR=/home/work/print
FTP_BLOCK_SIZ:针对文件传输的,每次传输的快的大小,如果没有设置,则系统默认为1024。
例如: FTP_BLOCK_SIZE=10240;export FTP_BLOCK_SIZE
WSNADDR:客户端(workstation)设定的,指向服务器端WSL监听的地址和端口,当客户端的代码要调用系统的远端服务时需要此环境变量。
例如:WSNADDR=//192.168.42.210:7001
Tuxedo 的管理和维护
一、 系统的启动:
1、 多机系统的启动(如:登记中心的启动)
首先设置环境变量,在各台机器上启动tlisten进程,一般设置在setenv中,然后在主管理机上,使用命令tmboot启动应用系统
tmboot 命令可以选择使用多个参数:
-A 在各台机器上启动核心的进程(DBBL,BBL)。
-l lmid 启动某一台机器lmid上的全部进程,机器名:lmid是在文件ubb.txt中配置的逻辑名。
-g grpname 启动某一组grpname中的全部进程。
-s server 启动某一个进程server。
2、 单机系统的启动(如:代理集中点的起动)
首先设置环境变量,然后使用命令tmboot
-A 在机器上启动核心的进程(BBL)。
-g grpname 启动某一组grpname中的全部进程。
-s server 启动某一个进程server。
二、 系统的关闭:
1、 多机系统的关闭(如:登记中心的关闭)
应该在主管理机上,使用命令tmshutdown
tmshutdown 命令可以选择使用多个参数:
-y 关闭各台机器上的全部进程。
-l lmid 关闭某一台机器lmid上的全部进程。
-g grpname 关闭某一组grpname中的全部进程。
-s server 关闭某一个进程server。
2、 单机系统的关闭(如:代理集中点的关闭)
使用命令tmshutdown
-y 关闭机器上的全部进程。
-g grpname 关闭某一组grpname中的全部进程。
-s server 关闭某一个进程server。
三、 系统的日志跟踪:
1、 使用管理工具tmadmin
运行tmadmin进入管理维护界面
2、 查看系统日志 ULOG.mmddyy
在系统设定的目录下查看日志文件:ULOG.mmddyy和应用系统自己的日志。
代理集中点的安装和配置
一、 软件打包
将目前的代理集中点上的配置文件目录~/etc和简单测试目录~/apps打成一个包。在目录~/apps下的内容多适用于测试环境配置结束后是否正常,在系统正常启动运行后就不再有什么作用了。
二、 系统安装和配置
1、 修改资源管理配置文件:ubb.txt
可以使用任意的文本编辑工具,如vi等等编辑工具,以下同。
修改其中的: IPCKEY,TUXDIR,APPDIR,TUXCONFIG,ENVFILE,ULOGFPX和主机名(通过uname –n看到的)等的值,使之与实际环境相一致。修改 WSL的参数:CLOPT=“-A -- -n 地址:端口…”,使之与实际的环境一致,例如:CLOPT=“-A -- -n 192.168.42.220:7410”。
2、 修改域管理配置文件:dm.txt
修改:NWADDR的地址:端口,例如:NWADDR="//192.168.42.231:7310"
要注意在系统中的dm.txt中的DOMAINID要保持一致,即在不同的文件重要有统一的命名。
3、 修改环境变量设置文件:setenv,将如下环境变量的值进行修改,使之与实际的配置想符合,以下是参考。
例如:
TUXDIR=/home/tuxedo; export TUXDIR
PATH=$TUXDIR/bin:$PATH:$HOME/runtime:.; export PATH
SHLIB_PATH=$TUXDIR/lib:/usr/lib:/lib;export SHLIB_PATH (for HPUX)
LIBPATH=$TUXDIR/lib:$LIBPATH; export LIBPATH ( for AIX )
LD_LIBRARY_PATH=/usr/tuxedo/lib: /usr/informix/lib/esql ( for SCO )
NLSPATH=$TUXDIR/locale;export NLSPATH
LANG=C;export LANG
TUXCONFIG=/home/ebistest/config/tuxconfig;export TUXCONFIG
BDMCONFIG=/home/ebistest/config/bdmconfig;export BDMCONFIG
FIELDTBLS32=ftpflds;export FIELDTBLS32
FLDTBLDIR32=$TUXDIR/api105;export FLDTBLDIR32
在SCO、HP、IBM系统上的函数库环境设置有个不相同的环境变量(如:SHLIB_PATH、LIBPATH),需要注意。
针对文件传输的,如果文件较大,可以将环境变量FTP_BLOCK_SIZE的值设置的大一点,如果没有设置该环境变量,则系统默认为1024。例如:
FTP_BLOCK_SIZE=10240;export FTP_BLOCK_SIZE
4、 系统启动
首先设置环境变量,可以放在.profile中,也可以执行文件. ./setenv,并创建日志存放目录 ~/log。
然后执行tmboot 即可
三、 故障排除
查看系统日志 ULOG.mmddyy
在系统设定的目录下查看日志文件:ULOG.mmddyy和应用系统自己的日志。
登记中心的安装和配置
一、 软件打包
将目前的登记中心及其网关机上的配置文件目录~/etc和简单测试目录~/apps,及网关机上的~/cjhb打成一个包。在目录~/cjhb下的内容是用于完成成交回报交易的。
二、系统安装和配置
1、 修改资源管理配置文件:ubb.txt
可以使用任意的文本编辑工具,如vi等等编辑工具,以下同。
修改其中的: IPCKEY,TUXDIR,APPDIR,TUXCONFIG,ENVFILE,ULOGFPX和主机名(通过uname –n看到的)等的值,使之与实际环境相一致。修改 WSL的参数:CLOPT=“-A -- -n 地址:端口…”,使之与实际的环境一致,例如:CLOPT=“-A -- -n 192.168.42.220:7410”。
2、 修改域管理配置文件:dm.txt,此文件可以放在登记中心机器上,也可以放在网关机器上的响应目录下。
修改:NWADDR的地址:端口,例如:NWADDR="//192.168.42.231:7310"
要注意在系统中的dm.txt中的DOMAINID要保持一致,即在不同的文件重要有统一的命名。
3、 修改环境变量设置文件:setenv,将如下环境变量的值进行修改,使之与实际的配置想符合。
例如:
TUXDIR=/home/tuxedo; export TUXDIR
PATH=$TUXDIR/bin:$PATH:$HOME/runtime:.; export PATH
SHLIB_PATH=$TUXDIR/lib:/usr/lib:/lib;export SHLIB_PATH (for HPUX)
LIBPATH=$TUXDIR/lib:$LIBPATH; export LIBPATH ( for AIX )
LD_LIBRARY_PATH=/usr/tuxedo/lib: /usr/informix/lib/esql ( for SCO )
NLSPATH=$TUXDIR/locale;export NLSPATH
LANG=C;export LANG
TUXCONFIG=/home/ebistest/config/tuxconfig;export TUXCONFIG
BDMCONFIG=/home/ebistest/config/bdmconfig;export BDMCONFIG
FIELDTBLS32=ftpflds;export FIELDTBLS32
FLDTBLDIR32=$TUXDIR/api105;export FLDTBLDIR32
针对文件传输的,如果文件较大,可以将环境变量FTP_BLOCK_SIZE的值设置的大一点,如果没有设置该环境变量,则系统默认为1024。例如:
FTP_BLOCK_SIZE=10240;export FTP_BLOCK_SIZE
4、 修改在网关机上的环境设置文件envfile和setenv,将如下的环境变量进行修改,使之与实际的配置想符合。
除了上面列出的还有如下几个变量:
MCHSNDFILE=/tmp/beta/matchsend.txt;export MCHSNDFILE
FSNDLOG=/tmp/beta/Fsnd.log;export FSNDLOG
PRINTERDIR=/tmp/beta; export PRINTERDIR
主要是用于成交回报交易的。
5、系统启动
首先设置环境变量,可以放在.profile中,也可以执行命令. ./setenv
然后再登记中心机器上(MASTER)执行tmboot 即可,可以选择分步来启动应用系统,使用:tmboot –A 和 tmboot –l 来逐个启动系统。
网点的安装和配置
一、 软件打包
1、 网点的中间件软件(tuxedo),只是需要一些客户端的库函数等等,在选择workstation模式安装后,将tuxedo的所有文件达成一个包即可。
2、 需要在网点编译时,要注意配置环境变量,参看下面的系统配置。
二、系统的配置
1、 配置环境变量
修改环境变量设置文件(tux.env 或setenv),将如下环境变量的值进行修改,使之与实际的配置想符合。
例如:
TUXDIR=/home/tuxedo; export TUXDIR
PATH=$TUXDIR/bin:$PATH:$HOME/runtime:.; export PATH
SHLIB_PATH=$TUXDIR/lib:/usr/lib:/lib;export SHLIB_PATH (for HPUX)
LIBPATH=$TUXDIR/lib:$LIBPATH; export LIBPATH ( for AIX )
LD_LIBRARY_PATH=/usr/tuxedo/lib: /usr/informix/lib/esql ( for SCO )
NLSPATH=$TUXDIR/locale;export NLSPATH
LANG=C;export LANG
2、 配置与代理集中点相连接的环境变量
各个网点的应用代码都是通过工作站(workstation)方式与代理集中点连结的。因此要配置连结代理集中点的tcp/ip地址和端口。
例如:
WSNADDR=//192.168.42.220:7520; export WSNADDR
也可以主机名加端口,例如:
WSNADDR=//hp01:7520; export WSNADDR
常见的问题及解决方法
以下常见的都是在使用中间过程中遇到的问题:
一、 与数据库的连接问题
在测试中看到,应用代码都是自己去联的数据库,为了保证效率,都是在进程启动的时候预先建立起连接,这样保证了交易进行时的效率;但当数据库出现宕机时,连接也将随之丢失了,这时的应用程序就不能再访问数据库了,在目前的应用中都没有对访问数据库的返回码进行判断,如果是连接失败的可以选择重新连接数据库,而不是退出交易,这样交易又可以正常运行了。
目前,这样的情况出现后,就需要将应用系统重新启动,使应用程序同数据库进行重新连接。
二、代理集中点上常见的一个问题
在代理集中点上常看到两条队列,键值是32和3e8,这两条队列在写满时,因为监控进程没有及时读队列,常常会影响与之有关的几个进程,只需要将这两条队列清空就可以了。
三、系统启动不正常
常见的原因有如下几个:
1、 环境变量没有设好,如上面的所说的各个环境变量。可以到~/etc目录下使用命令:. ./setenv来设置一下。
2、 据库连接失败,这样会导致连接数据库的应用进程不能启动。检查数据库确保能够正常连接后,再重新启动这些进程。
3、 单个进程的问题,比如执行权限等等,参看日志文件来找出原因。
4、 在登记中心使用的是多机互连方式,主管机器负责启动所用的进程,在所有的机器上都要有相应的监听进程:tlisten,对于网关机上的服务,如果网关机宕机或被重新启动时,要将监听进程启动起来,在~/etc目录下,使用命令:. ./setenv即可,然后先在主管机器上运行tmadmin,进入后并执行pcl gwname命令来清理掉网关机得响应信息,再退出并重新启动网关机上的应用系统:tmboot –l gwname。
注:gwname时网关机的逻辑名,在ubb.txt(Ubbconfig)中定义的,不同的网关机有不同的逻辑名。
注:tlisten进程可以多次启动,当该进程已经正常运行时,再次启动会报出错误信息:CMDTUX_CAT:1319: INFO: Terminating tlisten process,在日志文件中也有相应的记录,这说明该进程已经启动了。
5、 如果有某些进程始终在内存中,导致系统不能启动时,可以将这些进程杀掉,并将与之相关的队列和内存也都清掉,然后重新启动系统。
四、 系统关闭不正常
1、 客户端与系统在发生交易或连接,如:tmadmin等等或客户端的某些服务等正在运行,这些都会导致系统的主进程不能正常关闭。
2、 登记中心使用的是多机互连方式,主管机器负责启动和关闭所用的进程,在所有的机器上都要有相应的监听进程:tlisten,对于网关机上的服务,如果网关机宕机或被重新启动时,要将监听进程启动起来,在~/etc目录下,使用命令:. ./setenv即可,然后先在主管机器上运行tmadmin命令,然后执行pcl gwname命令来清理掉网关机得响应信息,再退出并重新关闭网关机上的应用系统:tmshutdown –l gwname。
注:gwname时网关机的逻辑名,在ubb.txt(Ubbconfig)中定义的,不同的网关机有不同的逻辑名。
注:tlisten进程可以多次启动,当该进程已经正常运行时,再次启动会报出错误信息:CMDTUX_CAT:1319: INFO: Terminating tlisten process,在日志文件中也有相应的记录,这说明该进程已经启动了。
3、 如果有某些进程始终在内存中,导致系统不能正常关闭时,可以将这些进程杀掉,并将与之相关的队列和内存也都清掉;这些进程往往都是由于运行中出现的异常导致僵死在内存里了,需要手工干预的。
4、 有时候,有几个操作人员在同时启动系统,会导致系统的某些进程与主进程失去联系,这样就很难关闭了,只好手工来杀掉(kill),并将与之相关的队列、信号灯和共享内存也都清掉(ipcrm)。
五、 交易连接失败
1、环境变量设置有误,特别是使用客户端代码,直接连接远端服务的;需要重新设定环境变量,如:WSNADDR,TUXCONFIG等等,环境变量设置正确后,再进行交易就可以了。
2、对方交易没有启动,这是的出错代码在日志文件中tperrno=6,是很典型的,找不到相应的服务;检查服务是否存在,重新启动服务即可。
3、在代理集中点上常常因为某条队列(32或 3e8)阻塞,影响几个进程的访问,如操作员注册等会因为超时而失败;只需要将这两条队列清空就可以了。
六、成交回报的交易出错
1、 进程(gwreadfs)启动时有错误;检查网关机上环境设置是否正确,查看文件~/etc/envfile中的内容,并根据其中的环境变量MCHSNDFILE和FSNDLOG所指定的文件, 如:~/data/matchsend.txt和~/data/Fsnd.log,看看这两个文件是否存在,否则,启动时会指出文件打不开而出错的。
2、 成交回报的内容没有正确的传到代理集中点上,要检查文件:senderr.log看其中的代理集中点号是否正确,主要是位置是否正确,并且看看在路由表中是否有配置,这类问题在测试初期曾出现过多次。
3、 交易过程中,文件如果被删除掉了,(特别是目前放在临时目录下的这种情况),就需要在启动进程前,手工创建一个同名的空文件matchsend.txt;如果进程已经启动,则需要重新启动该进程。