centos7.8环境安装rabbitmq3.8.5最新版并设置集群

centos7.8环境安装rabbitmq3.8.5最新版并设置集群

一、编译安装,单机设置
#1.增加用户
groupadd rabbitmq
useradd rabbitmq -g rabbitmq -s /sbin/nologin

#2.安装必须编译基础包
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

#3.安装socat
yum install socat -y
yum install wxWidgets* -y
yum install gtk+.x86_64 -y

#4.环境变量,否则编译erlang可能会有问题
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/libexec/wxGTK3

#5.下载ERLANG源码包
wget http://erlang.org/download/otp_src_19.0.tar.gz(可不下载)
wget https://erlang.org/download/otp_src_22.1.tar.gz
wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.3/wxWidgets-3.1.3.tar.bz2(可不下载)

#6.解压并安装(低版本)
mkdir -p /usr/local/erlang
tar xvf otp_src_19.0.tar.gz
cd otp_src_19.0
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install

#6.解压并安装(高版本)
mkdir -p /usr/local/erlang
tar xvf otp_src_22.1.tar.gz
cd otp_src_22.1
./configure --prefix=/usr/local/erlang --with-ssl=/usr/local/lab/openssl --enable-threads --enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install

#7.解压并安装(由于是通过yum安装,无需执行,如果是编译安装可以按照下面方法)
bzip2 -d wxWidgets-3.1.3.tar.bz2
tar xvf wxWidgets-3.1.3.tar
cd wxWidgets-3.1.3
./configure --with-opengl --enable-debug --enable-unicode

#8.修改环境变量
vi /etc/profile
ERLANG_HOME=/usr/local/erlang
PATH=$ERLANG_HOME/bin:$PATH
export ERLANG_HOME
export PATH

#9.生效环境变量
source /etc/profile

#10.测试是否支持ERLANG语言,输入erl后会弹出提示 按CTRL+C 退出
erl

#11. 安装simpleJson
wget https://github.com/simplejson/simplejson/releases/download/v3.16.1/simplejson-3.16.1.tar.gz
tar zxvf simplejson-3.16.1.tar.gz
cd simplejson-3.16.1
python setup.py install

#12.下载rabbitmq二进制免编译包(最新版本)
cd /usr/local/src
wget wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-generic-unix-3.8.5.tar.xz


#12.下载rabbitmq二进制免编译包
cd /usr/local/src
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-generic-unix-3.6.10.tar.xz

#13.解压并安装
xz -d rabbitmq-server-generic-unix-3.8.5.tar.xz
tar xvf rabbitmq-server-generic-unix-3.8.5.tar
mv rabbitmq_server-3.8.5 /usr/local
cd /usr/local/

rm -f /usr/local/rabbitmq
ln -s rrabbitmq_server-3.8.5 rabbitmq

#14.修改/etc/profile文件,添加下面的环境变量:
export PATH=$PATH:/usr/local/rabbitmq/sbin
执行source /etc/profile让文件生效。


#15.设置开启自启脚本
chown -R rabbitmq.rabbitmq rabbitmq_server-3.8.5

添加 source /etc/profile 否则可能提示erl无法找到
vi /usr/local/rabbitmq/sbin/rabbitmq-env
source /etc/profile

# 可以先启动程序生成 erlang.cookie 文件

/usr/local/rabbitmq/sbin/rabbitmq-server

注意 .erlang.cookie 文件在/home/rabbitmq 下,因通过rabbitmq账户去启动,并且/root/下的 .erlang.cookie值要和/home/rabbitmq 下的文件值保持一致,否则集群无法启动

# 启动管理程序

cat /usr/lib/systemd/system/rabbitmq-server.service

[Unit]
Description=RabbitMQ broker
After=syslog.target network.target

