Tuxedo 高可用性分析_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4861 | 回复: 1   主题: Tuxedo 高可用性分析        下一篇 
wtz
注册用户
等级:新兵
经验:71
发帖:6
精华:0
注册:2012-2-29
状态:离线
发送短消息息给wtz 加好友    发送短消息息给wtz 发消息
发表于: IP:您无权察看 2014-10-11 14:26:36 | [全部帖] [楼主帖] 楼主

试验环境:

OS:Linux 4
Tuxedo:10.3


鉴于Tuxedo卓越的运行效率,并可持续为用户提供服务,本文针对Tuxedo高可用性方面进行分析,力求以实际试验结果来说明Tuxedo各个部件的高可用性实现方式。由于个人水平有限,有结果不一致之处以官方说明为准。

涉及Tuxedo组件:

Tuxedo /WS
Tuxedo MP


Tuxedo多域

高可用性简介

系统的可用性是指系统处于正常可用状态的时间所占的百分比,系统可用性下降通常由两个因素导致:系统失败率和系统恢复时间。有以下两个方法可以衡量系统的可用性:

平均无故障时间(MTBF):是指系统在正常运行状态的平均时间

平均恢复时间(MTTR):是指在系统失败之后,需要多长时间来恢复系统

因此,系统的可用性可定义为:可用性= MTBF /(MTBF + MTTR)

那么提高系统的可用性就可从两方面出发:提高系统的可靠性,并降低系统失败恢复时间

环境简介

本试验所使用的架构示意图如下:

image


从客户端出发,首先连接DOM1域,DOM1域为MP(多机)模式,DOM1域主要用来为用户提供连接池,并从DOM2、DOM3导入同名服务,转发客户端请求,DOM2、DOM3提供实际服务

各组件高可用性分析

客户端:

Tuxedo客户端通过设置WSNADDR并以特定的符号分割,可以实现在客户端进行tpinit()时的failover以及负载均衡,设置方法为:

