RabbitMQ是一個(gè)開源的消息隊(duì)列中間件茴肥,服務(wù)器端用Erlang語言編寫。因此墓阀,在進(jìn)行RabbitMQ環(huán)境安裝時(shí)毡惜,需先安裝Erlang環(huán)境。安裝過程需要注意的是斯撮,RabbitMQ的版本和Erlang的版本兼容問題经伙,否則會導(dǎo)致RabbitMQ安裝失敗。這里RabbitMQ采用3.7.8(rabbitmq-server-generic-unix-3.7.8.tar.xz)勿锅,Erlang采用otp_src_21.1.tar.gz橱乱。本文針對centos7服務(wù)器,搭建RabbitMQ集群粱甫。
1泳叠、Erlang環(huán)境安裝(源碼編譯)
首先下載好Erlang源碼包otp_src_21.1.tar.gz,放在/usr/loacl/目錄下(個(gè)人習(xí)慣茶宵,安裝的軟件均放在此目錄)危纫,然后執(zhí)行以下命令:
cd /usr/local/? ? ? ? # 進(jìn)入erlang源碼包所在路徑
tar -xvf otp_src_21.1.tar.gz? ? ? ? # 解壓erlang源碼包
mkdir erlang? ? # 新建文件夾,存放erlang編譯后的可執(zhí)行文件及依賴包
進(jìn)入解壓后的文件目錄 otp_src_21.1
cd otp_src_21.1? ? # 進(jìn)入解壓后目錄
執(zhí)行config命令乌庶,
./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac?
執(zhí)行編譯和安裝命令
make && make install
編輯profile文件
vi /etc/profile
配置erlang環(huán)境變量
export ERALNG_HOME=/usr/local/erlang
export PATH=$ERLANG_HOME/bin:$PATH
退出并保存profile,立即生效環(huán)境變量配置
source /etc/profile
查看erlang是否配置完畢种蝶,執(zhí)行命令
erl
2、RabbitMQ安裝
將下載好的RabbitMQ安裝包瞒大,解壓至/usr/local/目錄下螃征,
tar -xvf?rabbitmq-server-generic-unix-3.7.8.tar.xz
進(jìn)入解壓后的目錄
cd?rabbitmq_server-3.7.8
配置環(huán)境變量
vi /etc/profile
輸入:
export RABBITMQ_HOME=/urs/local/rabbitmq_server-3.7.8
export PATH=$RABBITMQ_HOME/sbin:$PATH
生效環(huán)境變量配置
source /etc/profile
配置rabbitmq配置文件
找到rabbitmq-server-master.zip,并解壓透敌,將doc目錄下的配置文件盯滚,拷貝至rabbitmq_server-3.7.8/etc/rabbitmq目錄下。
進(jìn)入/usr/local/rabbitmq_server-3.7.8/etc/rabbitmq目錄酗电,生成rabbitmq.conf配置文件
cp rabbitmq.conf.example rabbitmq.conf
編輯rabbitmq.conf文件魄藕,打開loopback_users.guest = false注釋,以遍guest賬號可通過ip訪問rabbitmq頁面
至此撵术,rabbitmq環(huán)境已安裝完畢背率,目前還是單機(jī)版本。
執(zhí)行rabbitmq-server -detached啟動rabbitmq服務(wù)
執(zhí)行rabbitmq-plugins enable rabbitmq_management開啟管理頁面
可在瀏覽器輸入:http://ip:15672,打開rabbitmq管理頁面
3寝姿、rabbitmq集群搭建
rabbitmq是基于Erlang的交排,而Erlang是天然支持分布式的,通過.erlang.cookie解決分布式問題饵筑,因此首先要保證各rabbitmq節(jié)點(diǎn)的.erlang.cookie的文件內(nèi)容一致个粱。
通過以下命令查找單機(jī)的.erlang.cookie文件所在目錄
find / -name ".erlang.cookie"
這個(gè)文件在我的目錄是/root/下。
將該文件分別拷貝至集群其他服務(wù)器翻翩,通過以下命令,會要求輸入目的服務(wù)器的密碼
scp /root/.erlang.cookie root@192.168.11.13 /root/? ? ? ? # 這里寫IP稻薇,也可通過hosts文件中配置的域名
其次嫂冻,每臺服務(wù)器需要命名域名,且要把同一個(gè)集群下的所有服務(wù)器域名都配置塞椎。比如我這里用三臺服務(wù)器組成集群桨仿,其IP分別為:
192.168.11.12、192.168.11.13案狠、192.168.11.14
那么在三臺服務(wù)器的/etc/hosts文件中均需增加以下內(nèi)容:
192.168.11.12? ? mqnode1
192.168.11.13? ? mqnode2
192.168.11.14? ? mqnode3
同時(shí)需要查看三臺服務(wù)器的hostname服傍,避免都是localhost,可通過uname -a命令查看
如果有存在localhost的情況骂铁,可通過hostname命令修改吹零,修改的內(nèi)容建議和/etc/hosts文件中配置的一致,比如需將192.168.11.12服務(wù)器的hostname修改為mqnode1,則通過以下命令:
hostname mqnode1
然后再通過uname -a命令查看拉庵,192.168.11.12服務(wù)器的hostname已經(jīng)修改為mqnode1
至此灿椅,集群環(huán)境已配置好,接下來進(jìn)行集群搭建
本文以mqnode1為主節(jié)點(diǎn)钞支,mqnode2,mqnode3為從節(jié)點(diǎn)茫蛹。三個(gè)節(jié)點(diǎn)均需執(zhí)行以下命令啟動rabbitmq
rabbitmq-server -detached
關(guān)閉節(jié)點(diǎn)2、3app
rabbitmqctl stop_app
將接點(diǎn)2烁挟、3加入到節(jié)點(diǎn)1
rabbitmqctl join_cluster -- ram rabbit@mqnode1? ?# --ram 說明當(dāng)前節(jié)點(diǎn)已內(nèi)存模式運(yùn)行
啟動節(jié)點(diǎn)2婴洼、3app
rabbitmqctl start_app
進(jìn)入管理頁面,可以看到有三個(gè)節(jié)點(diǎn)撼嗓,如下圖:
注意:當(dāng)RabbitMQ安裝后柬采,可以打開管理頁面,但登錄時(shí)報(bào)500錯誤且警,可查看rabbitmq安裝目錄的./var/rabbitmq/rabbit@node.log日志警没,若報(bào)以下錯誤:libcrypto.so.1.0.0: cannot open shared object file: No such file or directory,如圖
則需要查看當(dāng)前服務(wù)器openssl版本振湾,通過openssl version命令查看杀迹,我這里的版本是0.9.8,但這里要求1.0.0。因此需要升級openssl版本树酪,升級方法可以參考:Linux下升級openssl