RabbitMQ部署与集群搭建
目录
1. 环境说明及准备工作
0x01 环境说明
- 系统:Ubuntu 16.04 LTS
0x02 准备工作
- master 和 node 配置时间同步
- 根据实际情况配置 master 和 node 的主机名
- 在各个 mater 和 node上配置主机名解析
2. APT 源安装RabbitMQ
0x01 添加APT仓库密钥认证
# sudo apt-key adv --keyserver "hkps.pool.sks-keyservers.net" --recv-keys "0x6B73A36E6026DFCA"
# wget -O - "https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc" | sudo apt-key add -
0x02 配置APT源
# sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian xenial erlang
deb https://dl.bintray.com/rabbitmq/debian xenial main
EOF
0x03 安装 RabbitMQ
# sudo apt-get update -y
# sudo apt-get install -y rabbitmq-server
0x04 激活Web管理插件
# sudo rabbitmq-plugins enable rabbitmq_management
查看Web管理端口是否启动
# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 11884/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 11982/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 793/sshd
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 11884/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 11884/beam.smp
tcp6 0 0 :::4369 :::* LISTEN 11982/epmd
tcp6 0 0 :::22 :::* LISTEN 793/sshd
备注,相关端口如下:
- 4369 – erlang发现口
- 5672 –client端通信口
- 15672 – 管理界面ui端口
- 25672 – server间内部通信口
浏览器访问: ip:15672
默认登入帐号及密码 guest/guest
若Web界面报如下问题
HTTP access denied: user 'guest' - User can only log in via localhost。
则需做如下配置
# sudo tee /etc/rabbitmq/rabbitmq.config <<EOF
[{rabbit, [{loopback_users, []}]}].
EOF
然后重启 rabbitmq
# systemctl restart rabbitmq-server.service
3. 源码安装RabbitMQ
0x01 安装依赖 Erlang
curl -L -O https://github.com/erlang/otp/archive/OTP-21.3.tar.gz
apt-get install make gcc autoconf libncurses5-dev
tar -xf OTP-21.3.tar.gz -C /opt
cd /opt/otp-OTP-21.3
./otp_build autoconf
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe
make
make install
配置 Erlang 环境变量(/etc/profile)
# Erlang
ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME
0x02 源码安装RabbitMQ
# sudo apt-key adv --keyserver "hkps.pool.sks-keyservers.net" --recv-keys "0x6B73A36E6026DFCA"
# wget -O - "https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc" | sudo apt-key add -
# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.14/rabbitmq-server-generic-unix-3.7.14.tar.xz
# tar -xf rabbitmq-server-generic-unix-3.7.14.tar.xz -C /opt
# mv rabbitmq_server-3.7.14/ /usr/local/
# ln -s /usr/local/abbitmq_server-3.7.14 /usr/local/rabbitmq
配置 RabbitMQ 环境变量
# RabbitMQ
RABBITMQ_HOME=/usr/local/rabbitmq_server-3.7.14
export PATH=$PATH:$RABBITMQ_HOME/sbin
export RABBITMQ_HOME
4. 节点加入集群
0x01 将Master节点的 /var/lib/rabbitmq/.erlang.cookie 文件拷贝到节点主机
# scp /var/lib/rabbitmq/ .erlang.cookie root@192.168.1.168:/var/lib/rabbitmq/
注意:此时需要验证master和node的/var/lib/rabbitmq/ .erlang.cookie
文件的 md5sum
值是否一致,不一致则会导致 RabbitMQ
无法启动。
# md5sum /var/lib/rabbitmq/.erlang.cookie
715013625977fb1c373069e3dae753f0 /var/lib/rabbitmq/.erlang.cookie
0x02 停止node节点上的 Erlang 虚拟机
# rabbitmqctl stop_app
0x03 node 加入集群
# rabbitmqctl join_cluster rabbit@rbtmq_master
Clustering node rabbit@rbtmq_node1 with rabbit@rbtmq_master
启动 Erlang 虚拟机
# sudo rabbitmqctl start_app
验证集群状态
# sudo rabbitmqctl cluster_status
Cluster status of node rabbit@rbtmq_master ...
[{nodes,[{disc,[rabbit@rbtmq_master,rabbit@rbtmq_node1]}]},
{running_nodes,[rabbit@rbtmq_node1,rabbit@rbtmq_master]},
{cluster_name,<<"rabbit@rbtmq_master">>},
{partitions,[]},
{alarms,[{rabbit@rbtmq_node1,[]},{rabbit@rbtmq_master,[]}]}]