一、概述
RabbiMQ是用Erang開發的,集羣非常方便,因爲Erlang天生就是一門分佈式語言,但其本身並不支持負載均衡。
RabbiMQ模式
RabbitMQ模式大概分爲以下三種:
(1)單一模式。
(2)普通模式(默認的集羣模式)。
(3) 鏡像模式(把需要的隊列做成鏡像隊列,存在於多個節點,屬於RabbiMQ的HA方案,在對業務可靠性要求較高的場合中比較適用)。
要實現鏡像模式,需要先搭建一個普通集羣模式,在這個模式的基礎上再配置鏡像模式以實現高可用。
RabbiMQ特點
RabbitMQ的集羣節點包括內存節點、磁盤節點。RabbitMQ支持消息的持久化
也就是數據寫在磁盤上,最合適的方案就是既有內存節點,又有磁盤節點。
二、正式搭建
環境
操作系統 | ip | 主機名 | 配置 |
centos 6.9 | 192.168.31.7 | mq_01 | 1核2g |
centos 6.9 | 192.168.31.216 | mq_02 | 1核2g |
centos 6.9 | 192.168.31.214 | mq_03 | 1核2g |
注意,這裏三臺服務器都連接上互聯網,另外RabbitMQ集羣節點必須在同一網段裏,如果是跨廣域網,效果會變差。
配置hosts文件
修改主機名
更改三臺MQ節點的計算機名分別爲mq_01、mq_02 和mq_03,然後修改hosts配置文件
vim /etc/hostname
內容如下:
mq_01
其他兩臺操作相同,內容不一樣。
增加hosts記錄
vi /etc/hosts
內容如下:
192.168.31.7 mq_01 192.168.31.216 mq_02 192.168.31.214 mq_03
其他兩臺操作相同,內容也是一樣。
爲了讓主機名永久生效,重啓3臺服務器。
reboot -f
配置yum源
3臺服務器都安裝一下
yum install -y epel-release
安裝erlang
3臺服務器都安裝一下
wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm yum install -y socat rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm
安裝rabbitmq-server
3臺服務器都安裝一下
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el6.noarch.rpm rpm -ivh rabbitmq-server-3.6.8-1.el6.noarch.rpm
創建目錄
3臺服務器都執行一下
mkdir -p /data/log/rabbitmq mkdir -p /data/rabbitmq/mnesia chown -R rabbitmq.rabbitmq -R /data/log/rabbitmq /data/rabbitmq/mnesia
創建配置文件
3臺服務器都執行一下
vi /etc/rabbitmq/rabbitmq-env.conf
內容如下:
RABBITMQ_LOG_BASE=/data/log/rabbitmq
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
啓動rabbit
3臺服務器都執行一下
/etc/init.d/rabbitmq-server start
拷貝erlang.cookie
Rabbitmq的集羣是依附於erlang的集羣來工作的,所以必須先構建起erlang的集羣景象。Erlang的集羣中各節點是經由過程一個magic cookie來實現的,這個cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的權限。所以必須保證各節點cookie一致,不然節點之間就無法通信。
登錄到mq_01節點,查看erlang.cookie
# cat /var/lib/rabbitmq/.erlang.cookie RUIRJRRZDNYEHCCWITRS
用scp的方式將mq_01節點的.erlang.cookie的值複製到其他兩個節點中。
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.216:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.214:/var/lib/rabbitmq/.erlang.cookie
設置權限,另外2臺都執行一下
chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie chmod 400 /var/lib/rabbitmq/.erlang.cookie
安裝插件
RabbitMQ提供了一個非常友好的圖形化監控頁面插件(rabbitmq_management),讓我們可以一目瞭然看見Rabbit的狀態或集羣狀態。
3臺服務器都執行一下
rabbitmq-plugins enable rabbitmq_management
查看端口
netstat -napt|grep 5672
加入mq01節點集羣中
將mq_02、mq_03作爲內存節點加入mq01節點集羣中
在mq_02、mq_03執行如下命令:
停掉rabbit應用
rabbitmqctl stop_app
加入到磁盤節點
rabbitmqctl join_cluster --ram rabbit@mq_01
啓動rabbit應用
rabbitmqctl start_app
(1)默認rabbitmq啓動後是磁盤節點,在這個cluster命令下,mq02和mq03是內存節點,mq01是磁盤節點。
(2)如果要使mq02、mq03都是磁盤節點,去掉--ram參數即可。
(3)如果想要更改節點類型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必須停掉rabbit應用
查看集羣狀態
3臺節點,都執行一下
rabbitmqctl cluster_status
添加管理用戶
3臺節點,都執行一下
rabbitmqctl add_user admin 'admin123' rabbitmqctl set_permissions -p / admin . . . rabbitmqctl set_user_tags admin administrator
解釋:
第一行命令表示,創建用戶admin,密碼爲admin123
第二行命令表示,admin用戶對virtual host爲'/'所有資源,具有配置,寫,讀權限。注意:後面3個點表示這3個權限。
第三行命令表示,爲admin用戶分配管理員權限。
登錄rabbitmq web管理控制檯
打開瀏覽器輸入http://192.168.31.7:15672,
用戶名:admin,密碼:admin123
登錄後出現如圖所示的界面。
本文參考鏈接:
https://www.cnblogs.com/shihaiming/p/11014257.html