rabbitmq的官方文檔總目錄
https://www.rabbitmq.com/documentation.html
1 單點搭建
RabbitMQ是先啓動單個節點,然後用命令組成集羣的,所以從單點搭建開始
我是用官方編譯好的包,解包即用,當然,RabbitMQ是用erlang編寫的,我們肯定也要安裝erlang
官方文檔https://www.rabbitmq.com/install-generic-unix.html
2.1 erlang安裝
先安裝erlang,RabbitMQ官方提供了一個0依賴的erlang安裝包
https://www.rabbitmq.com/install-rpm.html頁面中有一節是Zero-dependency Erlang from RabbitMQ,就提供了這個安裝包,下載地址https://packagecloud.io/rabbitmq/erlang
注意el6和el7對應centos6或者7,下載自己系統的版本
sudo rpm -hvi erlang-21.2.6-1.el6.x86_64.rpm # 安裝erlang
erl # 測試是否能打開erlang shell
你應該能打開一個erlang的shell界面,這樣表示erlang安裝好了
2.2 RabbitMQ安裝
然後就可以下載已經編譯好的RabbitMQ,任選一個地方下載
tar -xvf rabbitmq-server-generic-unix-3.7.13.tar.xz
cd rabbitmq_server-3.7.13
./sbin/rabbitmq-server -detached # 後臺啓動
./rabbitmq-plugins enable rabbitmq_management # 開啓web服務
這個警告是正常的,不影響使用
打開https://IP:5672,RabbitMQ默認的賬戶密碼是guest、guest,輸入賬號密碼,就可以看見這樣的界面了
在web頁面可以完成很多配置工作,比命令行直觀很多
注意這個guest賬號只能在localhost上使用,所以我們現在創建一個自己的用戶,tags表示不同的操作權限
點擊已經存在於列表中的用戶名,可以進入用戶詳細配置,比如配置vhost的權限
也可以通過命令行添加用戶,配置權限
./rabbitmqctl add_user 用戶名 密碼
./rabbitmqctl set_user_tags 用戶名 administrator # 設置該用戶爲管理員角色
./rabbitmqctl set_permissions -p 虛擬主機 用戶名 '.*' '.*' '.*' # 讓用戶擁有某虛擬主機的配置、寫、讀權限
2 非高可用集羣搭建
首先,每臺服務器上的erlang和RabbitMQ必須是相同的版本,其次服務器之間是通過Erlang message-passing傳遞信息的,所以每臺服務器必須擁有相同的erlang cookie
erlang cookie在home目錄的.erlang.cookie裏,保持每個服務器的這個值一致即可
我們現在啓動三個單點服務器,執行命令獲取每個服務器的名稱
./rabbitmqctl cluster_status
輸出的集羣狀態,只有一個節點就是本地節點,節點名是rabbit@hostname這種形式,集羣名和節點名一致
現在把節點2、3加入到節點1中形成集羣,生成的集羣名字會和節點1的節點名一致。在節點2、3分別執行下面的命令
./rabbitmqctl stop_app # 停止RabbitMQ應用
./rabbitmqctl reset # 節點恢復到初始狀態,刪除一切數據和配置,從現有集羣中移除
./rabbitmqctl join_cluster rabbit@hostname1 # 加入節點1集羣
./rabbitmqctl start_app # 開啓RabbitMQ應用
最後到節點1再次查看集羣狀態,可以看到三臺節點,當然節點2、3都執行了reset命令,現在集羣裏的數據、配置、用戶信息等都是節點1的
到web上看一下,三個節點,集羣就搭建成功了