:-: 
RabbitMQ集群架構
<br/>
步驟如下:
**1. 準備三臺安裝好RabbitMQ的機器**

**2. 修改三臺機器的主機名,分別命名為`node1`、`node2`、`node3`**
```shell
# vim /etc/hostname
```
**3. 在三臺機器上都做如下主機映射**
```shell
# vim /etc/hosts
192.168.0.109 node1
192.168.0.112 node2
192.168.0.113 node3
```
**4. 重啟三臺機器**
```shell
# reboot
```
**5. 讓三臺機器的cookie保證一致**
```shell
-- 在node1節點執行下面的命令
# scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
# scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
```
**6. 分別啟動三臺機器的RabbitMQ服務和Erlang虛擬機**
```shell
# rabbitmq-server -detached
```
**7. 在node2節點執行下面的命令**
```shell
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@node1
# rabbitmqctl start_app
```
**8. 在node3節點執行下面的命令**
```shell
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@node2
# rabbitmqctl start_app
```
**9. 在任意一臺機器上執行`rabbitmqctl cluster_status`可以查看集群狀態**
```shell
# rabbitmqctl cluster_status
Cluster status of node rabbit@node1 ...
Basics
Cluster name: rabbit@node1
Disk Nodes
rabbit@node1
rabbit@node2
rabbit@node3
Running Nodes
rabbit@node1
rabbit@node2
rabbit@node3
Versions
rabbit@node1: RabbitMQ 3.8.8 on Erlang 21.3
rabbit@node2: RabbitMQ 3.8.8 on Erlang 21.3
rabbit@node3: RabbitMQ 3.8.8 on Erlang 21.3
Maintenance status
Node: rabbit@node1, status: not under maintenance
Node: rabbit@node2, status: not under maintenance
Node: rabbit@node3, status: not under maintenance
...
```
**10. 在任意一臺機器上創建用戶**
```shell
# rabbitmqctl add_user admin admin
# rabbitmqctl set_user_tags admin administrator
# rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
```
**11. 登錄WEB界面**
使用任意節點的 ip 登錄,比如這里用node1的 ip:http://192.168.0.109:15672 登錄,用戶名一律為`admin`,密碼一律為`admin`。

- 消息隊列
- 什么是MQ
- MQ的作用
- MQ的分類
- MQ的選擇
- RabbitMQ
- RabbitMQ是什么
- 四大核心概念
- 工作原理
- 環境搭建
- windows系統下的搭建
- centos7系統下的搭建
- 常用命令
- 服務相關命令
- 管理用戶命令
- 管理隊列命令
- 第一個RabbitMQ程序
- 工作隊列
- 輪詢分發消息
- 消息應答
- 持久化
- 發布確認
- 發布確認原理
- 發布確認策略
- 交換機概念
- 交換機類型
- 無名交換機
- Fanout交換機
- Direct交換機
- Topic交換機
- 死信隊列
- 死信概念
- 死信來源
- 死信實戰
- 延遲隊列
- 什么是延遲隊列
- TTL設置方式
- 隊列TTL延遲隊列
- 消息TTL延遲隊列
- 插件打造延遲隊列
- 延遲隊列總結
- 發布確認高級
- 代碼實現
- 回退消息
- 備份交換機
- 冪等性
- 冪等性概念
- 消息重復消費
- 消費端冪等性保障
- 優先級隊列
- 使用場景
- 設置優先級
- 惰性隊列
- 什么是惰性隊列
- 隊列的兩種模式
- 聲明惰性隊列
- RabbitMQ集群
- 為什么要搭建集群
- 集群搭建步驟
- 集群工作方式
- 脫離集群
- 鏡像隊列
- 高可用負載均衡