如何针对单个后端“节点”来处理客户端请求

时间:2015-08-11 13:54:31

标签: http java-ee logging cics

我有一个Java EE应用程序,它驻留在多个站点的多个服务器上。

应用程序的每个实例都在本地生成日志。

Java EE应用程序还通过SOAP / HTTP与IBM Mainframe CICS应用程序通信。

这些CICS应用程序在多个站点上的多个主机LPARS上的多个CICS区域中执行。

与Java EE应用程序类似,CICS应用程序在本地生成日志。

尝试解决问题是非常耗时的。这需要支持人员必须手动登录到UNIX服务器和/或大型机LPARS,以跟踪特定问题的所有相关日志。

我们正在研究的一个解决方案是创建一个单点,从UNIX和大型机收集所有分布式日志。

我们正在研究的另一个领域是,是否可以将客户端流量驱动到指定的Java EE服务器和IBM Mainframe LAPS,直到特定的应用程序服务器节点和单个IBM CICS区域。

我们只想对“合成”客户端调用执行此操作,例如我们的支持人员发出的呼叫,而不是“真正的”客户流量。

这可能吗?

例如,假设我们有10台UNIX服务器分布在两个地理站点上,如下所示: -

Geo One:    UNIX_1, UNIX_3, UNIX_5, UNIX_7, UNIX_9
Geo Two:    UNIX_2, UNIX_4, UNIX_6, UNIX_8, UNIX_0

以下两个地理站点的四个IBM Mainframe lpars: -

Geo One:    lpar_a, lpar_c
Geo Two:    lpar_b, lpar_d

每个lpar有8个cics区域

cicsa_1, cicsa_2... cicsa_8 
cicsb_1, cicsb_2... cicsb_8 
cicsc_1, cicsc_2... cicsc_8 
cicsd_1, cicsd_2... cicsd_8 

我们希望为

的合成流量定位单一路线
unix_5 > lpar_b, > cicsb_6

这样我们就知道在所有平台上查找日志输出的位置

更新 - 0001

“合成流量”是指我们的支持人员会拨打客户电话给我们的后端API,而不是“真正的”前端用户。

如果我们的支持人员可以指定这些合成调用遍历的确切路由,他们就会确切知道每一步要搜索的日志文件。

这些日志文件非常大10 MB,其中有很多

例如,我们的一个应用程序在64个UNIX物理服务器上运行,分为两个地理位置。每个UNIX服务器承载多个应用服务器节点,每个节点产生多个日志文件,每个日志文件都是10MB +。日志文件翻转,因此日志输出可能会很快丢失。

1 个答案:

答案 0 :(得分:1)

  

我们正在研究的一个解决方案是创建一个单点   从UNIX和大型机收集所有分布式日志。

我相信将所有日志收集到一个点是可行的方法。当日志文件翻转时,您可以将它们SFTP到您的单点作为滚动过程的一部分。或者使用NFS挂载来复制它们。

认为你可以让你的综合交通解决方案有效,但我不确定它能完成什么。

您可以将Java应用程序发送到合成URL,该URL由DNS映射到包含合成WEBSERVICE定义,合成PIPELINE定义和合成URIMAP定义的单个CICS区域,该合成URIMAP定义又映射到合成事务,即定义为在本地运行。定义的本地部分应使其不会被路由到CICSPlex中的另一个CICS区域。

为了获得合成URIMAP,您必须通过IBM工具(DFHWS2LS或DFHLS2WS)运行WSDL,并使用URI控制卡指示您的合成URL。您还可以使用TRANSACTION控制卡指向定义为在本地运行的综合事务。

我认为这严重扭曲了CICS定义,使其几乎与您的非合成环境相似 - 并且它提供了它可以工作,我不是CICS系统程序员,您可能会阅读并得出结论我的理智是有问题的。另一方面,你的审计员可能只是在盘子上问我的头。

需要所有额外定义(IMHO)来破坏CICSPlex的功能,即负载平衡传入请求,将它们发送到最能为其提供服务的CICS区域。您需要某些请求转到特定区域,从而缩短为您完成的所有负载平衡。