1. 安裝erlang
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的任縣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!安裝依賴環(huán)境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel
下載最新 Erlang 19.0
wget
tar -xvzf otp_src_19.0.tar.gz
配置
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install
2. 安裝 rabbitmq
wget
tar -xvf rabbitmq-server-generic-unix-3.6.5.tar
mv rabbitmq_server-3.6.5/ /usr/local/rabbitmq
然后在配置rabbitmq環(huán)境變量,vi /etc/profile文件,增加下面的環(huán)境變量:
export PATH=$PATH:/usr/local/erlang/bin
export PATH=$PATH:/usr/local/rabbitmq/sbin
source /etc/profile使得文件生效
以上就已經(jīng)完成了RabbitMq的安裝
3.RabbitMQ服務(wù)啟動(dòng)關(guān)閉
啟動(dòng)服務(wù):
cd /usr/local/rabbitmq/sbin/
[root@iZ25e3bt9a6Z sbin]# ./rabbitmq-server -detached
查看服務(wù)狀態(tài):
[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl status
關(guān)閉服務(wù):
[root@iZ25e3bt9a6Z sbin]# ./rabbitmqctl stop
Stopping and halting node rabbit@iZ25e3bt9a6Z ...
4. 配置網(wǎng)頁(yè)插件
首先創(chuàng)建目錄,否則可能報(bào)錯(cuò):
mkdir /etc/rabbitmq
然后啟用插件(在rabbitmq啟動(dòng)的前提下):
./rabbitmq-plugins enable rabbitmq_management
配置linux 端口 15672 網(wǎng)頁(yè)管理 5672 AMQP端口
然后訪問(wèn)http://localhost:15672即可
默認(rèn)用戶guest 密碼guest
5. 遠(yuǎn)程訪問(wèn)配置
默認(rèn)網(wǎng)頁(yè)是不允許訪問(wèn)的,需要增加一個(gè)用戶修改一下權(quán)限,代碼如下:
添加用戶:rabbitmqctl add_user damon 123456
添加權(quán)限:rabbitmqctl set_permissions -p "/" damon ".*" ".*" ".*"
修改用戶角色:rabbitmqctl set_user_tags damon administrator
#根據(jù)自己需要?jiǎng)?chuàng)建以下內(nèi)容
創(chuàng)建虛擬主機(jī):rabbitmqctl add_vhost vhost(vhost為虛擬主機(jī)名)
清理原始權(quán)限:rabbitmqctl clear_permissions -p / damon
授予新主機(jī)權(quán)限:rabbitmqctl set_permissions -p vhost damon ".*" ".*" ".*"
然后就可以遠(yuǎn)程訪問(wèn)了,然后可直接配置用戶權(quán)限等信息。
6. Rabbitmq的集群配置
(1)在2臺(tái)節(jié)點(diǎn)上分別部署同一版本Rabbitmq,使用以下命令兩臺(tái)主機(jī)名是否相同
rabbitmqctl status
如果兩臺(tái)主機(jī)名相同,就得修改這兩臺(tái)機(jī)器的hostname,要想配置成功集群,就必須保證這兩個(gè)節(jié)點(diǎn)的主機(jī)名不同,且能互相ping通
vim /etc/sysconfig/network
(centos7以上:vim /etc/hostname)
分別將HOSTNAME屬性值改為rabbitmq_node1,rabbitmq_node2,并重啟
(2)如果兩臺(tái)主機(jī)名不相同,如:分別為rabbit@rabbitmq_node1,rabbit@rabbitmq_node2,就在兩臺(tái)主機(jī)里的/etc/hosts文件中分別添加:
192.168.10.15 rabbitmq_node1 主節(jié)點(diǎn)
192.168.10.16 rabbitmq_node2
(3)設(shè)置每個(gè)節(jié)點(diǎn)Cookie
Rabbitmq的集群是依賴于erlang的集群來(lái)工作的,所以必須先構(gòu)建起erlang的集群環(huán)境。Erlang的集群中各節(jié)點(diǎn)是通過(guò)一個(gè) magic cookie來(lái)實(shí)現(xiàn)的,這個(gè)cookie存放在 /root/.erlang.cookie 中,文件是400的權(quán) 限。所以必須保證各節(jié)點(diǎn)cookie保持一致,否則節(jié)點(diǎn)之間就無(wú)法通信. 建議在RabbitMQ服務(wù)啟動(dòng)前修改cookie,如果RabbitMQ服務(wù)已經(jīng)啟動(dòng),修改cookie值后,必須重啟RabbitMQ服務(wù),這步很關(guān)鍵
# chmod 700 /root/.erlang.cookie
# echo -n "AZVOCZYZZBVFLBPTBXU" > /root/.erlang.cookie
# chmod 400 /root/.erlang.cookie
# ps -ef | grep ^rabbitmq | awk \'{print $2}\' | xargs kill -9
#rabbitmq-server -detached
(4) 設(shè)192.168.10.15 (rabbitmq_node1)為主節(jié)點(diǎn),在192.168.10.15機(jī)器中執(zhí)行
#rabbitmqctl stop_app
#rabbitmqctl reset (這一步會(huì)重置,請(qǐng)備份數(shù)據(jù))
#rabbitmqctl start_app
在192.168.10.16 (rabbitmq_node2)機(jī)器中
#rabbitmqctl stop_app #停止rabbitmq_node2節(jié)點(diǎn)
#rabbitmqctl join_cluster rabbit@rabbitmq_node1 # 將testNod2節(jié)點(diǎn)添加進(jìn)主節(jié)點(diǎn)
#rabbitmqctl start_app #啟動(dòng)rabbitmq_node2節(jié)點(diǎn)
(5)設(shè)置鏡像策略
使用Rabbit鏡像功能,需要基于rabbitmq策略來(lái)實(shí)現(xiàn),策略是用來(lái)控制和修改群集范圍的某個(gè)vhost隊(duì)列行為和Exchange行為
在cluster中任意節(jié)點(diǎn)啟用策略,策略會(huì)自動(dòng)同步到集群節(jié)點(diǎn)
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" \'{"ha-mode":"all"}\'
這行命令在vhost名稱為hrsystem創(chuàng)建了一個(gè)策略,策略名稱為ha-allqueue,策略模式為 all 即復(fù)制到所有節(jié)點(diǎn),包含新增節(jié)點(diǎn),
策略正則表達(dá)式為 “^” 表示所有匹配所有隊(duì)列名稱。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" \'{"ha-mode":"all"}\'
注意:"^message" 這個(gè)規(guī)則要根據(jù)自己修改,這個(gè)是指同步"message"開(kāi)頭的隊(duì)列名稱,我們配置時(shí)使用的應(yīng)用于所有隊(duì)列,所以表達(dá)式為"^"
官方set_policy說(shuō)明參見(jiàn)
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]
(http://www.rabbitmq.com/man/rabbitmqctl.1.man.html)
(6)查看
至此,Rabbitmq的集群配置已經(jīng)完成。在這2臺(tái)機(jī)器中,執(zhí)行以下命令:
/usr/sbin/rabbitmqctl cluster_status
就可以看到集群配置的效果,分別如下所示:(切記:在任何情況下,集群中必須至少有一個(gè)節(jié)點(diǎn)是disk類型的,所以如果集群是3臺(tái)機(jī)器的話,就需要有2臺(tái)機(jī)器的節(jié)點(diǎn)是disk類型的)
7. rabbitmq常用命令
add_user
delete_user
change_password
list_users
add_vhost
delete_vhost
list_vhostsset_permissions [-p
clear_permissions [-p
list_permissions [-p
list_user_permissions
list_queues [-p
list_exchanges [-p
list_bindings [-p
list_connections [