RabbitMQ學習大綱
一、使用集群的原因
- 1.基于以下原因,需要搭建一個 RabbitMQ 集群來解決實際問題
- 單機版的,無法滿足目前真實應用的要求。如果 RabbitMQ 服務器遇到內存崩潰、機器掉電或者主板故障等情況,會導致rabbitMQ無法提供服務
- 單臺 RabbitMQ服務器可以滿足每秒 1000 條消息的吞吐量,那么如果應用需要 RabbitMQ 服務滿足每秒 10 萬條消息的吞吐量,就會導致消息堆積
二、搭建步驟:
第1步: 修改 3 臺機器的主機名稱
- vim /etc/hostname
第2步:配置各個節點的 hosts 文件,讓各個節點都能互相識別對方
- vim /etc/hosts,填入以下內容:
10.211.55.74 node1
10.211.55.75 node2
10.211.55.76 node3
第3步:以確保各個節點的 cookie 文件使用的是同一個值
- 在 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
第4步:啟動 RabbitMQ 服務,順帶啟動 Erlang 虛擬機和 RbbitMQ 應用服務(在三臺節點上分別執行以下命令)
- rabbitmq-server -detached
第5步:在節點 2 執行
rabbitmqctl stop_app # (rabbitmqctl stop 會將 Erlang 虛擬機關閉,rabbitmqctl stop_app 只關閉 RabbitMQ 服務)
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app(只啟動應用服務)
第6步:在節點 3 執行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node2
rabbitmqctl start_app
第7步:集群狀態
- rabbitmqctl cluster_status
第8步:需要重新設置用戶
- 創建賬號:rabbitmqctl add_user admin 123
- 設置用戶角色:rabbitmqctl set_user_tags admin administrator
- 設置用戶權限:rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
第9步:解除集群節點(node2 和 node3 機器分別執行)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
rabbitmqctl forget_cluster_node rabbit@node2(node1 機器上執行)