0 版本选择
查询地址:https://www.rabbitmq.com/which-erlang.html
Windows下载:https://erlang.org/download/otp_versions_tree.html
Linux可在其GitHub仓库直接下载rpm安装包
1 Erlang安装 (22.3.4.1版本)
1.1 在线安装
这里选用的Erlang是rabbitMQ官方提供的精简包,只有rabbitMQ运行所必须的环境
1.1.1 配置软件仓库和签名密钥
vi /etc/yum.repos.d/rabbitmq-erlang.repo
To use Erlang 22.x on CentOS 7:
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/22/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
1.1.2 安装
yum install erlang
来自:https://github.com/rabbitmq/erlang-rpm的readme.md
1.2 离线安装
1.2.1 准备
下载需要的密钥和对应的安装包
密钥下载地址:https://github.com/rabbitmq/signing-keys、https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
安装包下载地址:https://github.com/rabbitmq/erlang-rpm/releases/download/v22.3.4.1/erlang-22.3.4.1-1.el7.x86_64.rpm
上传到服务器,进入到目录,这里上传到/usr
目录
cd /usr
1.2.2 配置密钥
离线可以不用这一步
sudo rpm --import rabbitmq-release-signing-key.asc
1.2.3 安装
rpm -ivh erlang-22.3.4.1-1.el7.x86_64.rpm
1.3 验证
显示版本号,并进入控制台,即成功。
erl
退出,“.”不能忘记
halt().
2 安装RabbitMQ (3.8.4 版本)
2.1 在线安装
2.1.1 导入签名密钥
sudo rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
2.1.2 配置软件仓库
在/etc/yum.repos.d/
目录下添加.repo文件(例如rabbitmq.repo),在文件中添加以下内容,并保存
vi /etc/yum.repos.d/rabbitmq.repo
The following example sets up a repository that will install RabbitMQ 3.8 and targets CentOS 7:
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
2.1.3 安装
https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server中查找对应的版本,这里使用的是CentOS 7 ,所以安装地址是:
yum install https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/noarch/rabbitmq-server-3.8.4-1.el7.noarch.rpm
2.2 离线安装
2.2.1 准备
下载对应的安装包(若选用离线,密钥在安装erlang的时候已经配置过,故这里可不再次配置)
rabbitmq以及其依赖包
socat下载地址:http://mirror.centos.org/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm
rabbitmq下载地址:https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/noarch/rabbitmq-server-3.8.4-1.el7.noarch.rpm
github上对应版本下载:https://github.com/rabbitmq/rabbitmq-server/releases
2.2.2 安装
将下载的安装包上传服务器,这里上传到/usr
目录
cd /usr
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh rabbitmq-server-3.8.4-1.el7.noarch.rpm
一键安装
rpm -Uvh *.rpm --nodeps --force
2.3 安装路径
默认是:/usr/lib/rabbitmq
whereis rabbitmq
2.4 开启守护进程
使用rpm安装,默认是关闭守护进程的,需要开启
chkconfig rabbitmq-server on
2.5 启动/停止
# start it back
service rabbitmq-server start
# restart it back
service rabbitmq-server restart
# stop the local node
service rabbitmq-server stop
# check on service status as observed by service manager
service rabbitmq-server status
2.6 放行端口
systemctl status firewalld
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --zone=public --add-port=15674-15675/tcp --permanent
firewall-cmd --zone=public --add-port=4396/tcp --permanent
firewall-cmd --zone=public --add-port=25672/tcp --permanent
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --reload
2.7 用户管理
查看所有用户
rabbitmqctl list_users
添加一个用户
rabbitmqctl add_user admin 123456
配置权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
查看用户权限
rabbitmqctl list_user_permissions admin
设置tag
rabbitmqctl set_user_tags admin administrator
删除用户(安全起见,删除默认用户)
rabbitmqctl delete_user guest
重启即可用新账号登录
2.8 启用插件
2.8.1 Web管理
rabbitmq-plugins enable rabbitmq_management
访问:http://{ip}:15672/
默认账号密码:guest guest(这个账号只允许本机访问)
2.8.2 MQTT
启动MQTT插件
rabbitmq-plugins enable rabbitmq_mqtt
创建账号
rabbitmqctl add_user mqtt-user mqtt-123456
rabbitmqctl set_permissions -p / mqtt-user ".*" ".*" ".*"
rabbitmqctl set_user_tags mqtt-user management
具体可查看:https://www.rabbitmq.com/mqtt.html
2.8.3 Web STOMP
rabbitmq-plugins enable rabbitmq_web_stomp
具体可查看:https://www.rabbitmq.com/web-stomp.html
2.8.4 Web MQTT
rabbitmq-plugins enable rabbitmq_web_mqtt
具体可查看:https://www.rabbitmq.com/web-mqtt.html
2.8.5 TRACING
rabbitmq-plugins enable rabbitmq_tracing
消息记录追踪插件
3 RabbitMQ普通集群配置
先按照以上步骤安装完单机版
3.1 环境
IP地址 | 主机名 | 操作系统 | 用途 |
---|---|---|---|
192.168.68.133 | rabbitmq1 | CentOS7.8(64位) | 磁盘节点 |
192.168.68.134 | rabbitmq2 | CentOS7.8(64位) | 内存节点 |
192.168.68.135 | rabbitmq3 | CentOS7.8(64位) | 内存节点 |
3.2 放行端口
firewall-cmd --zone=public --add-port=35672-35682/tcp --permanent
firewall-cmd --zone=public --add-port=4369/tcp --permanent
firewall-cmd --reload
3.3 拷贝cookie
scp root@192.168.68.133:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
拷贝完以后需要重启Rabbit MQ服务
3.4 设置内存节点
将 2、3 服务器rabbitMQ设置成 1 服务器的内存节点,在2、3服务器上执行如下命令
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
rabbitmqctl start_app
–ram 指定内存节点类型
–disc 指定磁盘节点类型
修改节点类型
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
4 RabbitMQ镜像集群配置
查看博客:https://blog.51cto.com/11134648/2155934
5 服务器名修改后可能遇到的报错
5.1 报错一
Error: unable to perform an operation on node 'rabbit@pro-xxx'. Please see diagnostics information and suggestions below.
Most common reasons for this are:
* Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
* CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
* Target node is not running
In addition to the diagnostics info below:
* See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
* Consult server logs on node rabbit@pro-xxx
* If target node is configured to use long node names, don't forget to use --longnames with CLI tools
DIAGNOSTICS
===========
attempted to contact: ['rabbit@pro-xxx']
rabbit@pro-xxx:
* connected to epmd (port 4369) on pro-xxx
* epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
* can't establish TCP connection to the target node, reason: timeout (timed out)
* suggestion: check if host 'pro-xxx' resolves, is reachable and ports 25672, 4369 are not blocked by firewall
Current node details:
* node name: 'rabbitmqcli-23998-rabbit@pro-xxx'
* effective user's home directory: /var/lib/rabbitmq
* Erlang cookie hash: AsZk1YLHaHBTrRfcnFH+PQ==
需要编辑服务器的hosts配置文件
vi /etc/hosts
追加内容,即:把本机的IP追加进去,名称对应服务器名称
192.168.68.133 pro-xxx
或
echo 192.168.68.133 pro-xxx >> /etc/hosts
再重启rabbitMQ服务
5.2 报错二
Error: unable to perform an operation on node 'rabbit@localhost'. Please see diagnostics information and suggestions below.
Most common reasons for this are:
* Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
* CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
* Target node is not running
In addition to the diagnostics info below:
* See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
* Consult server logs on node rabbit@localhost
* If target node is configured to use long node names, don't forget to use --longnames with CLI tools
DIAGNOSTICS
===========
attempted to contact: [rabbit@localhost]
rabbit@localhost:
* connected to epmd (port 4369) on localhost
* epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
* TCP connection succeeded but Erlang distribution failed
* Node name (or hostname) mismatch: node "rabbit@test-xxx" believes its node name is not "rabbit@test-xxx" but something else.
All nodes and CLI tools must refer to node "rabbit@test-xxx" using the same name the node itself uses (see its logs to find out what it is)
Current node details:
* node name: 'rabbitmqcli-26280-rabbit@localhost'
* effective user's home directory: /var/lib/rabbitmq
* Erlang cookie hash: AsZk1YLHaHBTrRfcnFH+PQ==
解决
vi /etc/rabbitmq/rabbitmq-env.conf
#新增以下内容
RABBITMQ_NODENAME=rabbit@test-xxx