gpt4 book ai didi

rabbitmq - 如何在 Openshift 上正确设置 RabbitMQ

转载 作者:行者123 更新时间:2023-12-04 23:38:51 24 4
gpt4 key购买 nike

我使用此图像在 OpenShift 上创建了新应用程序:https://hub.docker.com/r/luiscoms/openshift-rabbitmq/

它运行成功,我可以使用它。我已经向它添加了一个持久卷。
但是,每次重新启动 POD 时,我都会丢失所有数据。这是因为 RabbitMq 使用主机名来创建数据库目录。

例如:

node           : rabbit@openshift-rabbitmq-11-9b6p7
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash : BsUC9W6z5M26164xPxUTkA==
log : tty
sasl log : tty
database dir : /var/lib/rabbitmq/mnesia/rabbit@openshift-rabbitmq-11-9b6p7

如何将 RabbitMq 设置为始终使用相同的数据库目录?

最佳答案

您应该能够设置环境变量 RABBITMQ_MNESIA_DIR覆盖默认配置。这可以通过 OpenShift 控制台通过在部署配置中添加一个条目到 environment 或通过 oc 来完成。工具,例如:
oc set env dc/my-rabbit RABBITMQ_MNESIA_DIR=/myDir
然后,您需要将持久卷挂载到 Pod 内所需的路径上。既然你说已经创建了,那么你只需要更新它,例如:
oc volume dc/my-rabbit --add --overwrite --name=my-pv-name --mount-path=/myDir
您需要确保在提供的安装路径上具有正确的 r/w 访问权限

编辑:一些基于评论问题的额外解决方法

由动态主机名引起的问题可以通过多种方式解决:

1.(首选 IMO)将部署移至 StatefulSet . StatefulSet 将为 Pod 的命名和网络标识符提供稳定性,Pod 必须以 headless 服务为前端。此功能在 Kubernetes 1.9 和 OpenShift 3.5 版之后的技术预览版中已经过测试

  • 如果 Statefulsets 不是一个选项,则设置 Pod 的主机名。这可以通过添加环境变量 oc set env dc/example HOSTNAME=example 来完成。使主机名静态并设置 RABBITMQ_NODENAME这样做。
  • 关于rabbitmq - 如何在 Openshift 上正确设置 RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569931/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com