[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
UMask=0027
NotifyAccess=all
TimeoutStartSec=3600

# To override LimitNOFILE, create the following file:
#
# /etc/systemd/system/rabbitmq-server.service.d/limits.conf
#
# with the following content:
#
# [Service]
# LimitNOFILE=65536

LimitNOFILE=32768

# Note: systemd on CentOS 7 complains about in-line comments,
# so only append them here
#
# Restart:
# The following setting will automatically restart RabbitMQ
# in the event of a failure. systemd service restarts are not a
# replacement for service monitoring. Please see
# https://www.rabbitmq.com/monitoring.html
Restart=on-failure
RestartSec=10
WorkingDirectory=/usr/local/rabbitmq/var/lib/rabbitmq
ExecStart=/usr/local/rabbitmq/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq/sbin/rabbitmqctl shutdown
# See rabbitmq/rabbitmq-server-release#51
SuccessExitStatus=69

[Install]
WantedBy=multi-user.target

# 无法启动的原因可能是日志使用rabbitmq用户没有权限

chown -R rabbitmq.rabbitmq /usr/local/rabbitmq_server-3.8.5

# 查看日志
/usr/local/rabbitmq/var/log/rabbitmq/rabbit@eus-video-compose02.log
# cat ~/.erlang.cookie
QBISJBZGKYVFNASJQWDQ

# 以下步骤在两个节点中都要执行
#15.启动rabbitMQ
systemctl start rabbitmq-server.service

#15.启动rabbitMQ(可选,但是最好不要这样启动)
rabbitmq-server

#15.后台运行服务(可选,但是最好不要这样启动)
rabbitmq-server -detached

#16.设置开机自启
systemctl enable rabbitmq-server.service

#17.关闭rabbitMQ
systemctl stop rabbitmq-server.service

#17.关闭rabbitMQ
rabbitmqctl stop

#18.安装web界面扩展
rabbitmq-plugins enable rabbitmq_management

#19.添加用户
rabbitmqctl add_user admin pass

#20.列出用户
rabbitmqctl  list_users

#21.将admin指定为管理员权限
rabbitmqctl set_user_tags admin administrator

#22.删除来宾用户
rabbitmqctl delete_user guest

#23.安装成功,访问如下地址
http://192.168.101.21:15672/

二.加入集群
#1.修改 /etc/hosts
# rabbitmq cluster
172.30.0.1 eus-video-compose01
172.30.0.2 eus-video-compose02

#2.设置 Erlang Cookie,路径为/home/rabbitmq/.erlang.cookie,这里将 eus-video-compose01 的该文件复制到 eus-video-compose02,由于这个文件权限是 400,所以需要先修改 eus-video-compose02,中的该文件权限为 777,然后将 node1 中的该文件拷贝到 node2,最后将权限和所属用户/组修改回来
chown rabbitmq /home/rabbitmq/.erlang.cookie
chgrp rabbitmq /home/rabbitmq/.erlang.cookie

也可以直接复制里面的内容,让两台机器的 .erlang.cookie 内容保持一致

#3.使用 -detached 参数运行各节点
systemctl stop rabbitmq-server.service  #推荐
rabbitmqctl stop                        #不推荐

systemctl start rabbitmq-server.service  #推荐
rabbitmq-server -detached               #不推荐

#4.组成集群,注意防火墙开启4637端口,在eus-video-compose01上执行
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@eus-video-compose02
[root@eus-video-compose01:~]# rabbitmqctl join_cluster rabbit@eus-video-compose02
Clustering node rabbit@eus-video-compose01 with rabbit@eus-video-compose02
rabbitmqctl start_app

#5.如果要使用内存节点,则可以使用下面的命令加入集群。
rabbitmqctl join_cluster *--ram* rabbit@rabbitmq_02

设置镜像集群模式:
#6.设置镜像队列策略,在任意一个节点上执行下面的命令,将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'


[root@eus-video-compose01:~]# rabbitmqctl list_policies
Listing policies for vhost "/" ...

[root@eus-video-compose01:~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...
[root@eus-video-compose01:~]# rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost    name    pattern    apply-to    definition    priority
/    ha-all    ^    all    {"ha-mode":"all"}    0


[root@eus-video-compose02:/usr/local]# rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost   name    pattern apply-to        definition      priority
/       ha-all  ^       all     {"ha-mode":"all"}       0



查看集群状态:
# rabbitmqctl cluster_status

命令行下添加rabbitmq用户,没有访问权限,队列没有被消费

需要在web界面设置一下权限

修改默认端口

1.修改rabbitmq的配置,引入修改相关配置的文件 # vim /usr/local/rabbitmq/sbin/rabbitmq-defaults
# 添加这行
CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq.conf

# 添加修改端口的配置
vim /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf
#数据管理端口(默认端口为5672)
listeners.tcp.default=5673
#界面管理端口(默认端口为15672)
management.tcp.port=15672
management.tcp.ip=0.0.0.0

原文地址:https://www.cnblogs.com/reblue520/p/13231431.html