国产麒麟服务器部署rabbitmq+延时队列(docker版)
·
国产服务器多了一些安全性检查和限制
记录的原因是使用docker部署延时队列插件时总是报权限或者无法开启插件问题如下:
** (CaseClauseError) no case clause matching: {:error, {:cannot_read_enabled_plugins_file, ~c"/etc/rabbitmq/enabled_plugins", :eacces}}
(rabbitmqctl 3.13.0-dev) lib/rabbitmq/cli/plugins/plugins_helpers.ex:112: RabbitMQ.CLI.Plugins.Helpers.update_enabled_plugins/4
(rabbitmqctl 3.13.0-dev) lib/rabbitmq/cli/plugins/commands/enable_command.ex:127: anonymous fn/6 in RabbitMQ.CLI.Plugins.Commands.EnableCommand.do_run/2
(elixir 1.17.2) lib/stream.ex:1593: anonymous fn/2 in Stream.iterate/2
(elixir 1.17.2) lib/stream.ex:1820: Stream.do_unfold/4
(elixir 1.17.2) lib/stream.ex:1891: Enumerable.Stream.do_each/4
(elixir 1.17.2) lib/stream.ex:1052: Stream.do_transform_inner_enum/7
(elixir 1.17.2) lib/stream.ex:1891: Enumerable.Stream.do_each/4
(elixir 1.17.2) lib/enum.ex:2585: Enum.reduce_while/3
{:case_clause, {:error, {:cannot_read_enabled_plugins_file, ~c"/etc/rabbitmq/enabled_plugins", :eacces}}}
单纯安装rabbitmq是挺顺利的,主要问题在插件。以下未修正后的安装步骤
第一步运行mq容器
docker run -d \
--name rabbitmq-server \
--privileged=true \
--restart unless-stopped \
--cap-add=SYS_RESOURCE \
--cap-add=SYS_ADMIN \
-v /env/dockerapp/rabbitmq/data:/var/lib/rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq:3.13-management
注: --cap-add=SYS_RESOURCE \
--cap-add=SYS_ADMIN \
--privileged=true \ 这三个参数是麒麟服务器额外添加的,处理安全校验
第二步下载延时队列插件
如果需要延时队列需要执行下面命令
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez
也可以自行上传插件包,这是在线下载
第三步插件丢到容器里
docker exec -it -u root rabbitmq-server chown rabbitmq:rabbitmq /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez
我遇到的权限问题,导致不能安装插件
# 验证权限(应显示 -rw-r--r-- 1 rabbitmq rabbitmq)
docker exec -it -u root rabbitmq-server ls -l /plugins/rabbitmq_delayed_message_exchange-3.13.0.ez
第四步添加插件权限
# 修复 enabled_plugins 文件权限
docker exec -it -u root rabbitmq-server chown rabbitmq:rabbitmq /etc/rabbitmq/enabled_plugins
docker exec -it -u root rabbitmq-server chmod 644 /etc/rabbitmq/enabled_plugins
# 修复整个配置目录权限
docker exec -it -u root rabbitmq-server chown -R rabbitmq:rabbitmq /etc/rabbitmq
第五步启用插件
# 不再使用 -u root,改用镜像内实际用户 rabbitmq
docker exec -it -u rabbitmq rabbitmq-server rabbitmq-plugins enable rabbitmq_delayed_message_exchange
重启下mq
docker restart rabbitmq-server
最后验证
docker exec -it rabbitmq-server rabbitmq-plugins list | grep delayed
更多推荐
所有评论(0)