本章是《Docker下RabbitMQ四部曲》系列的终篇,今天的我们一起来体验Rabbit’MQ集群的高可用能力,看看RabbitMQ集群中的部分节点宕机时,是否还能生产和消费消息;

前文链接

《Docker下RabbitMQ四部曲》的前三篇链接如下:

  1. 《Docker下RabbitMQ四部曲之一:极速体验(单机和集群)》;
  2. 《Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作》;
  3. 《Docker下RabbitMQ四部曲之三:细说java开发》;

实战概要

今天实战的步骤如下:

  1. 制作docker-compose.yml文件,为每个容器配置好参数;
  2. 启动所有容器,包括RabbitMQ集群、消息生产者的web应用、消息消费者的web应用;
  3. 逐个停止集群中的RabbitMQ容器,每停止一个,就验证一次消息的生产和消费;
  4. 逐个恢复集群中的RabbitMQ容器,每恢复一个,就验证一次消息的生产和消费;

制作docker-compose.yml文件

本次实战会创建6个容器,整理如下:

容器名 IP地址 作用
hacluster_rabbit1_1 172.19.0.2 RabbitMQ主节点
hacluster_rabbit2_1 172.19.0.3 RabbitMQ从节点,内存节点
hacluster_rabbit3_1 172.19.0.4 RabbitMQ从节点
hacluster_producer_1 172.19.0.5 web应用,负责生产消息
hacluster_consumer1_1 172.19.0.6 web应用,负责消费消息
hacluster_consumer2_1 172.19.0.7 web应用,负责消费消息

前面章节的实战中,我们也创建了上述六个容器,今天依然是六个,并且身份角色不变,变化的地方主要是以下三点:

  1. 负责生产消息的hacluster_producer_1容器,前面章节只连接了一个RabbitMQ容器,本章会连接三个;
  2. 负责消费消息的hacluster_consumer1_1,前面章节只连接了一个RabbitMQ容器,本章会连接三个;
  3. 负责消费消息的hacluster_consumer2_1,前面章节只连接了一个RabbitMQ容器,本章会连接三个;

基于以上总结,我们写出的docker-compose.yml文件内容如下:

version: '2'
services:rabbit1:image: bolingcavalry/rabbitmq-server:0.0.3hostname: rabbit1ports:- "15672:15672"environment:- RABBITMQ_DEFAULT_USER=admin- RABBITMQ_DEFAULT_PASS=888888rabbit2:image: bolingcavalry/rabbitmq-server:0.0.3hostname: rabbit2depends_on:- rabbit1links:- rabbit1environment:- CLUSTERED=true- CLUSTER_WITH=rabbit1- RAM_NODE=true- HA_ENABLE=trueports:- "15673:15672"rabbit3:image: bolingcavalry/rabbitmq-server:0.0.3hostname: rabbit3depends_on:- rabbit2links:- rabbit1- rabbit2environment:- CLUSTERED=true- CLUSTER_WITH=rabbit1ports:- "15675:15672"producer:image: bolingcavalry/rabbitmqproducer:0.0.2-SNAPSHOThostname: producerdepends_on:- rabbit3links:- rabbit1:rabbitmqhost1- rabbit2:rabbitmqhost2- rabbit3:rabbitmqhost3ports:- "18080:8080"environment:- mq.rabbit.address=rabbitmqhost1:5672,rabbitmqhost2:5672,rabbitmqhost3:5672- mq.rabbit.username=admin- mq.rabbit.password=888888consumer1:image: bolingcavalry/rabbitmqconsumer:0.0.5-SNAPSHOThostname: consumer1depends_on:- producerlinks:- rabbit1:rabbitmqhost1- rabbit2:rabbitmqhost2- rabbit3:rabbitmqhost3environment:- mq.rabbit.address=rabbitmqhost1:5672,rabbitmqhost2:5672,rabbitmqhost3:5672- mq.rabbit.username=admin- mq.rabbit.password=888888- mq.rabbit.queue.name=consumer1.queueconsumer2:image: bolingcavalry/rabbitmqconsumer:0.0.5-SNAPSHOThostname: consumer2depends_on:- consumer1links:- rabbit1:rabbitmqhost1- rabbit2:rabbitmqhost2- rabbit3:rabbitmqhost3environment:- mq.rabbit.address=rabbitmqhost1:5672,rabbitmqhost2:5672,rabbitmqhost3:5672- mq.rabbit.username=admin- mq.rabbit.password=888888- mq.rabbit.queue.name=consumer2.queue

