## RabbitMq的安装
【服务器系统版本】
```
Linux version 3.10.0-1062.18.1.el7.x86_64
RabbitMq的最新版本,适用el8、el9的系统。不适用el7
因此我们最终确定版本:RabbitMq 3.10,Erlang 23.3。
RabbitMq与erlang对应版本参考下面链接:
https://www.rabbitmq.com/which-erlang.html
```
【RabbitMq版本】
```
RabbitMq的发布版是: 3.10.0
Erlang:23.3.4.10。
```
【RabbitMq发布版维护的时间线】
| 版本号 | 补丁版本 | 第一次发布时间 | 维护结束时间 | 持续时间 |
| --- | --- | --- | --- | --- |
| 3.11 | 3.11.10 | 2022-09-28 | -- | -- |
| 3.10 | 3.10.19 | 2022-05-03 | 2023-07-31 | 19个月(包含商业特性) |
| 3.9 | 3.9.28 | 2021-07-26 | 2023-01-31 | 24个月(包含商业特性) |
| 3.8 | 3.8.35 | 2019-10-01 | 2022-07-31 | 34个月 |
| 3.7 | 3.7.28 | 2017-11-28 | 2020-09-30 | 34个月 |
| ... |.... | ... | .. | .. |
```
时间线:https://www.rabbitmq.com/versions.html
```
【安装Erlang】
```
运行RabbitMq的最小化安装方式:
首先运行脚本,设置yum仓库:
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
然后进行安装:
sudo yum install erlang-23.3.4.10-1.el7.x86_64
```
【安装RabbitMq】
```
在Fedora和RHEL仓库里包含rabbitmq,但是仓库里包含的版本可能会落后最新版本
很多,甚至肯能还会提供官方不在支持的版本。
官方推荐的安装方式: 在Cloudsmith.io 或 PackageCloud使用yum仓库
我们采用PackageCloud仓库进行安装,安装过程如下:
使用Package Cloud提供的脚本,来快速的设置仓库:
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
-- 直接执行下面的命令安装
sudo yum install rabbitmq-server-3.10.0-1.el7.noarch
```
【RabbitMq官方配置脚本】
```
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
这两个仓库的配置脚本执行完成后,在路径:/etc/yum.repos.d,你会看到相应的
配置文件:
rabbitmq_erlang.repo
rabbitmq_rabbitmq-server.repo
```
【配置rabbitmq开机启动】
```
RabbitMq默认不是以守护进程的方式启动,如果当系统启动的时候,想要RabbitMq
以守护进程的方式启动,使用管理员账号执行下面命令:
chkconfig rabbitmq-server on
```
【启动|停止RabbitMq】
```
service rabbitmq-server start
service rabbitmq-server status
service rabbitmq-server stop
```
【如果service 工具没有安装,执行下面命令】
```
yum -y install initscripts
```
【RabbitMq端口】
```
5534--用来监听客户端链接。默认端口是:5672
15534--RabbitMq管理插件占用端口(用来管理rabbitmq,已经查看关键的性能指
标)。默认端口是:15672
```
【服务器的开通端口】
```
服务器地址:47.104.196.10
开通端口:5534,15534
5534--用于客户端链接
15534--rabbitmq管理插件占用端口(用来管理rabbitmq,已经查看关键的性能指
标)
```
【RabbitMq默认路径】
![rabbitmq_def_path.jpg](https://note.youdao.com/yws/res/7017/WEBRESOURCE29af7514f457c3750df7fe080a04bbf3)
```
配置文件路径:/etc/rabbitmq/rabbitmq.conf,/etc/rabbitmq/advanced.config
日志路径: /var/log/rabbitmq/[email protected]
node : rabbit@ziyuan
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/advanced.config
: /etc/rabbitmq/rabbitmq.conf
cookie hash : kCKvp150FOiNIHZAKhFgdg==
log(s) : /var/log/rabbitmq/[email protected]
: /var/log/rabbitmq/rabbit@ziyuan_upgrade.log
:
database dir : /var/lib/rabbitmq/mnesia/rabbit@ziyuan
```
【启用ManagementUi】
```
rabbitmq-plugins enable rabbitmq_management
管理插件的登录页面:
http://47.104.196.10:15534/
默认用户:guest,密码:guest。这个用户只能进行登录。
我们需要删除这个用户,同时创建新的用户(使用HttpApi)。
```
【创建新用户】
```
参考api文档连接:
http://47.104.196.10:15534/api/index.html
1. 创建新用户
curl -i -u guest:guest -H "content-type:application/json" \
-XPUT -d'{"password":"qwe123!@#","tags":"administrator"}' \
http://localhost:15534/api/users/scm
2. 使用scm账号登录
使用命令行对用户进行操作:
创建用户:
rabbitmqctl add_user 'username' '2a55f70a841f18b97c3a7db939b7adc9e34a0f1b'
查询用户:
rabbitmqctl list_users
删除用户
rabbitmqctl delete_user 'username'
为用户授权:
rabbitmqctl set_permissions -p "custom-vhost" "username" ".*" ".*" ".*"
清空权限:
rabbitmqctl clear_permissions -p "custom-vhost" "username"
```
【删除用户】
```
如果用户创建不正确,可以使用api接口进行用户删除。
1. 删除用户
curl -i -u guest:guest -H "content-type:application/json" \
-XPOST -d'{"users":["scm"]}' \
http://localhost:15534/api/users/bulk-delete
```
【RabbitMq元数据导入和导出】
```
元数据被存储在内部的数据库,并且横跨集群所有的节点进行复制。
1. 将原数据导出json文件。
1)如果没用启用管理插件,使用命令行工具导出
rabbitmqctl export_definitions
2)GET /api/definitions
3)rabbitmqadmin export
示例:
rabbitmqctl export_definitions /path/to/definitions.file.json
rabbitmqadmin export /path/to/definitions.file.json
curl -u {username}:{password} -X GET http://{hostname}:15672/api/definitions
2.元数据导入
rabbitmqctl import_definitions /path/to/definitions.file.json
rabbitmqadmin import /path/to/definitions.file.json
```
【生产环境需要关注配置项】
```
1. Virtual Hosts
在多租户环境种,为每个租户使用单独的vhost ,例如:tenant/environment
2.用户
为每个应用创建一个用户,删除默认用户guest
3.内存,默认当rabbitmq使用内存超过40%时,rabbitmq将不再接收消息
vm_memory_high_watermark.relative = 0.4
这个配置项的范围,官方推荐是:0.4-0.7
4.磁盘空间,生产环境建议设置1.5
disk_free_limit.relative = 1.5
如果你的内存是4GB,那么当磁盘可用空间不足6GB时,新消息将被阻塞
5.打开文件句柄的最大数量,系统默认为1024,推荐设置为65536,(官方推荐至
少大于5万)
6.日志收集
```