如何针对单个后端 "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 区域。您需要 一些 请求才能转到特定区域,从而使为您完成的所有负载平衡短路。
我有一个 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 区域。您需要 一些 请求才能转到特定区域,从而使为您完成的所有负载平衡短路。