以上的docker-compose.yml文件,有以下两点需要注意:

  1. rabbit2:增加了一个环境变量HA_ENABLE=true,《Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作》一文中分析镜像制作的时候曾提到过,容器创建时startrabbit.sh脚本中会检查这个环境变量,如果为true,就会执行命令:rabbitmqctl set_policy HA ‘^(?!amq.).*’ ‘{“ha-mode”: “all”}’,该命令会将队列设置为镜像模式,在三个Rabbit MQ之间同步;
  2. producer、consumer1、consumer3这三个容器的环境变量mq.rabbit.address,都设置成了三个RabbitMQ容器的地址加端口:rabbitmqhost1:5672,rabbitmqhost2:5672,rabbitmqhost3:5672;

启动所有容器

在刚刚创建的docker-compose.yml文件所在目录下执行命令docker-compose up -d,即可创建所有容器,创建完成后执行以下操作来确认是否启动成功:

  1. 例如我的电脑IP地址是192.168.119.155,那么在浏览器输入地址:192.168.119.155:15672即可访问RabbitMQ的管理页面,用户名:admin,密码:888888,如下图:
  2. 点击"Exchanges"这个Tab页,如下图,看到交换机创建成功,HA模式:
  3. 点击"Queues"这个Tab页,如下图,看到两个队列创建成功,HA模式:
  4. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,即可控制容器hacluster_producer_1 生产一条消息,如下图:
  5. 在控制台输入docker logs -f hacluster_consumer1_1,即可看到hacluster_consumer1_1 消费消息的日志,如下:
2018-05-19 11:21:44.217  INFO 1 --- [           main] c.b.r.RabbitmqconsumerApplication        : Started RabbitmqconsumerApplication in 29.099 seconds (JVM running for 39.398)
2018-05-19 11:36:21.332  INFO 1 --- [cTaskExecutor-1] c.b.r.receiver.FanoutReceiver            : receive message : hello, aaa, bbb, 2018-05-19 11:36:21

看来整个RabbitMQ集群的生产和消费是没有问题的,接下来通过停止容器的方式来模拟生产环境的宕机;

逐个停止集群中的RabbitMQ容器

  1. 先停hacluster_rabbit1_1 ,执行命令docker stop hacluster_rabbit1_1,如下:
root@maven:~# docker stop hacluster_rabbit1_1
hacluster_rabbit1_1
  1. 去管理页面看看,由于hacluster_rabbit1_1容器已经停止了,所以我们要访问hacluster_rabbit2_1容器提供的web页面:http://192.168.119.155:15673,如下图红框,可以看见页面提示节点故障:
  2. 交换机和队列的页面并无异常;
  3. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,尝试发送一条消息,响应时间明显变长,但是依然会返回操作成功;
  4. 在控制台输入docker logs -f hacluster_producer_1,查看生产消息的web容器的日志,如下:
