RabbitMQ HA 和故障转移

标签 rabbitmq cluster-computing load-balancing high-availability failover

我已经阅读了 clusteringHA章节并对 RabbitMQ 集群有了一个公平的理解。我不明白的一件事是,集群上有 2 个以上的节点和一组 HA 队列,客户端如何建立连接,以便在一个节点发生故障时它们自动无缝地连接到其余节点。这可以通过负载均衡器(例如用于在 AWS 中进行部署的 Amazon ELB)来实现吗?

最佳答案

使用像 Amazon ELB 或 HAProxy 这样的负载均衡器正是您应该如何将流量路由到 Rabbit 集群中的可用节点。

我推荐 HAProxy。这是一个示例 HAProxy 配置:

global
        log 127.0.0.1   local1
        maxconn 4096
        #chroot /usr/share/haproxy
        user haproxy
        group haproxy
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    tcp
        option  tcplog
        retries 3
        option redispatch
        maxconn 2000
        timeout connect 5000
        timeout client 50000
        timeout server 50000

listen  stats :1936
        mode http
        stats enable
        stats hide-version
        stats realm Haproxy\ Statistics
        stats uri /

listen aqmp_front :5672
        mode            tcp
        balance         roundrobin
        timeout client  3h
        timeout server  3h
        option          clitcpka
        server          aqmp-1 rabbitmq1.domain:5672  check inter 5s rise 2 fall 3
        server          aqmp-2 rabbitmq2.domain:5672  backup check inter 5s rise 2 fall 3

注意最后两行。您需要将 rabbitmq1.domainrabbitmq2.domain 替换为您的两个节点的位置。由于第二台服务器设置为备份检查,HAProxy 将仅在第一个节点上平衡请求,如果该节点失败,请求将路由到第二个节点。

关于RabbitMQ HA 和故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29042201/

相关文章:

tcp - HAProxy 负载均衡 TCP 流量

kubernetes - Kubernetes 中有状态服务的分片负载均衡

python - 我如何将参数传递给鼠兔回调

javascript - 我在 Mac 上使用 RabbitMQ for Node.js 时遇到错误

rabbitmq - 在 RabbitMQ 中配置消费者取消

r - 如何使用 R future 包在集群内进行并行计算?

RabbitMQ消息转换问题

.net - RabbitMQ 集群 w/.Net 客户端

python - 即使在sys.path.append之后也无法导入python模块

java - Spring BasicAuthenticationFilter 和 UsernamePasswordAuthenticationFilter 与实际应用程序位于不同的服务器上