RabbitMQ 消息队列服务安装说明
RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配。详细的版本要求,可以去官网查看。
一、服务直接安装到宿主机
1、二进制包安装
官网提供了各种系统宿主机的安装方式,windows、ubuntu 和 Redhat 等,不同的系统可以选择相应的安装包进行安装。
2、源码包安装
linux 系统源码包generic-unix
;使用这个包的话,需要自行编译安装。
安装过程中,需要解决各种的依赖包问题。
二、Docker 容器化服务
2.1、启动一个 RabbitMQ 的容器
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
容器会监听 5672 端口,以 amqp 协议(基于TCP),对外提供服务。
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash : UoNOcDhfxW9uoZ92wh6BjA==
log : tty
sasl log : tty
database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit
2.2、对内存资源进行限制
RabbitMQ包含显式跟踪和管理内存使用的功能,因此需要注意cgroup所施加的限制。
2.3、Erlang Cookie
RabbitMQ节点和CLI工具(例如rabbitmqctl)使用cookie来确定是否允许它们彼此通信。要使两个节点能够通信,它们必须具有称为Erlang cookie的相同共享机密。cookie只是一个大小不超过255个字符的字母数字字符串。它通常存储在本地文件中。文件必须只能由所有者访问(例如,拥有600或类似的UNIX权限)。每个群集节点必须具有相同的cookie。
2.4、管理插件
如下想使用【管理插件】,则需要下载带有插件的镜像。以 management 单词结尾的镜像都是增加了【管理插件】的。
新的容器监听 15672 端口,以 HTTP 协议,提供的管理页面;初始化的用户名和密码都为 guest。
2.5、镜像变种
RabbitMQ 的镜像有几个方面说明:
- 常用的镜像为:rabbitmq:<version> 形式。
- 带有管理插件的镜像:rabbitmq:<version>-management。
- 基础小镜像:rabbitmq:<version>-alpine,rabbitmq:<version>-management-alpine
2.6、使用技巧
- RabbitMQ 镜像内设置了一些需要的环境变量,可以在容器中查看。
- 可以通过启动参数设置默认的用户名和密码。
- 可以通过启动参数设置默认的 vhost。
- 如果有其他的配置,可以通过/etc/rabbitmq/rabbitmq.conf 设置。
三、容器编排工具 Kubernetes
3.1、健康检测
readinessProbe:
exec:
command:
- rabbitmqctl
- status
3.2、持久化存储
RabbitMQ 的持久化目录是在/var/lib/rabbitmq
子目录下;将共享存储挂载到这个目录下就可以实现持久化了。
不过 RabbitMQ 持久化相关的文件的名称,是以 hostname 设定的,在 Kubernetes 中 POD 的名称是变化的,所以我们要将和持久化相关的文件设置一个固定的名称。
解决方法:通过修改环境变量 RABBITMQ_NODENAME
的方式,即可将这些文件的名称固定