RabbitMQ映象叢集搭建
阿新 • • 發佈:2020-05-29
RabbitMQ 官網 https://www.rabbitmq.com/
小編使用的系統環境是CentOS7.4
| 系統 | IP | hostname |
| --------- | ------- | ---------- |
| CentOS7.4 | 1.1.1.1 | hostname01 |
| CentOS7.4 | 1.1.1.2 | hostname02 |
## 下載
**格外強調,注意RabbitMQ與erlang的版本是否匹配**
檢視匹配網址 https://www.rabbitmq.com/which-erlang.html
- erlang22.3
- rabbitmq3.8.3
## 安裝
### 安裝erlang
解壓erlang
```
tar -zxvf otp_src_22.3.tar.gz
```
準備erlang編譯工具
```
yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel
```
建立資料夾
```
mkdir -p /usr/local/erlang
```
編譯
```
cd otp_src_22.3
./configure --prefix=/usr/local/erlang --without-javac
make && make install
```
環境變數配置
```
vi /etc/profile
```
配置
```
export ERLANG_HOME=/usr/local/erlang
export PATH=${ERLANG_HOME}/bin:${PATH}
```
重新整理配置
```
source /etc/profile
```
建立軟連
```
ln -s /usr/local/erlang/bin/erl /usr/local/bin/erl
```
測試
```
erl
```
### 安裝 socat
```
yum install -y socat
```
### 安裝rabbitmq
```
rpm -ivh --nodeps rabbitmq-server-3.8.3-1.el7.noarch.rpm
```
### 修改配置
```
vi /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/ebin/rabbit.app
```
修改 loopback_users 中的 [<<"guest">>], 只保留 []
heartbeat 為 5
啟用web管理頁面
```
rabbitmq-plugins enable rabbitmq_management
```
### 啟動rabbitmq
啟動
```
rabbitmq-server start &
```
啟動內容檢查
```
rabbitmq-plugins list
```
## 開始叢集
RabbitMQ事基於erlang的,所以部署RabbitMQ叢集,首先要處理erlang的cookie。
### 配置從機的cookie
首先在主節點查詢cookie,一般cookie會存在兩個位置
第一個位置在
```
ll -la /root
```
![](https://img2020.cnblogs.com/blog/1275417/202005/1275417-20200529145739127-1898268902.jpg)
第二個位置在
```
ll -la /var/lib/rabbitmq/
```
![](https://img2020.cnblogs.com/blog/1275417/202005/1275417-20200529145750503-1594315318.jpg)
為了避免錯誤,將上面兩個cookie分別複製到從機上的對應位置。
注意點:複製完成後,將檔案許可權改為400
```
chmod 400 .erlang.cookie
```
### 配置hosts
分別在主機、從機上配置hosts
查詢hostname
```
cat /etc/hostname
```
配置hosts
```
vi /etc/hosts
```
增加如下配置
```
# 主ip + 主hostname
1.1.1.1 hostname01
# 從ip + 從hostname
1.1.1.2 hostname02
```
### 配置叢集
這一步僅僅是在從機上操作,主機啟動RabbitMQ即可。
```
# 後臺啟動從機
./rabbitmq-server -deched
./rabbitmqctl stop_app
# 這裡的hostname01是指主機的hostname
./rabbitmqctl join_cluster rabbit@hostname01
./rabbitmqctl start_app
```
至此,RabbitMQ叢集配置已完成。
## 驗證
在圖形化介面即可看到叢集結果
![](https://img2020.cnblogs.com/blog/1275417/202005/1275417-20200529145707612-18619317