tuxedo诱人之处就是他的身份:中间件。而集群配置是发挥中间件作用的基础,本文简要描述一个集群框架;
(一)集群概要图
下图是tuxedo集群的概要描述,很多教材都引用了这幅图:
有几点需要注意:
1、TUXCONFIG:TUXCONFIG文件只在Master主机上进行编译,其他主机(称该类主机为-从主机)不要编译,在初始时候,其他主机应该是没有该文件的,该文件是在Master发出tmboot启动的时候通过bridge链接将TUXCONFIG文件copy到各个从主机上;
2、DBBL:Master主机上有独立进程DBBL,负责管理集群中所有主-从主机上的BBL进程,主要是实时监测BBL中服务列表的状况,找到某台主机上的服务也是通过DBBL进程定位的;
3、BRIDGE:主-从主机是通过bridge进程进行网络通信的,常用的是tcp协议进行通信;
4、TLISTEN:主-从主机都需要在集群启动之前,启动tlisten监听程序,目的是监听连接请求,当某台主机tlisten进程监测到连接请求时,受理请求移交给bridge进程处理,然后继续监听,所以bridge是真正干活的;Master主机配tlisten其实是便于以后Master主机间的切换:即Master变为从主机,另一台从主机变为Master主机。tuxedo支持这种切换;
5、APPLICATION:不同的主机可以有不同的server及service,当然可以相同;
(二)TUXCONFIG文件
文本文件内容应该大体如下(假设只有Master和一台从主机,共两个主机组成的集群):
为了解释方便直接在代码中注释,如编译需要删除注释;
*RESOURCES IPCKEY 55433 MASTER SITE1,SITE2//site2为备用Master,site1宕机了site2顶替 MODEL MP//模式是multiple machine OPTIONS LAN//置为lan,这和MP配对使用 *MACHINES "centos"//master主机名 LMID=SITE1 TUXDIR="/home/tuxedo/tuxedo11gR1" APPDIR="/home/tuxedo/studylabA11/exercises/mmc" TUXCONFIG="/home/tuxedo/studylabA11/exercises/mmc/tuxconfig" UID=502//centos tuxedo管理员用户的UID GID=504//centos tuxedo管理员用户的GID "node2"//从主机主机名 LMID=SITE2 TUXDIR="/home/tuxedo/tuxedo11gR1" APPDIR="/home/tuxedo/studylabA11/exercises/mmc" TUXCONFIG="/home/tuxedo/studylabA11/exercises/mmc/tuxconfig" UID=501//node2上面tuxedo管理员的UID GID=501//node2上面tuxedo管理员的GID *GROUPS APPGRP1 LMID=SITE1 GRPNO=1 APPGRP2 LMID=SITE2 GRPNO=2 *NETWORK//配置集群不可少的网络配置 SITE1 NADDR="//192.168.102.100:9003"//bridge进程使用的网络地址及端口 NLSADDR="//192.168.102.100:3050"//tlisten进程使用的网络地址及端口 SITE2 NADDR="//192.168.102.101:9004" NLSADDR="//192.168.102.101:3051" *SERVERS serverping SRVID=10 SRVGRP=APPGRP1 CLOPT="-A" serverping SRVID=20 SRVGRP=APPGRP2 CLOPT="-A"
执行tmloadcf命令编译,这样tuxconfig文件完成了
(三)启动tuxedo集群
在启动之前需要执行一下步骤:
1、启动tlisten进程:在全部主机上执行tlisten监听进程,如centos> tlisten -l //192.168.102.100:3050 node2> tlisten -l //192.168.102.101:3051 注意端口和ip和上面tuxconfig中要一致;
2、准备好tuxconfig指定的server app软件;这个。。。就不多说了,不能没有服务;
3、tmboot启动集群即可;
检验下执行结果
centos上:
[tuxedo@centos mmc]$ tlisten -l //192.168.102.100:3050 [tuxedo@centos mmc]$ ps -ef | grep tuxedo root 1728 1705 0 09:59 pts/0 00:00:00 su tuxedo tuxedo 1731 1728 0 09:59 pts/0 00:00:00 bash tuxedo 2312 1 0 12:24 pts/0 00:00:00 tlisten -l //192.168.102.100:3050 tuxedo 2313 1731 1 12:24 pts/0 00:00:00 ps -ef tuxedo 2314 1731 0 12:24 pts/0 00:00:00 grep tuxedo [tuxedo@centos mmc]$ tmboot Boot all admin and server processes? (y/n): y Booting all admin and server processes in /home/tuxedo/studylabA11/exercises/mmc/tuxconfig INFO: Oracle Tuxedo, Version 11.1.1.2.0, 64-bit, Patch Level (none) Booting admin processes ... exec DBBL -A : on SITE1 -> process id=2316 ... Started. exec BBL -A : on SITE1 -> process id=2317 ... Started. exec BBL -A : on SITE2 -> process id=2443 ... Started. Booting server processes ... exec serverping -A : on SITE1 -> process id=2321 ... Started. exec serverping -A : on SITE2 -> process id=2445 ... Started. 5 processes started.
[tuxedo@centos mmc]$ tmadmin tmadmin - Copyright (c) 1996-2010 Oracle. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by Oracle. Tuxedo is a registered trademark. > psr Prog Name Queue Name Grp Name ID RqDone Load Done Current Service --------- ---------- -------- -- ------ --------- --------------- BBL 30003.00000 SITE2 0 - - ( - ) BBL 30002.00000 SITE1 0 - - ..TMIB0 DBBL 55433 SITE1 0 27 1350 ..MASTERBB BRIDGE 579721 SITE2 1 - - ( - ) BRIDGE 317577 SITE1 1 - - ( - ) serverping 00001.00010 APPGRP1 10 - - ( - ) serverping 00002.00020 APPGRP2 20 - - ( - ) > psc Service Name Routine Name Prog Name Grp Name ID Machine # Done Status ------------ ------------ --------- -------- -- ------- ------ ------ PING PING serverping APPGR+ 10 SITE1 - AVAIL PING PING serverping APPGR+ 20 SITE2 - AVAIL >
[tuxedo@centos mmc]$ ps -ef | grep tuxedo root 1728 1705 0 09:59 pts/0 00:00:00 su tuxedo tuxedo 1731 1728 0 09:59 pts/0 00:00:00 bash tuxedo 2312 1 0 12:24 pts/0 00:00:00 tlisten -l //192.168.102.100:3050 tuxedo 2316 1 0 12:24 pts/0 00:00:00 DBBL -g 30001 -i 0 -u centos -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 0 -A tuxedo 2317 1 0 12:24 pts/0 00:00:00 BBL -g 30002 -i 0 -u centos -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 0 -A tuxedo 2318 1 0 12:24 pts/0 00:00:00 BRIDGE -g 30002 -i 1 -u centos -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 0 -A tuxedo 2321 1 0 12:24 pts/0 00:00:00 serverping -g 1 -i 10 -u centos -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 0 -A tuxedo 2332 1731 0 12:28 pts/0 00:00:00 ps -ef tuxedo 2333 1731 0 12:28 pts/0 00:00:00 grep tuxedo [tuxedo@centos mmc]$
node2上:
[tuxedo@node2 mmc]$ ps -ef | grep tuxedo root 1614 1591 0 09:06 pts/0 00:00:00 su tuxedo tuxedo 1617 1614 0 09:07 pts/0 00:00:00 bash root 1861 1637 0 09:24 pts/0 00:00:00 su tuxedo tuxedo 1865 1861 0 09:24 pts/0 00:00:00 bash tuxedo 2431 1 0 11:48 pts/0 00:00:00 tlisten -l //192.168.102.101:3051 tuxedo 2443 2431 0 11:50 pts/0 00:00:00 BBL -g 30003 -i 0 -u node2 -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 65537 -A tuxedo 2444 2431 0 11:50 pts/0 00:00:00 BRIDGE -g 30003 -i 1 -u node2 -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 65537 -A tuxedo 2445 2431 0 11:50 pts/0 00:00:00 serverping -g 2 -i 20 -u node2 -U /home/tuxedo/studylabA11/exercises/mmc/ULOG -m 65537 -A tuxedo 2452 1865 1 11:53 pts/0 00:00:00 ps -ef tuxedo 2453 1865 0 11:53 pts/0 00:00:00 grep tuxedo [tuxedo@node2 mmc]$
结果里面关注几个重要进程:DBBL、BBL、BRIDGE、tlisten、serverping;
这样集群就跑起来了,这时就可以用客户端调用了,如果客户端没有在这两台主机上,还需要配置WSL进程;若客户端在集群中的主机上,那么就无需配置WSL了,直接就可以调用服务,并且会就近访问,这得益于tuxconfig文件的分发机制!看测试结果:
在centos上运行客户端(一个ping 的程序,返回调用主机的信息):
[tuxedo@centos mmc]$ ./clientping Result of PING request is: LMID = SITE1, Group = APPGRP1, Server ID = 10, Process ID = 2321 Result of PING request is: LMID = SITE1, Group = APPGRP1, Server ID = 10, Process ID = 2321 Result of PING request is: LMID = SITE1, Group = APPGRP1, Server ID = 10, Process ID = 2321 Result of PING request is: LMID = SITE1, Group = APPGRP1, Server ID = 10, Process ID = 2321 Result of PING request is: LMID = SITE1, Group = APPGRP1, Server ID = 10, Process ID = 2321
在node2上运行客户端
[tuxedo@node2 mmc]$ ./clientping Result of PING request is: LMID = SITE2, Group = APPGRP2, Server ID = 20, Process ID = 2445 Result of PING request is: LMID = SITE2, Group = APPGRP2, Server ID = 20, Process ID = 2445 Result of PING request is: LMID = SITE2, Group = APPGRP2, Server ID = 20, Process ID = 2445 Result of PING request is: LMID = SITE2, Group = APPGRP2, Server ID = 20, Process ID = 2445 Result of PING request is: LMID = SITE2, Group = APPGRP2, Server ID = 20, Process ID = 2445
如有疑问,请留言讨论;