部署关键配置点
单一模式即单机情况不做集群,就单独运行一个rabbitmq而已。
普通模式默认模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体。如果做了消息持久化,那么得等rabbit01节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
镜像模式把需要的队列做成镜像队列,存在与多个节点属于RabbitMQ的HA方案。该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取。该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。所以在对可靠性要求较高的场合中适用。
用户登录失败解决方法:
进入rabbitmq安装目录sbin下,设置新用户并授权:
1、rabbitmqctl add_user admin 123456 #用户名admin,密码123456,可随意设置
2、rabbitmqctl set_user_tags admin administrator #设置用户最高操作权限
节点1的yml:
[root@test1 rabbitmq]# cat docker-compose.yml
version: '3'
services:
rabbit1:
image: rabbitmq:3.10.1-management
container_name: rabbit1
hostname: rabbit1
restart: always
ports:
- 4369:4369
- 5672:5672
- 15672:15672
- 15674:15674
- 25672:25672
- 35197:35197
volumes:
- /data/rabbitmq:/var/lib/rabbitmq
- /etc/localtime:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=Jthl0901
- RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'
extra_hosts:
- "rabbit2:192.168.100.97" # 不能加入自己,否则会一直重启
- "rabbit3:192.168.100.98"
节点2的yml:
[root@test2 rabbitmq]# cat docker-compose.yml
version: '3'
services:
rabbit2:
image: rabbitmq:3.10.1-management
container_name: rabbit2
hostname: rabbit2
restart: always
ports:
- 4369:4369
- 5672:5672
- 15672:15672
- 15674:15674
- 25672:25672
- 35197:35197
volumes:
- /data/rabbitmq:/var/lib/rabbitmq
- /etc/localtime:/etc/localtime
environment:
- RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'
- RABBITMQ_DEFAULT_VHOST=/
- RABBITMQ_LOGS=/var/lib/rabbitmq/rabbitmq.log
extra_hosts:
- "rabbit1:192.168.100.96"
- "rabbit3:192.168.100.98"
节点3的yml:
[root@test3 rabbitmq]# cat docker-compose.yml
version: '3'
services:
rabbit3:
image: rabbitmq:3.10.1-management
container_name: rabbit3
hostname: rabbit3
ports:
- 4369:4369
- 5672:5672
- 15672:15672
- 15674:15674
- 25672:25672
- 35197:35197
volumes:
- /data/rabbitmq:/var/lib/rabbitmq
- /etc/localtime:/etc/localtime
environment:
- RABBITMQ_ERLANG_COOKIE='SECERLANGCOOKIE'
- RABBITMQ_DEFAULT_VHOST=/
- RABBITMQ_LOGS=/var/lib/rabbitmq/rabbitmq.log
extra_hosts:
- "rabbit1:192.168.100.96"
- "rabbit2:192.168.100.97"
分别登录节点2节点3,分别加入到集群中:
节点2:
docker exec -it rabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
节点3:
docker exec -it rabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
标签:compose,192.168,rabbit02,rabbitmq,RABBITMQ,rabbit01,docker,节点 From: https://blog.51cto.com/shitouququ/7609183