RabbitMQ 消息队列服务安装说明

2020-05-13 0 By admin

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 的镜像有几个方面说明:

  1. 常用的镜像为:rabbitmq:<version> 形式。
  2. 带有管理插件的镜像:rabbitmq:<version>-management。
  3. 基础小镜像:rabbitmq:<version>-alpine,rabbitmq:<version>-management-alpine

2.6、使用技巧

  1. RabbitMQ 镜像内设置了一些需要的环境变量,可以在容器中查看。
  2. 可以通过启动参数设置默认的用户名和密码。
  3. 可以通过启动参数设置默认的 vhost。
  4. 如果有其他的配置,可以通过/etc/rabbitmq/rabbitmq.conf 设置。

三、容器编排工具 Kubernetes

3.1、健康检测

readinessProbe:
	exec:
		command:
		- rabbitmqctl
		- status

3.2、持久化存储

RabbitMQ 的持久化目录是在/var/lib/rabbitmq子目录下;将共享存储挂载到这个目录下就可以实现持久化了。

不过 RabbitMQ 持久化相关的文件的名称,是以 hostname 设定的,在 Kubernetes 中 POD 的名称是变化的,所以我们要将和持久化相关的文件设置一个固定的名称。
解决方法:通过修改环境变量 RABBITMQ_NODENAME 的方式,即可将这些文件的名称固定