手把手 RabbitMq集羣搭建


網上的文章無腦香相互抄,所有我要自己寫,實錘後再分享

單機版

一 版本兼容性

erlang和rabbitmq的版本必須兼容;參見rabbitmq官方版本說明

二 安裝並配置erlang

下載erlang

wget http://erlang.org/download/otp_src_21.2.tar.gz
如果覺得網速慢,可以先下載到本地再上傳:

解壓

tar -zxvf otp_src_22.2.tar.gz

安裝必要的環境

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
等同於
{
yum -y install ncurses-devel
#yum install libtool
#yum install libtool-ltdl-devel
#yum install gcc-c++
#yum install ncurses-devel 
#yum install openssl-devel
}
yum install unixODBC unixODBC-devel    (安裝unixODBC和unixODBC-devel,如果上一步沒有錯,不用執行)

編譯並安裝 (erlang編譯到指定路徑,需要先 mkdir /usr/local/erlang)

cd otp_src_22.2 
./configure --prefix=/usr/local/erlang
make && make install  (生成執行文件到指定路徑,/usr/local/erlang下 會產生 bin lib 文件)

配置環境變量(erlang 加入到環境變量,和JAVA_HOME的作用類似)

vi /etc/profile
PATH=$PATH:/usr/local/erlang/bin
source /etc/profile

檢測

erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.2#成功

三 安裝配置rabbitmq

下載rabbitmq

官網給的github地址下載後上傳到服務器的/data/rabbit-mp(自定義)目錄下

解壓

xz -d rabbitmq-server-generic-unix-3.8.3.tar.xz
tar xf rabbitmq-server-generic-unix-3.8.3.tar

安裝必要的環境(可以不操作)

yum install python -y
yum install xmlto -y
yum install python-simplejson -y

配置環境變量(rabbitmq 的指令設置到全局,就不用在sbin下啓動)

vi /etc/profile
PATH=$PATH:/usr/local/erlang/bin:/data/rabbit-mq/rabbitmq_server-3.7.15/sbin
source /etc/profile

檢測

rabbitmq-server

 ##  ##
  ##  ##      RabbitMQ 3.7.15. Copyright (C) 2007-2019 Pivotal Software, Inc.
  ##########  Licensed under the MPL.  See https://www.rabbitmq.com/
  ######  ##
  ##########  Logs: /data/rabbit-mq/rabbitmq_server-3.7.15/var/log/rabbitmq/[email protected]
                    /data/rabbit-mq/rabbitmq_server-3.7.15/var/log/rabbitmq/rabbit@localhost_upgrade.log

              Starting broker...
 completed with 0 plugins.

或者
rabbitmq-server -detached

查看服務狀態:

rabbitmqctl status

開啓rabbitmq 應用:

rabbitmqctl start_app

開啓管理插 件

rabbitmq-plugins enable rabbitmq_management

查看插件集合

rabbitmq-plugins list

訪問可視化界面

http://localhost:15672 默認吧guest guest
如何設置爲通過IP訪問呢? 創建新用戶 guest 只允許本地localhost的搞
rabbitmqctl delete_user guest
rabbitmqctl add_user rabbitmq rabbitmq
rabbitmqctl set_user_tags rabbitmq administrator
rabbitmqctl set_permissions -p / rabbitmq ‘.’ '.’ ‘.*’
rabbitmq

關閉rabbitmq 應用

rabbitmqctl stop_app

其他命令行操作:

插件管理:

啓動插件: rabbitmq-plugins enable XXX (XXX爲插件名)

停用插件: rabbitmq-plugins disable XXX

用戶管理:

添加用戶: rabbitmqctl add_user username password

刪除用戶: rabbitmqctl delete_user username

修改密碼: rabbitmqctl change_password username newpassword

設置用戶角色: rabbitmqctl set_user_tags username tag

列出用戶: rabbitmqctl list_users

權限管理:

列出所有用戶權限: rabbitmqctl list_permissions

查看制定用戶權限: rabbitmqctl list_user_permissions username

清除用戶權限: rabbitmqctl clear_permissions [-p vhostpath] username

設置用戶權限: rabbitmqctl set_permissions [-p vhostpath] username conf write read

                      conf: 一個正則匹配哪些資源能被該用戶訪問

                      write:一個正則匹配哪些資源能被該用戶寫入

                      read:一個正則匹配哪些資源能被該用戶讀取

題記

更簡單的安裝 yum
yum install -y epel-release

yum install erlang-22.3-1.el7.x86_64
yum install -y erlang
erl -version

安裝位置是默認位置
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

service rabbitmq-server star (可以啓動了)

[root@localhost /]# /bin/systemctl start rabbitmq-server.service
[root@localhost /]# /bin/systemctl status rabbitmq-server.service

安裝路徑不可控,集羣搭建怎麼玩?

普通集羣

關閉防火牆及selinux

systemctl stop firewalld.service
setenforce 0

集羣列表展示

rabbit1 10.10.61.34 CentOS-7-x86_64 磁盤節點 rabbitmq-server-3.8.3
rabbit2 10.10.61.49 CentOS-7-x86_64 內存節點 rabbitmq-server-3.8.3
rabbit3 10.10.61.108 CentOS-7-x86_64 內存節點 rabbitmq-server-3.8.3

分別修改三臺主機的hostname和host

vi /etc/hostname
如 rabbit1 10.10.61.34

rabbit1.localdomain

vi /etc/hosts
注意不是 /etc/host 不然後續無法加入集羣(本人親自採坑)

10.10.61.34    rabbit1
10.10.61.49    rabbit2
10.10.61.108    rabbit3

需要重啓reboot 因爲hostname 變了
啓動服務 rabbitmq-server -detached

統一 .erlang.cookie 文件

如果是以解壓縮安裝rabbitmq
erlang.cookie 的路徑在/root/.erlang.cookie下(其他用戶創建的不知道)
如果是rpm安裝rabbitmq的方式
erlang.cookie 的路徑在/var/lib/rabbitmq/.erlang.cookie下(其他用戶創建的不知道)

權限

chown root:root /root/.erlang.cookie

關閉其他節點服務 rabbit2 rabbit3

systemctl stop

傳輸到其他節點

scp /root/.erlang.cookie [email protected]:/root/.erlang.cookie
scp /root/.erlang.cookie [email protected]:/root/.erlang.cookie

將rabbit2 rabbit3作爲內存節點加入到rabbit1(默認Disk節點)

rabbitmqctl stop_app                                       //關閉應用
rabbitmqctl join_cluster --ram rabbit@rabbit1   //將內存節點連接到磁盤節點  --ram表示作爲內存節點
rabbitmqctl start_app                                       //開啓應用,rabbit2與rabbit3操作相同

查看端口,確保服務都正常

netstat -ntap | grep 5672

查看集羣狀態

rabbitmqctl cluster_status

訪問管理網頁

打開瀏覽器訪問http://10.10.61.34:15672

RabbitMQ鏡像集羣配置

鏡像隊列是基於普通的集羣模式的,然後再添加一些策略,

創建rabbitmq策略

在mq01節點的控制檯上創建策略

  1. 點擊admin菜單–>右側的Policies選項–>左側最下下邊的Add/update a policy。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章