centos7 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節點的控制檯上創建策略
- 點擊admin菜單–>右側的Policies選項–>左側最下下邊的Add/update a policy。