镜像队列
队列创建只在创建的机器上出现,不会出现在其他节点上,需要创建镜像队列,将队列备份到其他节点,可以备份到其他节点或者全部节点
创建:在任意一个节点上添加一个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
标签:--,RabbitMQ,节点,队列,集群,rabbitmq,policy,node1,admin
From: https://blog.51cto.com/soldatyxd/8566116