如何在故障转移群集中使用 nServiceBus
我们在开发环境中使用 nServiceBus,其中有一个前端将消息发布到服务(订阅者)。生活是美好的。
FrontendWebServer ->中间件服务器
在我们的生产环境中,我们将运行两个前端和两个中间件服务器以进行故障转移。
FrontendWebServer ->负载均衡器(F5) -> MiddlewareServer
FrontendWebServer ->负载均衡器(F5) -> MiddlewareServer
这对于 URL 来说效果很好,但是因为我们需要使用 MSMQ 的机器名称,所以我们陷入了困境。
我们不想在每个前端配置中指定物理中间件机器名称(因为这使得管理配置变得更加困难,并且如果一台中间件服务器出现故障,它也会停止向其特定前端发送消息)。
我们尝试使用 nServiceBus 分发器(安装在每个前端),但似乎订阅者只能收听一个分发器。
有什么想法可以在不使用单独配置的情况下解决这个问题吗?
We're using nServiceBus in our development environment, where we have a frontend publishing messages to a service (subscriber). Life is good.
FrontendWebServer -> MiddlewareServer
In our production environment, we'll be running two frontends and two middleware servers for failover.
FrontendWebServer -> LoadBalancer(F5) -> MiddlewareServer
FrontendWebServer -> LoadBalancer(F5) -> MiddlewareServer
This works well for URLs, but because we need to use machine names for MSMQ we're stuck.
We don't want to specify a physical middleware machine name in each frontend config (because it makes managing configs harder, and if one middleware server goes down, it will also stop messages its particular frontend).
We tried to use the nServiceBus distributor (installed on each frontend), but it seems that a subscriber can only listen to one distributor.
Any ideas how we can get around this problem without using separate configs?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会将 F5 推到 Web 服务器前面以平衡负载。对于集群,只需引用集群服务器名称和服务,而不是单个计算机。例如,如果您有 Node1 和 Node2,您可以调用 Cluster NSBNode 或类似名称。
如果将该集群设为分发服务器,则可以在其后面添加多个工作节点以进一步平衡负载。同样,在这种情况下,还要引用集群队列名称(queue@ClusterName)。
I would push the F5 up in front of the web servers to balance that load. For the cluster, just reference the Clustered Server name and services not the individual machines. For example if you have Node1 and Node2 you may call the Cluster NSBNode or something like that.
If you make that cluster the Distributor, you can then add multiple Worker nodes behind it to load balance further. Again in this case also make reference to the Cluster queue names(queue@ClusterName).