如何针对单个后端 "Node" 来处理客户端请求

How to target a single back end "Node" to process a client request

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

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

Java EE 应用程序还通过 SOAP/HTTP.

与 IBM Mainframe CICS 应用程序通信

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

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

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

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

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

我们只想对 "synthetic" 客户端调用执行此操作,例如由我们的支持人员产生的呼叫,而不是 "real" 客户流量。

这可能吗?

例如,假设我们有 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 大型机 lpar,如下所示:-

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

"synthetic traffic" 我的意思是我们的支持人员会向我们的后端 API 而不是 "Real" 前端用户发出客户呼叫。

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

这些日志文件非常大,每个都有 10 MB,而且数量很多

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

One solution we are looking at is to create a single point that collects all distributed logs from both UNIX and Mainframe.

我认为将所有日志收集到一个点是可行的方法。当日志文件翻转时,作为翻转过程的一部分,也许您可​​以将它们通过 SFTP 传输到您的单点。或者使用NFS挂载复制它们。

认为您可以让您的合成流量解决方案发挥作用,但我不确定它能完成什么。

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

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

我认为这严重扭曲了 CICS 定义,以至于它与您的非合成环境几乎没有相似之处——前提是它完全可以工作,我不是 CICS 系统程序员,您可能会读到这篇文章并得出结论我的理智有问题。另一方面,您的审核员可能只是想把我的脑袋放在盘子里。

需要所有额外的定义(恕我直言)才能破坏 CICSPlex 的功能,即负载平衡传入请求,将它们发送到最能为它们提供服务的 CICS 区域。您需要 一些 请求才能转到特定区域,从而使为您完成的所有负载平衡短路。