简体   繁体   English

JMS集群:主动/被动

[英]JMS Clustering: active/passive

We host a clustered application server with a standalone clustered JMS server. 我们使用独立的集群JMS服务器托管集群应用程序服务器。 The application server is active/active and loadbalanced while the JMS server is active/passive (shared storage) and uses OS clustering. 当JMS服务器为主动/被动(共享存储)并使用OS集群时,应用程序服务器为主动/主动和负载平衡。 This means from the client perspective there is only one endpoint for each. 这意味着从客户端角度来看,每个端点只有一个端点。

Now we are tasked with connecting to an outside JMS cluster (active/passive) but it appears that they expect us to implement a failover in our JMS client, in other words: connect to the primary if possible, failover to the secondary if necessary. 现在,我们的任务是连接到外部JMS集群(主动/被动),但是似乎他们希望我们在JMS客户端中实现故障转移,换句话说:如果可能,请连接到主节点,如果需要,请故障转移到辅助节点。

At the risk of sounding ignorant, I have never seen such a setup but some googling seems to indicate that this appears to be more or less standard practice for JMS. 冒着听起来有些igno昧的风险,我从未见过这样的设置,但有些搜索似乎表明这似乎是JMS的标准做法。

My question then is: why do JMS providers seem to prefer "client side clustering" if you will as opposed to classic load balancing or other server side clustering methods? 那么我的问题是:如果您愿意使用经典的负载平衡或其他服务器端群集方法,那么为什么JMS提供程序似乎更喜欢“客户端群集”? Is it indeed an industry standard? 确实是行业标准吗?

For now I run multiple Open MQ with MySQL Cluster see on this link (http://mq.java.net/OpenMQ_MySQLCluster_Setup_Guide.html) 目前,我使用MySQL群集运行多个Open MQ,请参见此链接(http://mq.java.net/OpenMQ_MySQLCluster_Setup_Guide.html)

For this server topology you can connect to any node (broker 1, broker2) if you run on EJB container just config (depend on what middle tier you used) when some node died it will auto switch by container. 对于此服务器拓扑,如果您在EJB容器上运行,则可以连接到任何节点(代理1,broker2),只需配置(取决于您使用的中间层),则当某个节点死亡时,它将自动按容器切换。

I have only ever used active/active clustering with JMS where both servers get every message (they talk to each other to stay in sync). 我只在JMS中使用主动/主动群集,在主动/主动群集中,两个服务器都收到每条消息(它们互相交谈以保持同步)。 They didn't share a disk sub systems as they were in differnet data centers. 他们没有共享磁盘子系统,因为它们位于differnet数据中心。 The client is configured with two servers though it only connects to one at a time. 客户端配置有两台服务器,尽管一次只能连接一台。 (Usually the local JMS server) Fail over is transparent to the client. (通常是本地JMS服务器)故障转移对客户端是透明的。

I have also seen configurations with two local server and one non-local server so that failure of one server doesn't require connecting across a WAN to another data center. 我还看到了具有两个本地服务器和一个非本地服务器的配置,因此一台服务器的故障不需要通过WAN连接到另一个数据中心。 I haven't set such a configuration up myself. 我自己尚未设置这种配置。

Using shared storage sounds cool for a system adminstrator, but has the disadvantage that is it is less than transparent to the software. 对于系统管理员来说,使用共享存储听起来很酷,但缺点是它对软件的透明性较差。 If you have an application supports fail over of its own, that is preferable IMHO. 如果您有一个应用程序支持其自身的故障转移,那最好是恕我直言。 ie I would only use shared storage if the service didn't have fail over. 即我只会在服务没有故障转移的情况下使用共享存储。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM