在将两节点群集从RabbitMQ 3.6.15
升级到3.7.9
之后(直接支持此文档-没有中间版本升级),以及将Erlang从18.7.3
更新到最新的21.10.1.1
,rabbitmq-server
不会在“升级程序”节点上启动:
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说
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
。所以我不知道为什么要尝试连接到另一个节点名称(主机名)。从我看到的结果来看,它无法解析新的节点名称。
现在,配置文件与升级之前相同。根据文档,仍然支持旧格式。
升级之前/之后:
[ { 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 } ] } ].
hosts文件(自尝试升级兔子以来未更改):
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
新生成的配置文件说明如下:
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
...而旧的引用了旧的(正确的)节点名称:
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
引用正确的节点名称/数据库?
答案 0 :(得分:0)
发现了问题,我需要修改rabbitmq-env
(在升级之前已对其进行了自定义)。具体来说:
RABBITMQ_NAME_TYPE=-sname
[ "x" = "x$HOSTNAME" ] && HOSTNAME=`env hostname`
我将env hostname
的命令替换为另一个命令,以替换我的localhost
中分配给/etc/hosts
的字符串。