天天看點

RabbitMQ叢集

對于 SLE 12 SP2,請以根使用者 root 運作下面指令:

zypper addrepo https://download.opensuse.org/repositories/devel:languages:erlang:Factory/SLE_12_SP2/devel:languages:erlang:Factory.repo

zypper refresh

zypper install erlang

修改hosts檔案

172.18.8.157live-mq-01

172.18.8.158live-mq-02

172.18.8.161live-mq-03

第一步:上傳erlang、rabbitmq安裝包

第二步:安裝erlang

rpm -ivh *rpm

第三步:安裝rabbitmq,root使用者

tar xf rabbitmq-server-generic-unix-3.7.18.tar.xz

mv rabbitmq_server-3.7.18 /data/application

cd /data/application

ln -s rabbitmq_server-3.7.18 rabbitmq_server

chown -R wasadmin.wasgroup rabbitmq_server rabbitmq_server-3.7.18

第四步:修改環境變量,wasadmin使用者

vim ~/.profile

export RABBITMQ_HOME=/data/application/rabbitmq_server

export PATH=$PATH:$RABBITMQ_HOME/sbin

第五步:修改系統檔案描述符,root使用者

ulimit -n

echo 6553560 > /proc/sys/fs/file-max

echo 'fs.file-max = 6553560' >> /etc/sysctl.conf

ulimit -n 65535

cat >> /etc/security/limits.conf << end

* soft nofile 65535

* hard nofile 65535

end

tail /etc/security/limits.conf

同步erlang.cookie檔案,通過Erlang的分布式特性(通過magiccookie認證節點)進行RabbitMQ叢集,各RabbitMQ服務為對等節點,即每個節點都提供服務給用戶端連接配接,進行消息發送與接收。

chmod 600 .erlang.cookie

root@live-mq-01:~# vim /home/wasadmin/.erlang.cookie

WJLPTHZIMFLJRTOGPYNA

root@live-mq-02:~# vim /home/wasadmin/.erlang.cookie

root@live-mq-03:~# vim /home/wasadmin/.erlang.cookie

chmod 400 .erlang.cookie

以守護程式的方式在背景運作,每個節點都需要

啟動服務:rabbitmq-server -detached

指令補充:

關閉應用:rabbitmqctl stop_app

rabbitmqctl reset

rabbitmqctl start_app

關閉服務:rabbitmqctl stop 或 rabbitmqctl shutdown

檢視狀态:rabbitmqctl status

開啟manager,每個節點都需要

rabbitmq-plugins enable rabbitmq_management

在live-mq-01節點上檢視叢集資訊,此時叢集中應隻有自己。

root@live-mq-01:~# rabbitmqctl cluster_status

Cluster status of node'rabbit@live-mq-01'...

[

{nodes,[{disc,['rabbit@live-mq-01']}]},

#叢集中的節點,disc表示為磁盤模式,ram表示為記憶體模式

{running_nodes,['rabbit@live-mq-01']},

#正在運作的叢集節點

{cluster_name,<<"rabbit@live-mq-01">>},

#叢集的名稱

{partitions,[]}

]

下面将live-mq-01、live-mq-02、live-mq-03組成叢集:(叢集至少需要有1個disk節點)

mq02以disk類型加入mq01節點:

rabbitmqctl stop_app

rabbitmqctl join_cluster rabbit@mq01

mq03以ram類型加入mq01節點:

rabbitmqctl join_cluster rabbit@mq01 --ram

如果需要把mq02類型改為ram:

rabbitmqctl change_cluster_node_type ram

允許遠端使用者(admin)通路

rabbitmqctl add_user admin admin@2021

rabbitmqctl set_user_tags admin administrator

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

rabbitmqctl list_permissions -p /

删除預設使用者guest

rabbitmqctl delete_user guest

設定鏡像隊列政策,開啟鏡像高可用模式

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

檢視政策

rabbitmqctl list_policies

RabbitMQ退出叢集,如果mq03要退出叢集:

mq03:

叢集主節點:

rabbitmqctl forget_cluster_node rabbit@mq03

叢集如何重新開機?

一個disk節點:先啟動disk節點再啟動ram節點

多個disk節點:先啟動最後關閉的disk節點,啟動其餘disk節點,再啟動ram節點

RabbitMQ 入門系列(4)