RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而集羣和故障轉移是構建在開放電信平臺框架上的。全部主要的編程語言均有與代理接口通信的客戶端庫。java
實驗環境node
centos7_x64mysql
rabbitmq_server mq1 192.168.10.17c++
rabbitmq_slave mq2 192.168.10.19git
4369 erlang發現web
5672 client端通訊口sql
25672 server間內部通訊口shell
15672 管理界面ui端口編程
實驗軟件centos
otp_src_22.1.tar.gz
rabbitmq-server-generic-unix-3.8.0.tar
軟件安裝
sed -i.bak 's/https/http/g' /etc/yum.repos.d/epel.repo
systemctl stop firewalld.service && systemctl disable firewalld.service
cp -pv /etc/hosts /etc/hosts.bak
cat /etc/hosts | grep mq1
192.168.10.17 mq1
192.168.10.19 mq2 mq1/mq2操做
hostnamectl set-hostname mq1/mq2 mq1/mq2操做
scp -p /etc/hosts root@192.168.10.19:/etc/
reboot/init6 重啓系統生效 mq1/mq2操做
yum install -y gcc gcc-c++ glibc-devel make ncurses-devel redhat-lsb
yum install -y openssl-devel autoconf java-1.8.0-openjdk-devel git mq1/mq2操做
tar zxvf /root/otp_src_22.1.tar.gz
cd /root/otp_src_22.1
./configure && make -j6 && make install
openssl version -a
OpenSSL 1.0.2k-fips
erl --version
Eshell V10.5
scp -p /usr/local/lib/erlang.tar.gz root@192.168.10.19:/usr/local/lib mq1操做
tar zxvf /usr/local/lib/erlang.tar.gz mq2操做
xz -d /root/rabbitmq-server-generic-unix-3.8.0.tar.xz
tar xvf /root/rabbitmq-server-generic-unix-3.8.0.tar
mv rabbitmq_server-3.8.0 /usr/local/rabbitmq
scp -p rabbitmq.tar.gz root@192.168.10.19:/usr/local/ mq1操做
tar zxvf /usr/local/rabbitmq.tar.gz mq2操做
cp -pv /etc/profile /etc/profile.bak
cat /etc/profile
export PATH=$PATH:/usr/local/lib/erlang/bin
export PATH=$PATH:/usr/local/rabbitmq/sbin/
source /etc/profile
scp -p /etc/profile root@192.168.10.19:/etc/ mq1操做
source /etc/profile mq2操做
rabbitmq-plugins enable rabbitmq_management 開啓web控制檯
Enabling plugins on node rabbit@mq1:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@mq1...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
rabbitmqctl add_user admin admin 添加登入帳號 密碼
rabbitmqctl set_user_tags admin administrator 給予管理員權限
rabbitmq-server -daemon & 後臺啓動服務
touch /etc/init.d/rabbitmq && chmod +x /etc/init.d/rabbitmq 建立啓動腳本
cat /etc/init.d/rabbitmq
#!/bin/bash
#
# mysql startup script for the RabbitMQ server
#
# chkconfig: 2345 90 10
# description: start the RabbitMQ
#
# Source function library
. /etc/rc.d/init.d/functions
prog=rabbitmq
RABBITMQ_HOME=cd /usr/local/rabbitmq/
export RABBITMQ_HOME
case "$1" in
start)
echo "Starting RabbitMQ ..."
$RABBITMQ_HOME/ctlscript.sh start
;;
stop)
echo "Stopping RabbitMQ ..."
$RABBITMQ_HOME/ctlscript.sh stop
;;
restart)
echo "Restarting RabbitMQ ..."
$RABBITMQ_HOME/ctlscript.sh restart
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0
scp -p /etc/init.d/rabbitmq root@192.168.10.19:/etc/init.d/ mq1操做
chmod +x /etc/init.d/rabbitmq mq2操做
systemctl daemon-reload && /etc/init.d/rabbitmq restart
cp -pv /etc/rc.d/rc.local /etc/rc.d/rc.local.bak
cat /etc/rc.d/rc.local
nohup rabbitmq-server --daemon & 後臺啓動服務
scp -p /etc/rc.d/rc.local root@192.168.10.19:/etc/rc.d/ mq1操做
rabbitmq-server --daemon & && chkconfig --level 35 rabbitmq on 後臺啓動服務
scp -p /etc/init.d/rabbitmq root@192.168.10.19:/etc/init.d/ mq1操做
chmod +x /etc/init.d/rabbitmq mq2操做
cp -pv /root/.erlang.cookie /root/.erlang.cookie.bak mq1操做
scp -p /root/.erlang.cookie root@192.168.10.19:/root/.erlang.cookie mq1操做
chmod 600 /root/.erlang.cookie mq2操做
rabbitmqctl stop_app
Stopping rabbit application on node rabbit@mq2
rabbitmqctl reset
Resetting node rabbit@mq2
rabbitmqctl join_cluster rabbit@mq1
Clustering node rabbit@mq2 with rabbit@mq1
rabbitmqctl start_app
Starting node rabbit@mq2 ...
Starting broker... completed with 3 plugins. mq2建立集羣,新節點相同操做
rabbitmqctl cluster_status 查看羣集狀態mq1操做
rabbitmqctl cluster_status
Cluster name: rabbit@mq1
Disk Nodes
rabbit@mq1
rabbit@mq2
Running Nodes
rabbit@mq1
rabbit@mq2
Versions
rabbit@mq1: RabbitMQ 3.8.0 on Erlang 22.1
rabbit@mq2: RabbitMQ 3.8.0 on Erlang 22.1
lsof -i:4369
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
epmd 41530 root 3u IPv4 37737 0t0 TCP *:epmd (LISTEN)
epmd 41530 root 4u IPv6 37738 0t0 TCP *:epmd (LISTEN)
lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 41702 root 90u IPv6 38073 0t0 TCP *:amqp (LISTEN)
lsof -i:15672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 41702 root 91u IPv4 38169 0t0 TCP *:15672 (LISTEN)
lsof -i:25672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 41702 root 77u IPv4 38041 0t0 TCP *:25672 (LISTEN)
http://serverip:15672/#/ 192.168.10.17/19