export WSNADDR=(//192.168.1.50:3333"|"//192.168.1.51:3333),//192.168.1.51:3333,//192.168.1.50:3333


当WSNADDR以“,”分割时,客户端会首先判断第一个地址是否可用,若不可用就按顺序尝试后面的地址;当WSNADDR以“|”分割,客户端会随机使用所分割的地址进行连接建立。当前配置中,正常情况下可以在192.168.1.50;3333以及192.168.1.51:3333之间进行负载均衡,当某个地址无法建立连接时,即进行“,”后面地址尝试。示意图如下:

image


这种方式所实现的高可用性,在于判断是否可完成tpinit()操作,即与WSL建立连接过程,若WSL进程正常,且可正常进行连接建立,则不会发生failover过程。

多机模式:

多机(MP)模式下,可实现多机中各节点之间的负载均衡和容错功能,客户端可任何一个节点建立连接,如果该服务器上没有该客户端所要调用的service,Tuxedo可以自动把请求发送到其它的有该service的机器上处理,并把结果返回到客户端,请求通过BRIDGE进程在这些服务器之间进行传递。当然,这些对客户端是透明的。不仅如此,如果设置了负载均衡(LDBAL=Y),那么Tuxedo将根据它们的负载情况报,将请求发送到负载较小的服务器上。而且还提供软件级别的Cluster功能,如果其中某-台或几台(当然不能是全部)服务器出现故障了,那么正常的机器仍然能够继续运行,如果它们之间的网络连接断了,BRIDGE进程会自动进行重试,并且在这些服务器之间可以配置多个网络连接通路,当其中的一个出现故障时,会自动采用别的连接通路。

image


多网关进程

可在Tuxedo中配置多个网关组,设置域网关进程连接策略为ON_STARTUP或INCOMINGONLY,即可实现failover机制,当某个网关进程失败,均可实现透明地将请求转交给其他可用网关进程处理。示意图如下:

image


图中,当地一个网关进程失败之后,系统会选择其他可用的网关进程去进行连接,并转发客户端请求。

多域failover

若多个域同时提供同名服务,那么可设置网关进程连接策略为“ON_STARTUP”或”INCOMINGONLY“,示意图如下所示:

image


如上图所示,DOM2、DOM3均想DOM1提供了”a“的服务,若DOM2失败,DOM1中的客户端请求会自动转发至DOM3进行处理,保证系统持续运行。同时该方式还可实现多域之间的负载均衡。

多实例

通过ubb配置文件中,配置*SERVER段中对应server的MIN/MAX参数,设定每个进程的实例启动数量,若其中一个server失败,客户端请求可转发至其他可用server进行处理。同时server还可以设置可重启特性,可保证在server实例失败之后,最快将失败的重新实例启动。

案例分析

本案例为当前应用较广的高可用性方案,相关参数配置如下:

DOM1:


ubb配置

*RESOURCES
#IPCKEY         <Replace with a valid IPC Key>
#Example:
IPCKEY          123456
DOMAINID        dom1
MASTER          simple1,simple2
MAXACCESSERS    100
MAXSERVERS      50
MAXSERVICES     100
MODEL           MP
LDBAL           Y
OPTIONS         LAN,MIGRATE
*MACHINES
DEFAULT:
APPDIR="/app/tuxedo/dom1"
TUXCONFIG="/app/tuxedo/dom1/tuxconfig"
TUXDIR="/app/tuxedo/tuxedo10gR3"
MAXWSCLIENTS=10
myvm1           LMID=simple1
APPDIR="/app/tuxedo/dom1"
TUXCONFIG="/app/tuxedo/dom1/tuxconfig"
TUXDIR="/app/tuxedo/tuxedo10gR3"
MAXWSCLIENTS=10
myvm2           LMID=simple2
UID=503
GID=503
#Example:
#beatux         LMID=simple
*GROUPS
GROUP1
LMID=simple1    GRPNO=1 OPENINFO=NONE
GROUP2  LMID=simple2    GRPNO=2 OPENINFO=NONE
DMGRP1  LMID=simple1    GRPNO=3 OPENINFO=NONE
GWGRP1  LMID=simple1    GRPNO=5 OPENINFO=NONE
GWGRP2  LMID=simple1    GRPNO=6 OPENINFO=NONE
GWGRP3  LMID=simple2    GRPNO=7 OPENINFO=NONE
GWGRP4  LMID=simple2    GRPNO=8 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
WSL             SRVGRP=GROUP1   SRVID=2
CLOPT="-A — -n //192.168.1.50:3333 -m 2 -M 5 -x 10"
#simpserv       SRVGRP=GROUP1 SRVID=1
WSL             SRVGRP=GROUP2   SRVID=4
CLOPT="-A — -n //192.168.1.51:3333 -m 2 -M 5 -x 10"
simpserv        SRVGRP=GROUP1   SRVID=15
DMADM           SRVGRP=DMGRP1   SRVID=5
GWADM           SRVGRP=GWGRP1   SRVID=6
GWTDOMAIN       SRVGRP=GWGRP1   SRVID=7
GWADM           SRVGRP=GWGRP2   SRVID=8
GWTDOMAIN       SRVGRP=GWGRP2   SRVID=9
GWADM           SRVGRP=GWGRP3   SRVID=10
GWTDOMAIN       SRVGRP=GWGRP3   SRVID=11
GWADM           SRVGRP=GWGRP4   SRVID=12
GWTDOMAIN       SRVGRP=GWGRP4   SRVID=13
*NETWORK
simple1 NADDR="//192.168.1.50:7000"
NLSADDR="//192.168.1.50:7001"
simple2 NADDR="//192.168.1.51:7000"
NLSADDR="//192.168.1.51:7001"
BRIDGE="/dev/tcp"
*SERVICES


域配置:

*DM_LOCAL
"LDOM1" TYPE=TDOMAIN    GWGRP="GWGRP1" DOMAINID="LDOM1" CONNECTION_POLICY=ON_STARTUP
"LDOM2" TYPE=TDOMAIN    GWGRP="GWGRP2" DOMAINID="LDOM2" CONNECTION_POLICY=ON_STARTUP
"LDOM3" TYPE=TDOMAIN    GWGRP="GWGRP3" DOMAINID="LDOM3" CONNECTION_POLICY=ON_STARTUP
"LDOM4" TYPE=TDOMAIN    GWGRP="GWGRP4" DOMAINID="LDOM4" CONNECTION_POLICY=ON_STARTUP
*DM_REMOTE
"RDOM1" TYPE=TDOMAIN DOMAINID="RDOM1"
"RDOM2" TYPE=TDOMAIN DOMAINID="RDOM2"
"RDOM3" TYPE=TDOMAIN DOMAINID="RDOM3"
"RDOM4" TYPE=TDOMAIN DOMAINID="RDOM4"
*DM_TDOMAIN
"LDOM1" NWADDR="//192.168.1.50:5555"
"LDOM2" NWADDR="//192.168.1.50:6666"
"LDOM3" NWADDR="//192.168.1.51:5555"
"LDOM4" NWADDR="//192.168.1.51:6666"
"RDOM1" NWADDR="//192.168.1.50:7777"
"RDOM2" NWADDR="//192.168.1.50:8888"
"RDOM3" NWADDR="//192.168.1.51:7777"
"RDOM4" NWADDR="//192.168.1.51:8888"
*DM_EXPORT
*DM_IMPORT
TOUPPER RDOM=RDOM1,RDOM2,RDOM3,RDOM4
TOUPPER RDOM=RDOM2,RDOM3,RDOM4,RDOM1
TOUPPER RDOM=RDOM3,RDOM4,RDOM1,RDOM2
TOUPPER RDOM=RDOM4,RDOM1,RDOM2,RDOM3
DOM2


ubb配置:

*RESOURCES
#IPCKEY         <Replace with a valid IPC Key>
#Example:
IPCKEY          123453
DOMAINID        dom2
MASTER          dom2
MAXACCESSERS    100
MAXSERVERS      50
MAXSERVICES     100
MODEL           SHM
LDBAL           N
*MACHINES
DEFAULT:
APPDIR="/app/tuxedo/dom2"
TUXCONFIG="/app/tuxedo/dom2/tuxconfig"
TUXDIR="/app/tuxedo/tuxedo10gR3"
#Example:
#               APPDIR="/home/me/simpapp"
#               TUXCONFIG="/home/me/simpapp/tuxconfig"
#               TUXDIR="/usr/tuxedo"
myvm2           LMID=dom2
#Example:
#beatux         LMID=simple
*GROUPS
GROUP1
LMID=dom2       GRPNO=1 OPENINFO=NONE
DMGRP   LMID=dom2       GRPNO=2 OPENINFO=NONE
GWGRP1  LMID=dom2       GRPNO=3 OPENINFO=NONE
GWGRP2  LMID=dom2       GRPNO=4 OPENINFO=NONE
GWGRP3  LMID=dom2       GRPNO=5 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv        SRVGRP=GROUP1 SRVID=1 MIN=2     MAX=2
DMADM           SRVGRP=DMGRP   SRVID=5
GWADM           SRVGRP=GWGRP1   SRVID=8
GWTDOMAIN       SRVGRP=GWGRP1   SRVID=7
GWADM           SRVGRP=GWGRP2   SRVID=10
GWTDOMAIN       SRVGRP=GWGRP2   SRVID=9
GWADM           SRVGRP=GWGRP3   SRVID=12
GWTDOMAIN       SRVGRP=GWGRP3   SRVID=11
*SERVICES
TOUPPER


域配置:

*DM_LOCAL
"RDOM3" TYPE=TDOMAIN GWGRP="GWGRP1" DOMAINID="RDOM3"
"RDOM4" TYPE=TDOMAIN GWGRP="GWGRP2" DOMAINID="RDOM4"
"RDOM6" TYPE=TDOMAIN GWGRP="GWGRP3" DOMAINID="RDOM6"
*DM_REMOTE
"LDOM1" TYPE=TDOMAIN DOMAINID="LDOM1"
"LDOM2" TYPE=TDOMAIN DOMAINID="LDOM2"
"LDOM3" TYPE=TDOMAIN DOMAINID="LDOM3"
"LDOM4" TYPE=TDOMAIN DOMAINID="LDOM4"
*DM_TDOMAIN
"LDOM1" NWADDR="//192.168.1.50:5555"
"LDOM2" NWADDR="//192.168.1.50:6666"
"RDOM3" NWADDR="//192.168.1.51:7777"
"RDOM4" NWADDR="//192.168.1.51:8888"
"LDOM3" NWADDR="//192.168.1.51:5555"
"LDOM4" NWADDR="//192.168.1.51:6666"
"*DM_EXPORT
*DM_IMPORT
DOM3:


ubb配置:

*RESOURCES
#IPCKEY         <Replace with a valid IPC Key>
#Example:
IPCKEY          123451
DOMAINID        dom3
MASTER          dom3
MAXACCESSERS    100
MAXSERVERS      50
MAXSERVICES     100
MODEL           SHM
LDBAL           N
*MACHINES
DEFAULT:
APPDIR="/app/tuxedo/dom3"
TUXCONFIG="/app/tuxedo/dom3/tuxconfig"
TUXDIR="/app/tuxedo/tuxedo10gR3"
#Example:
#               APPDIR="/home/me/simpapp"
#               TUXCONFIG="/home/me/simpapp/tuxconfig"
#               TUXDIR="/usr/tuxedo"
myvm1           LMID=dom3
#Example:
#beatux         LMID=simple
*GROUPS
GROUP1
LMID=dom3       GRPNO=1 OPENINFO=NONE
DMGRP   LMID=dom3       GRPNO=2 OPENINFO=NONE
GWGRP1  LMID=dom3       GRPNO=3 OPENINFO=NONE
GWGRP2  LMID=dom3       GRPNO=4 OPENINFO=NONE
GWGRP3  LMID=dom3       GRPNO=5 OPENINFO=NONE
*SERVERS
DEFAULT:
CLOPT="-A"
simpserv        SRVGRP=GROUP1 SRVID=1 MIN=2     MAX=2
DMADM           SRVGRP=DMGRP   SRVID=5
GWADM           SRVGRP=GWGRP1   SRVID=8
GWTDOMAIN       SRVGRP=GWGRP1   SRVID=7
GWADM           SRVGRP=GWGRP2   SRVID=10
GWTDOMAIN       SRVGRP=GWGRP2   SRVID=9
GWADM           SRVGRP=GWGRP3   SRVID=11
GWTDOMAIN       SRVGRP=GWGRP3   SRVID=12
*SERVICES
TOUPPER


域配置:

*DM_LOCAL
"RDOM1" TYPE=TDOMAIN GWGRP="GWGRP1" DOMAINID="RDOM1"
"RDOM2" TYPE=TDOMAIN GWGRP="GWGRP2" DOMAINID="RDOM2"
*DM_REMOTE
"LDOM1" TYPE=TDOMAIN DOMAINID="LDOM1"
"LDOM2" TYPE=TDOMAIN DOMAINID="LDOM2"
"LDOM3" TYPE=TDOMAIN DOMAINID="LDOM3"
"LDOM4" TYPE=TDOMAIN DOMAINID="LDOM4"
*DM_TDOMAIN
"LDOM1" NWADDR="//192.168.1.50:5555"
"LDOM2" NWADDR="//192.168.1.50:6666"
"LDOM3" NWADDR="//192.168.1.51:5555"
"LDOM4" NWADDR="//192.168.1.51:6666"
"RDOM1" NWADDR="//192.168.1.50:7777"
"RDOM2" NWADDR="//192.168.1.50:8888"
"RDOM5" NWADDR="//192.168.1.50:9999"
*DM_EXPORT
*DM_IMPORT
TOUPPER


该模式可在如下情况下持续工作:

客户端与DOM1中任意一个节点网络失败

DOM1中单个节点WSL失败

DOM1所有节点中最多3个网关进程失败

DOM2、DOM3任意三个网关进程失败

DOM1中任意一个节点失败

DOM2、DOM3其中一个域失败

其中需要注意的是,在故障发生时刻,由于公告板中未来得及清理注册信息,可能会导致某些请求调用失败。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2014-10-11 18:44:01 | [全部帖] [楼主帖] 2  楼

架构图呢?



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论