RabbitMQ -- 集群(二)
  f45gpqkY1FKu 2023年11月27日 23 0
镜像队列

队列创建只在创建的机器上出现,不会出现在其他节点上,需要创建镜像队列,将队列备份到其他节点,可以备份到其他节点或者全部节点

创建:在任意一个节点上添加一个policy即可

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name : mirror-two
Pattern: ^mirror     #备份以mirror开头的队列
Definition: ha-mode -> exactly
            ha-params -> 2
            ha-sync-mode -> automactic
HaProxy实现负载均衡 + keepalive = 高可用

HaProxy提供高可用性、负载均衡及基于TCP HTTP应用的代理,支持虚拟主机

Federation Exhcange(联合交换机)

解决网络延迟问题,北京的访问北京机房的服务器,上海的访问上海的服务器,北京和上海服务器同步数据

上游(upstream)的数据同步到下游,以交换机为节点

开启插件:(在每台机器上都要开启)

$: sudo rabbitmq-plugins enable rabbitmq_federation
$: sudo rabbitmq-plugins enable rabbitmq_federation_management

消费者在创建下游节点交换机 fed_exchange

fun main() {
    // 创建连接工厂
    val factory = ConnectionFactory()
    factory.host = "166.166.166.93"
    factory.username = "admin"
    factory.password = "123456"
    // 创建连接
    val connection = factory.newConnection()
    // 创建信道
    val channel = connection.createChannel()
    channel.exchangeDeclare("fed_exchange", BuiltinExchangeType.DIRECT)
    channel.queueDeclare("node2_queue", true, false, false, null)
    channel.queueBind("node2_queue", "fed_exchange", "routekey")
    channel.basicConsume("node2_queue", true,
        DeliverCallback { _, message -> message?.let { println(String(it.body)) } },
        CancelCallback { println("消息消费被中断") })
}

在下游节点配置上游节点

在Web管理界面设置:admin -> Federation Upstreams -> Add a new stream

Name: node1-as-upstream
URI: amqp://admin:123456@node1

添加policy

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name: exchange-policy
Pattern: ^fed_*
Apply to: Exchanges
Definition: 
    federation-upstream = node1-as-upstream
联合队列

联合队列可以在多个节点之间为单个队列提供负载均衡功能。一个联合队列可以连接多个上游队列

添加policy

在Web管理界面设置:admin -> policies -> Add / update a policy ->

Name: queue-policy
Pattern: ^fed_*
Apply to: Queues
Definition: 
    federation-upstream = node1-as-upstream
Shovel

从队列拉取数据并转发至另一个节点的交换机的队列,同步数据

安装插件

$: sudo rabbitmq-plugins enable rabbitmq_shovel
$: sudo rabbitmq-plugins enable rabbitmq_shovel_management

配置Shovel : node1节点中的Q1队列数据同步到node2节点中的Q2队列

在Web管理界面设置:admin -> Shovel Management -> Add a new shovel

Name:          Q1-to-Q2
Source:      URI: amqp://admin:123456@node1
             Queue
Destination: URI: amqp://admin:123456@node2
             Queue
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月27日 0

暂无评论

推荐阅读
f45gpqkY1FKu