1.前言
1.1.編寫(xiě)目的
本文簡(jiǎn)述了如何在CentOS中實(shí)現(xiàn)安裝abbitmq-server v3.7.3牡属。
2.安裝前的準(zhǔn)備
2.1.安裝必備工作
- 安裝工具
# yum install -y vim wget
" 修改host
# hostname
# vim /etc/hosts
" 在host中增加主機(jī)名解析胚膊,如:
127.0.0.1 my-pc localhost
- ==【!】特別注意母赵,一定一定要先清除原系統(tǒng)中的rabbitmq殘余=⒎!!,否則安裝會(huì)出現(xiàn)各種問(wèn)題欢揖。==
# find / -name 'rabbitmq' | xargs rm -rf
2.2.修改軟件源
# cd /etc/yum.repo.d/
# mv CentOS-Base.repo CentOS-Base.repo.bak
" 增加aliyun源
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
增加erlang源
# vim /etc/yum.repos.d/rabbitmq-erlang.repo
內(nèi)容如下:
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
2.3.下載rabbitmq-server-3.7.3
下載地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.3
。
3.執(zhí)行安裝
3.1.安裝rabbitmq-server-3.7.3
# cd /path/to/Downloads
# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
# yum install -y rabbitmq-server-3.7.3-1.el7.noarch.rpm
【!】==注意奋蔚,先關(guān)閉firewalld==
" 解除firewall自動(dòng)啟動(dòng)
# systemctl disable firewalld
" 關(guān)閉firewalld
# systemctl disable firewalld
3.2.rabbitMQ 相關(guān)命令
" 開(kāi)機(jī)啟動(dòng)
# systemctl enable rabbitmq-server.service
" 啟動(dòng)
# systemctl start rabbitmq-server.service
" 重啟
# systemctl restart rabbitmq-server.service
" 關(guān)閉
# systemctl stop rabbitmq-server.service
3.3.開(kāi)啟web管理控制
# rabbitmq-plugins enable rabbitmq_management
3.4.web控制臺(tái)
訪問(wèn)地址:http://localhost:15672
==【!】注意: 默認(rèn)rabbitmq的guest為localhost訪問(wèn)==她混,要開(kāi)啟遠(yuǎn)程訪問(wèn),需要做如下處理:
# vim /etc/rabbitmq/rabbitmq.conf
" 加入以下內(nèi)容
loopback_users = none
提示:
- ==用戶(hù)guest默認(rèn)密碼:guest==
- 參考:https://www.rabbitmq.com/access-control.html
3.4.查看端口
# netstat -napt|grep 5672
4. 集群與配置
4.1.安裝與準(zhǔn)備
- 在集群每個(gè)節(jié)點(diǎn)上按上述安裝方法完成安裝泊碑。
- 在每個(gè)節(jié)點(diǎn)上做host節(jié)點(diǎn)解析坤按。如:
192.168.1.10 nodel_hostname
192.168.1.11 node2_hostname
192.168.1.12 node3_hostname
【注意】:
- ==一定要與節(jié)點(diǎn)的hostname一致,否則集群節(jié)點(diǎn)無(wú)法加入集群馒过。==
- ==最好不要在安裝rabbitmq后修改hostname==
- RabbitMQ服務(wù)主機(jī)名更改導(dǎo)致消息隊(duì)列無(wú)法連接
4.2.集群配置
- 統(tǒng)一【.erlang.cookie】
# cd /var/lib/rabbitmq
" 復(fù)制該目錄下的.erlang.cookie到其它節(jié)點(diǎn)
" 注意保持權(quán)限【600】不變
- 保持主節(jié)點(diǎn)rabbit啟動(dòng)正常運(yùn)行臭脓。在其它節(jié)點(diǎn)上執(zhí)行:
" 查看rabbitmq狀態(tài)
$ rabbitmqctl status
" 加入集群
$ rabbitmq-server -detached
$ rabbitmqctl stop_app
$ rabbitmqctl reset
" 提示:若要?jiǎng)h除節(jié)點(diǎn)時(shí),跳過(guò)此句即可沉桌。
$ rabbitmqctl join_cluster rabbit@node1_hostname
$ rabbitmqctl start_app
" 查看節(jié)點(diǎn)集群狀態(tài)
$ rabbitmqctl cluster_status
" 在節(jié)點(diǎn)上移除其它節(jié)點(diǎn)谢鹊,如:
$ rabbitmqctl forget_cluster_node rabbit@ode3_hostname
如看如下類(lèi)似信息算吩,則表示加入集群成功:
...
[{nodes,[{disc,[rabbit@hidden1,'rabbit@hidden2','rabbit@hidden3']}]},
{running_nodes,[rabbit@hidden1,'rabbit@hidden2','rabbit@hidden3']},
{cluster_name,<<"rabbit@hidden1">>},
{partitions,[]}]
...
- 登錄web控制臺(tái),查看節(jié)群狀態(tài)
http://www.your-domain-or-ip.com:15672
提示:
- ==公網(wǎng)時(shí)佃扼,請(qǐng)刪除了guest查看權(quán)限偎巢,修改guest密碼。==
- ==使用【5.1】節(jié)點(diǎn)的命令創(chuàng)建管理用戶(hù)兼耀。==
參考:
5. 常用命令
5.1.用戶(hù)相關(guān)
5.1.1.用戶(hù)修改
" 新增一個(gè)用戶(hù)
$ rabbitmqctl add_user Username Password
" 刪除一個(gè)用戶(hù)
$ rabbitmqctl delete_user Username
" 修改用戶(hù)的密碼
$ rabbitmqctl change_password Username Newpassword
" 查看當(dāng)前用戶(hù)列表
$ rabbitmqctl list_users
5.1.2.用戶(hù)角色
" 設(shè)置用戶(hù)角色的命令庄呈,User為用戶(hù)名隐孽,Tag為角色名:
" - administrator
" - monitoring
" - policymaker
" - management
" - 或其他自定義名稱(chēng)
$ rabbitmqctl set_user_tags User Tag
" 給同一用戶(hù)設(shè)置多個(gè)角色朽褪,例如
$ rabbitmqctl set_user_tags hncscwc monitoring policymaker
【角色權(quán)限說(shuō)明】:
超級(jí)管理員(administrator)
可登陸管理控制臺(tái)(啟用management plugin的情況下)罩旋,可查看所有的信息,并且可以對(duì)用戶(hù)拯坟,策略(policy)進(jìn)行操作但金。監(jiān)控者(monitoring)
可登陸管理控制臺(tái)(啟用management plugin的情況下)
同時(shí)可以查看rabbitmq節(jié)點(diǎn)的相關(guān)信息(進(jìn)程數(shù),內(nèi)存使用情況郁季,磁盤(pán)使用情況等)策略制定者(policymaker)
可登陸管理控制臺(tái)(啟用management plugin的情況下), 同時(shí)可以對(duì)policy進(jìn)行管理冷溃。但無(wú)法查看節(jié)點(diǎn)的相關(guān)信息(上圖紅框標(biāo)識(shí)的部分)。與administrator的對(duì)比梦裂,administrator能看到這些內(nèi)容似枕。普通管理者(management)
僅可登陸管理控制臺(tái)(啟用management plugin的情況下),無(wú)法看到節(jié)點(diǎn)信息年柠,也無(wú)法對(duì)策略進(jìn)行管理凿歼。其他
無(wú)法登陸管理控制臺(tái),通常就是普通的生產(chǎn)者和消費(fèi)者冗恨。
5.1.3.用戶(hù)權(quán)限
" 設(shè)置用戶(hù)權(quán)限
$ rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
" 查看(指定hostpath)所有用戶(hù)的權(quán)限信息
$ rabbitmqctl list_permissions [-p VHostPath]
" 查看指定用戶(hù)的權(quán)限信息
$ rabbitmqctl list_user_permissions User
" 清除用戶(hù)的權(quán)限信息
rabbitmqctl clear_permissions [-p VHostPath] User
6.常見(jiàn)問(wèn)題
6.1.RabbitMQ 3.7.4及以版本
提示:==筆者親測(cè)在CentOS 7上RabbitMQ 3.7.4答憔,RabbitMQ 3.7.5無(wú)法安裝成功。==
6.2.cookie權(quán)限問(wèn)題
報(bào)錯(cuò): [error] Error when reading /var/lib/rabbitmq/.erlang.cookie...
解決:
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
7.參考
- https://blog.csdn.net/liu_zhaoming/article/details/79386128
- http://soft.dog/2016/01/13/rabbitmq-monitoring/
- 阿里云源:https://mirrors.aliyun.com
- spring boot與rabbitmq集成:http://blog.didispace.com/spring-boot-rabbitmq/
此文章由以前技術(shù)老大撰寫(xiě)的一篇文章派近,在此借鑒一下攀唯,推薦Docker安裝會(huì)更簡(jiǎn)單