2018-05-19 11:43:22.681  WARN 1 --- [172.19.0.2:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 11:43:22.703 ERROR 1 --- [172.19.0.2:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 11:53:31.836  INFO 1 --- [io-8080-exec-10] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 11:53:46.878  INFO 1 --- [io-8080-exec-10] o.s.a.r.c.CachingConnectionFactory       : Created new connection: connectionFactory#4ae3c1cd:1/SimpleConnection@44028da7 [delegate=amqp://admin@172.19.0.3:5672/, localPort= 37818]

从日志中可以清晰的看到,停止hacluster_rabbit1_1容器是,消息生产者会立即报异常,但是不会自动重连,等到发送消息的时候,才会连接到新的RabbitMQ,这次连接的是hacluster_rabbit2_1 ;
6. 在控制台输入docker logs -f hacluster_consumer1_1,查看消费消息的web容器的日志,如下:

2018-05-19 11:38:14.945  INFO 1 --- [cTaskExecutor-1] c.b.r.receiver.FanoutReceiver            : receive message : hello, aaa, bbb, 2018-05-19 11:38:14
2018-05-19 11:43:22.672  WARN 1 --- [172.19.0.2:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 11:43:22.726 ERROR 1 --- [172.19.0.2:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 11:43:23.163  INFO 1 --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@9f116cc: tags=[{amq.ctag-0csUBn5OQiTGEphcGI2p3A=consumer1.queue}], channel=Cached Rabbit Channel: PublisherCallbackChannelImpl: AMQChannel(amqp://admin@172.19.0.2:5672/,1), conn: Proxy@42dd311 Shared Rabbit Connection: SimpleConnection@5a1a52da [delegate=amqp://admin@172.19.0.2:5672/, localPort= 34240], acknowledgeMode=AUTO local queue size=0
2018-05-19 11:43:23.181  INFO 1 --- [cTaskExecutor-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 11:43:29.042  INFO 1 --- [cTaskExecutor-2] o.s.a.r.c.CachingConnectionFactory       : Created new connection: connectionFactory#45f45fa1:1/SimpleConnection@2b9e231d [delegate=amqp://admin@172.19.0.3:5672/, localPort= 49624]
2018-05-19 11:53:46.899  INFO 1 --- [cTaskExecutor-2] c.b.r.receiver.FanoutReceiver            : receive message : hello, aaa, bbb, 2018-05-19 11:53:31

从日志上可以看出:RabbitMQ宕机的时候,消费者会立即重连到集群中的其他机器;(日志关键字:Created new connection)
7. 停掉RabbitMQ集群中的第二个容器,执行命令docker stop hacluster_rabbit2_1;
8. 访问管理页面的时候,要输入容器hacluster_rabbit3_1的地址:http://192.168.119.155:15675,基本情况如下图,两个节点的问题都能看到:

9. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,尝试发送一条消息,响应时间再次明显变长,但是依然会返回操作成功;
10. 在控制台输入docker logs -f hacluster_producer_1,查看生产消息的web容器的日志,如下,提示重连成功,这次连接到了容器hacluster_rabbit3_1 :

2018-05-19 12:07:45.322  WARN 1 --- [172.19.0.3:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 12:07:45.334 ERROR 1 --- [172.19.0.3:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:07:45.336 ERROR 1 --- [172.19.0.3:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:12:06.404  INFO 1 --- [nio-8080-exec-4] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 12:12:41.467  INFO 1 --- [nio-8080-exec-4] o.s.a.r.c.CachingConnectionFactory       : Created new connection: connectionFactory#4ae3c1cd:2/SimpleConnection@6d23e50 [delegate=amqp://admin@172.19.0.4:5672/, localPort= 54310]
  1. 在控制台输入docker logs -f hacluster_consumer1_1,查看消费消息的web容器的日志,如下:
2018-05-19 12:07:45.327  WARN 1 --- [172.19.0.3:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 12:07:45.346 ERROR 1 --- [172.19.0.3:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:07:45.348 ERROR 1 --- [172.19.0.3:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:07:45.427  INFO 1 --- [cTaskExecutor-2] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@317c5a8a: tags=[{amq.ctag-ZKT8Q4gcU9v7bA-lNOUEFQ=consumer1.queue}], channel=Cached Rabbit Channel: PublisherCallbackChannelImpl: AMQChannel(amqp://admin@172.19.0.3:5672/,1), conn: Proxy@42dd311 Shared Rabbit Connection: SimpleConnection@2b9e231d [delegate=amqp://admin@172.19.0.3:5672/, localPort= 49624], acknowledgeMode=AUTO local queue size=0
2018-05-19 12:07:45.432  INFO 1 --- [cTaskExecutor-3] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 12:08:07.352  INFO 1 --- [cTaskExecutor-3] o.s.a.r.c.CachingConnectionFactory       : Created new connection: connectionFactory#45f45fa1:2/SimpleConnection@71dadbb0 [delegate=amqp://admin@172.19.0.4:5672/, localPort= 34416]
2018-05-19 12:12:56.869  INFO 1 --- [cTaskExecutor-3] c.b.r.receiver.FanoutReceiver            : receive message : hello, aaa, bbb, 2018-05-19 12:12:06

日志显示,也是连到了容器hacluster_rabbit3_1 ,并且消费消息成功;
12. 停掉RabbitMQ集群中的第三个容器(也是最后一个),执行命令docker stop hacluster_rabbit3_1;
13. 这次没有管理页面看了…
14. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,尝试发送一条消息,长时间等待后,页面提示错误如下图:

15. 查看容器hacluster_producer_1的日志,如下:

2018-05-19 12:18:27.812  WARN 1 --- [172.19.0.4:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 12:18:27.813 ERROR 1 --- [172.19.0.4:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:18:27.813 ERROR 1 --- [172.19.0.4:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:18:55.836  INFO 1 --- [nio-8080-exec-7] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 12:19:50.921 ERROR 1 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.amqp.AmqpIOException: java.net.UnknownHostException: rabbitmqhost3] with root causejava.net.UnknownHostException: rabbitmqhost3at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_111]at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_111]at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_111]at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60) ~[amqp-client-5.1.2.jar!/:5.1.2]at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:955) ~[amqp-client-5.1.2.jar!/:5.1.2]at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907) ~[amqp-client-5.1.2.jar!/:5.1.2]at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:847) ~[amqp-client-5.1.2.jar!/:5.1.2]at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:449) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:614) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createBareChannel(CachingConnectionFactory.java:564) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.getCachedChannelProxy(CachingConnectionFactory.java:538) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.getChannel(CachingConnectionFactory.java:520) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
......
...

如上所示,异常信息为连接RabbitMQ服务器失败;
16. 查看容器hacluster_consumer1_1的日志,如下:

2018-05-19 12:18:27.815  WARN 1 --- [172.19.0.4:5672] c.r.c.impl.ForgivingExceptionHandler     : An unexpected connection driver error occured (Exception message: Connection reset)
2018-05-19 12:18:27.816 ERROR 1 --- [172.19.0.4:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:18:27.816 ERROR 1 --- [172.19.0.4:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: connection error
2018-05-19 12:18:28.100  INFO 1 --- [cTaskExecutor-3] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@5b0307b0: tags=[{amq.ctag-0UhQ6jE-D5Wl2ZPl4EWhDQ=consumer1.queue}], channel=Cached Rabbit Channel: PublisherCallbackChannelImpl: AMQChannel(amqp://admin@172.19.0.4:5672/,1), conn: Proxy@42dd311 Shared Rabbit Connection: SimpleConnection@71dadbb0 [delegate=amqp://admin@172.19.0.4:5672/, localPort= 34416], acknowledgeMode=AUTO local queue size=0
2018-05-19 12:18:28.104  INFO 1 --- [cTaskExecutor-4] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [rabbitmqhost1:5672, rabbitmqhost2:5672, rabbitmqhost3:5672]
2018-05-19 12:19:23.178 ERROR 1 --- [cTaskExecutor-4] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).org.springframework.amqp.AmqpIOException: java.net.UnknownHostException: rabbitmqhost3at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:71) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:476) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:614) ~[spring-rabbit-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]

如上所示,也是连接失败,并且,日志的最后会发现应用在自动尝试重新连接RabbitMQ;

至此,RabbitMQ集群宕机模拟就完成了,结果说明在HA模式下,只要还有可用的节点,应用就会尝试连接,如果连接成功,消息的消费是不受影响的;

目前RabbitMQ集群的所有容器都停掉了,接下来我们逐个恢复刚才停下来的容器,看看服务能否恢复;

逐个恢复集群中的RabbitMQ容器

  1. 先恢复hacluster_rabbit1_1,执行命令docker start hacluster_rabbit1_1;
  2. 执行命令docker logs -f hacluster_rabbit1_1,查看容器日志,发现一直停留在下面的位置,不再更新:
  3. 浏览器访问管理页面:http://192.168.119.155:15672,结果页面无法打开;
  4. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,尝试发送一条消息,会显示报错页面;
  5. 去看生产者和消费者容器的日志,发现都是连接RabbitMQ失败的错误;
  6. 从上述现象可以发现:恢复集群服务时,只恢复一台机器是不够的;
  7. 再恢复hacluster_rabbit2_1,执行命令docker start hacluster_rabbit12_1;
  8. 管理页面依旧不可用,发送消息失败,并且生产者和消费者容器都无法连接到RabbitMQ容器上去;
  9. 再恢复hacluster_rabbit3_1,执行命令docker start hacluster_rabbit3_1,这样整个集群的所有容器都恢复了;
  10. hacluster_rabbit1_1的日志发生了变化,如下:
  11. hacluster_rabbit2_1的日志也更新了,如下:
  12. 管理页面可以正常打开,并且显示三个节点都正常了:
  13. 在浏览器输入:http://192.168.119.155:18080/send/aaa/bbb,尝试发送一条消息,消息的生产和消费都正常了;

至此,RabbitMQ的高可用实战已经完成了,从宕机到恢复我们都试了一遍,对RabbitMQ集群也有了更多直观的了解;

文章写到这里,《Docker下RabbitMQ四部曲》就全部结束了,希望这个系列能够对您在学习RabbitMQ过程中有所帮助,在docker实战中,也期待能对您自己定制的RabbitMQ镜像提供一些参考;

Docker下RabbitMQ四部曲之四:高可用实战相关推荐

  1. Docker下RabbitMQ四部曲之一:极速体验(单机和集群)

    从本章开始,我们一起在Docker环境实战RabbitMQ环境部署和对应的Java开发,当前是<Docker下RabbitMQ四部曲>系列的第一篇,整个系列由以下四篇文章组成: 第一篇,即 ...

  2. 《Kubernetes部署篇:基于docker使用kubespray工具部署高可用K8S集群(国内互联网方案四)》

    文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...

  3. 《Kubernetes部署篇:基于docker使用kubespray工具部署高可用K8S集群(国内互联网方案三)》

    文章目录 一.部署背景简介 二.部署工具介绍 三.部署方案介绍 四.部署环境信息 五.部署资源下载 六.部署准备工作 6.1.系统内核升级 6.2.设置主机名 6.3.环境初始化 6.4.ssh多机互 ...

  4. 云原生下,如何实现高可用的MySQL?

    简介:MySQL 作为当前比较受欢迎的关系型数据库(RDS),在云原生浪潮中仍然面临诸多挑战.如何用 Cloud Native 的设计原则,通过沙箱隔离.计算和数据的完全分离,实现低成本.可扩展.高可 ...

  5. Rabbitmq集群高可用部署详细

    清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下所有努 ...

  6. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  7. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  8. RabbitMQ+haproxy+keeplived 高可用负载均衡高可用镜像集群队列_01

    文章目录 一.RabbitMQ 集群节点说明 二.服务器hosts文件统一修改 三.RabbitMQ 镜像集群队列搭建部署 一.RabbitMQ 集群节点说明 服务器IP hostname 节点说明 ...

  9. 五、RabbitMQ管理与高可用集群

    RabbitMQ管理与高可用集群 管理虚拟主机 添加 rabbitmqctl add_vhost king 查看 rabbitmqctl list_vhosts 删除 rabbitmqctl dele ...

最新文章

  1. 用Python构建网页抓取器
  2. 20145207 《Java程序设计》第5周学习总结
  3. 打开程序时固定位置_新手入门第五课:免费开源图像处理程序GIMP之矩形选择工具...
  4. Node.js 使用axios读写influxDB
  5. 项目Alpha冲刺Day4
  6. 前端渲染与后端渲染之间的区别?
  7. 关于sizeof的一些东西
  8. 汇编 align_从零开始自制操作系统(5):实模式汇编(二)
  9. 社区发现(二)--GN
  10. [LeetCode]Shortest Palindrome
  11. HTML5七夕情人节表白网页制作【生日快乐粒子烟花】HTML+CSS+JavaScript 生日祝福网页代码
  12. 2018-01-05-医药行业的IT革命探讨
  13. X-Frame-Options简介
  14. 【Unity】角色动画控制
  15. css_属性选择器(根据属性名或属性值设定指定样式)
  16. CG 函数之选手得分
  17. Adversarial Attack on Attackers: Post-Process to Mitigate Black-Box Score-Based Query Attacks
  18. 设计一个采购、销售和客户管理应用数据库
  19. LeetCode每日一题——Day17
  20. MC9S12G128模块化分层化软件架构之二——IO驱动

热门文章

  1. 天刀手游服务器注册不了,《天涯明月刀》手游连接服务器失败解决办法
  2. 在TP 钱包中DApp 绑定团队邀请关系不生效,技术如何解决?
  3. Linux 之 .bashrc 文件作用
  4. JavaScript和圣杯布局、双飞翼布局
  5. 日常java小练习用于记录学习
  6. 有喜无惊 2013苹果秋季发布会6亮点4遗憾
  7. excel合并单元格后 拉序号
  8. IOS 11 适配导航栏、状态栏调整
  9. 2023最新pytorch安装教程,简单易懂,面向初学者(Anaconda+GPU)
  10. vue实例中调用外部js_vue中引入外部js方法实例