Linux CenOS7下安装RabbitMQ
一、安裝依賴環境erlang
wget -P /home/download https://github.com/rabbitmq/erlang-rpm/releases/download/v21.2.3/erlang-21.2.3-1.el7.centos.x86_64.rpm
sudo rpm -Uvh /home/download/erlang-21.2.3-1.el7.centos.x86_64.rpm
sudo yum install -y socat
二、安裝RabbitMQ
wget -P /home/download https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
提示:可以在Tags · rabbitmq/rabbitmq-server · GitHub下載歷史版本
2. 安裝RabbitMQ
sudo rpm -Uvh /home/download/rabbitmq-server-3.7.9-1.el7.noarch.rpm
三、啟動和關閉
- 啟動服務
sudo systemctl start rabbitmq-server
- 查看狀態
sudo systemctl status rabbitmq-server
- 設置開機啟動
sudo systemctl enable rabbitmq-server
四、開啟Web管理插件
rabbitmq-plugins enable rabbitmq_management
2. 添加用戶
rabbitmqctl add_user admin admin
3. 為用戶分配操作權限
rabbitmqctl set_user_tags admin administrator
4. 為用戶分配資源權限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
五、防火墻添加端口
- RabbitMQ 服務啟動后,還不能進行外部通信,需要將端口添加都防火墻
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
2. 重啟防火墻
sudo firewall-cmd --reload
多機多節點集群部署
一、 環境準備
- 準備三臺安裝好RabbitMQ 的機器,安裝方法見 安裝步驟
-
- 10.10.1.41
- 10.10.1.42
- 10.10.1.43
提示:如果使用虛擬機,可以在一臺VM上安裝好RabbitMQ后,創建快照,從快照創建鏈接克隆,會節省很多磁盤空間
二、修改配置文件
sudo vim /etc/hosts
10.10.1.41 node1
10.10.1.42 node2
10.10.1.43 node3
sudo scp /etc/hosts root@node2:/etc/
sudo scp /etc/hosts root@node3:/etc/
說明:命令中的root是目標機器的用戶名,命令執行后,可能會提示需要輸入密碼,輸入對應用戶的密碼就行了
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
提示:如果是通過克隆的VM,可以省略這一步
三、防火墻添加端口
- 給每臺機器的防火墻添加端口
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
sudo firewall-cmd --reload
四、啟動RabbitMQ
sudo systemctl start rabbitmq-server
或者
rabbitmq-server -detached
# 停止RabbitMQ 應用
rabbitmqctl stop_app
# 重置RabbitMQ 設置
rabbitmqctl reset
# 加入到集群
rabbitmqctl join_cluster rabbit@node1 --ram
# 啟動RabbitMQ 應用
rabbitmqctl start_app
rabbitmqctl cluster_status
提示:在管理界面可以更直觀的看到集群信息
# 停止 RabbitMQ 應用
rabbitmqctl stop_app
# 重置 RabbitMQ 設置
rabbitmqctl reset
# 節點加入到集群
rabbitmqctl join_cluster rabbit@node1 --ram
# 啟動 RabbitMQ 應用
rabbitmqctl start_app
單機多節點部署
一、環境準備
- 準備一臺已經安裝好RabbitMQ 的機器,安裝方法見 安裝步驟
-
- 10.10.1.41
二、啟動RabbitMQ
# RabbitMQ 默認節點名,默認是rabbit
NODENAME=rabbit1
sudo systemctl stop rabbitmq-server
rabbitmq-server -detached
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached
# 停止 rabbit2 的應用
rabbitmqctl -n rabbit2 stop_app
# 重置 rabbit2 的設置
rabbitmqctl -n rabbit2 reset
# rabbit2 節點加入到 rabbit1的集群中
rabbitmqctl -n rabbit2 join_cluster rabbit1 --ram
# 啟動 rabbit2 節點
rabbitmqctl -n rabbit2 start_app
# 停止 rabbit3 的應用
rabbitmqctl -n rabbit3 stop_app
# 重置 rabbit3 的設置
rabbitmqctl -n rabbit3 reset
# rabbit3 節點加入到 rabbit1的集群中
rabbitmqctl -n rabbit3 join_cluster rabbit1 --ram
# 啟動 rabbit3 節點
rabbitmqctl -n rabbit3 start_app
rabbitmqctl cluster_status
提示:在管理界面可以更直觀的看到集群信息
三、防火墻添加端口
- 需要將每個節點的端口都添加到防火墻
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15673/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5674/tcp --permanent
sudo firewall-cmd --zone=public --add-port=25674/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15674/tcp --permanent
sudo firewall-cmd --reload
鏡像隊列模式集群
- 鏡像隊列屬于RabbitMQ 的高可用方案,見:Classic Queue Mirroring — RabbitMQ
- 通過前面的步驟搭建的集群屬于普通模式集群,是通過共享元數據實現集群
- 開啟鏡像隊列模式需要在管理頁面添加策略,添加方式:
- 進入管理頁面 -> Admin -> Policies(在頁面右側)-> Add / update a policy
- 在表單中填入:
?name: ha-all
Pattern: ^
Apply to: Queues
Priority: 0
Definition: ha-mode = all
參數說明
name: 策略名稱,如果使用已有的名稱,保存后將會修改原來的信息
Apply to:策略應用到什么對象上
Pattern:策略應用到對象時,對象名稱的匹配規則(正則表達式)
Priority:優先級,數值越大,優先級越高,相同優先級取最后一個
Definition:策略定義的類容,對于鏡像隊列的配置來說,只需要包含3個部分: ha-mode 、ha-params 和 ha-sync-mode。其中,ha-sync-mode是同步的方式,自動還是手動,默認是自動。ha-mode 和 ha-params 組合使用。組合方式如下:
| ha-mode | ha-params | 說明 |
| all | (empty) | 隊列鏡像到集群類所有節點 |
| exactly | count | 隊列鏡像到集群內指定數量的節點。如果集群內節點數少于此值,隊列將會鏡像到所有節點。如果大于此值,而且一個包含鏡像的節點停止,則新的鏡像不會在其它節點創建。 |
| nodes | nodename | 隊列鏡像到指定節點,指定的節點不在集群中不會報錯。當隊列申明時,如果指定的節點不在線,則隊列會被創建在客戶端所連接的節點上。 |
- 鏡像隊列模式相比較普通模式,鏡像模式會占用更多的帶寬來進行同步,所以鏡像隊列的吞吐量會低于普通模式
- 但普通模式不能實現高可用,某個節點掛了后,這個節點上的消息將無法被消費,需要等待節點啟動后才能被消費
總結
以上是生活随笔為你收集整理的Linux CenOS7下安装RabbitMQ的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux CenOS7下安装Activ
- 下一篇: linux 其他常用命令