首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RabbitMQ在升级后丢失配置

RabbitMQ在升级后丢失配置
EN

Stack Overflow用户
提问于 2018-12-04 01:45:19
回答 1查看 344关注 0票数 0

在执行了从RabbitMQ 3.6.153.7.9的两节点集群升级(er文档直接支持-没有中间版本升级),以及将Erlang从18.7.3升级到最新的21.10.1.1之后,rabbitmq-server将不会在"upgrader“节点上启动:

代码语言:javascript
复制
systemctl start rabbitmq-server.service
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.

journalctl -xe说

代码语言:javascript
复制
attempted to contact: ['rabbit@upd-web']
rabbit@upd-web:
  * connected to epmd (port 4369) on upd-web
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on upd-web
  * suggestion: start the node
Current node details:
 * node name: 'rabbitmqcli-3561-rabbit@upd-web'
 * effective user's home directory: /var/lib/rabbitmq
 * Erlang cookie hash: iGIHB+jl59ul7YFrqAFIZQ==

问题是,升级后,rabbit会尝试连接到另一个本地节点,而不是之前配置的节点。升级前节点名称(兔子工作):rabbit@376e265c649945fe87014f56bf054fe7。升级后的节点名称:rabbit@upd-web。节点名称在/etc/hosts中定义,并且保持不变。主机名也与之前相同:rabbit@upd-web。所以我不知道为什么它要尝试连接到不同的节点名(主机名)。根据我所看到的,它不能解析新的节点名称(显然)。

现在,配置文件与升级前相同。根据文档,旧格式仍然受支持。

升级前/升级后配置:

代码语言:javascript
复制
[ { kernel, [ { inet_dist_listen_min, 6150 }, { inet_dist_listen_max, 6150 } ] }, { rabbit, [ {tcp_listeners, [{'0.0.0.0', 5672},{'::1', 5672}]}, { cluster_nodes, { [ 'rabbit@f681cc63b892eecff1fa91a9f1ddbb9b','rabbit@376e265c649945fe87014f56bf054fe7' ], disc } } , { cluster_partition_handling, autoheal } ] } ].

主机文件(自尝试升级之前未更改):

代码语言:javascript
复制
127.0.0.1       localhost
127.0.1.1       upd-web

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.56.104 376e265c649945fe87014f56bf054fe7
127.0.0.1       376e265c649945fe87014f56bf054fe7

新生成的配置文件说明了以下内容:

代码语言:javascript
复制
 node           : rabbit@upd-web
 home dir       : /var/lib/rabbitmq
 config file(s) : /etc/rabbitmq/rabbitmq.config
 cookie hash    : iGIHB+jl59ul7YFrqAFIZQ==
 log(s)         : /var/log/rabbitmq/rabbit@upd-web.log
                : /var/log/rabbitmq/rabbit@upd-web_upgrade.log
 database dir   : /var/lib/rabbitmq/mnesia/rabbit@upd-web

...while旧的节点引用了旧的(正确的)节点名:

代码语言:javascript
复制
node           : rabbit@376e265c649945fe87014f56bf054fe7
home dir       : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/rabbitmq.config
cookie hash    : iGIHB+jl59ul7YFrqAFIZQ==
log            : /var/log/rabbitmq/rabbit@376e265c649945fe87014f56bf054fe7.log
sasl log       : /var/log/rabbitmq/rabbit@376e265c649945fe87014f56bf054fe7-sasl.log
database dir   : /var/lib/rabbitmq/mnesia/rabbit@376e265c649945fe87014f56bf054fe7

如何让RabbitMQ引用正确的节点名称/数据库?

EN

回答 1

Stack Overflow用户

发布于 2018-12-04 23:16:09

发现问题后,我需要修改rabbitmq-env (它是升级前自定义的)。具体地说:

代码语言:javascript
复制
RABBITMQ_NAME_TYPE=-sname
[ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname`

我将env hostname命令替换为另一个命令,将/etc/hosts中分配给localhost的字符串放入其中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53599081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档