通过 MOM 在 WAS 集群内传播配置
Posted
技术标签:
【中文标题】通过 MOM 在 WAS 集群内传播配置【英文标题】:Propagating configuration within the WAS cluster by means of MOM 【发布时间】:2012-01-06 03:19:02 【问题描述】:我正在开发嵌入在 Websphere AS 的集群环境中的应用程序。我正在使用多个节点,有时我想即时更改配置设置并将其传播到集群中的所有节点。我不想将配置保存在数据库中,或者至少我想将其缓存在节点级别并触发配置刷新操作,这会强制每个节点从某个共同点(即数据库或网络驱动器)刷新配置 以避免不断往返于配置存储。
更多配置不能存储在数据库中,即日志级别需要分别应用于每个节点的记录器对象。
我正在考虑使用 JMS 主题和发布/订阅方法来实现该目标。 这个想法是每个节点都可以订阅每个主题,并且无论哪个节点启动配置更改修改都将传播到集群内的所有节点。
有没有人尝试在 WAS 中这样做,以及这种方法是否存在任何障碍。如果有或如果您对如何解决该问题有任何其他建议,我将非常感谢您的帮助。
提前发送, 马辛
【问题讨论】:
【参考方案1】:目前我们用可能不是最漂亮的方法而是用最简单的方法解决了这个问题。由于我们只使用 2 个节点,我们可以进入特定节点的 Web 界面,在其中修改每个节点的设置。也许它不是很漂亮,但现在它是最简单的方法。配置存储在数据库中,我们计划在每个节点中触发配置重新加载并更改每个节点的日志级别。
【讨论】:
【参考方案2】:以下是一些可供考虑作为 JMS 替代品的选项 -
使用Java EE environment entries。这些范围仅限于应用程序,WAS 将自动将任何更改传播到部署应用程序的所有服务器。这是一个很好的方法,因为它是标准的 Java EE 应用程序配置方法,如果它足够健壮,可以满足您的用例。
使用WebSphere Shared Library。这允许您将应用程序链接到应用程序外部(即文件系统上)的静态文件,以便它们在您的类路径中可用。尽管这些文件位于节点文件系统上,但有一种方法可以将这些文件放在 WebSphere 的集中配置存储库中,以便它们自动传播到所有 WAS 节点。有关这方面的更多详细信息,请参阅this answer。
这两个选项都针对静态配置进行了优化;换句话说,旨在在组装时、部署时设置或由系统管理员更改的配置设置,但它们通常不用于频繁更改的值,它们通常也不会在运行时以编程方式更改。 WAS 确实允许您的应用程序以滚动方式选择这些配置设置,因此无需应用程序停机。
【讨论】:
嗨雪莱。 Tx 为您提供答案,尽管这不是我真正想要的。对于那种配置,我可以使用 DB 代替。问题是我想即时修改配置。这种方法的另一个副作用是它需要第 3 方参与(WAS 管理),这还延迟了快速重新配置(尤其是当我想避免与任何 WAS 重新配置相关的公司官僚作风时)。我真正需要的是能够在没有 WAS 团队任何帮助的情况下立即传播配置。 @MarcinMichalski 我认为这是一个非常合理的答案,不要指望人们知道 WAS GOT 2ND 能做什么或不能做什么。此外,使用您的 JMS 主题解决方案,您也必须要求他们重新配置。 是的,但我只会问 WAS 团队一次,而不是每次都需要重新配置。我并不是说主题方法是正确的,这就是我首先提出这个问题的原因。我只想说,在这种情况下,使用 env-entries 的解决方案首先是不够的,因为它需要额外的帮助,并且应用程序版主无法即时更改它,此外,无法使用 env-entries 执行某些重新配置,即更改日志级别。以上是关于通过 MOM 在 WAS 集群内传播配置的主要内容,如果未能解决你的问题,请参考以下文章