修改hostname导致RabbitMQ数据丢失

背景介绍

 公司的很多关键服务都使用了RabbitMQ来作为消息队列服务, 可以说是非常地关键的一个环节, 最近由于业务量的上升, 导致RabbitMQ的CPU持续走高, 所以抽空研究了一下RabbitMQ的扩容, 利用我们自己运维平台使用的一个单节点的RabbitMQ来作为测试吧.看到这个单节点的RabbitMQ的服务器主机名不是很规范, 所以就顺手改了主机名, 然后重启了RabbitMQ服务, 重启后看了RabbitMQ的日志, 发现有大量的因为密码错误而连接失败的, 如下:

AMQPLAIN login refused: user 'test' - invalid credentials

发现RabbitMQ的管理后台也登陆不进去了, 这时候我意识到RabbitMQ的数据丢失了, 至少是用户的数据丢失了, 因为管理后台登陆不上了, 我登录到服务器上列出了所有的用户:

root@test-01:/# rabbitmqctl list_users

Listing users ...

guest [administrator]

发现只有guest用户了, 这时候我按照之前的用户重新创建了用户后恢复了, 后来查了一下官方文档:

In addition to that, by default RabbitMQ names the database directory using the current hostname of the system. If the hostname changes, a new empty database is created. To avoid data loss it's crucial to set up a fixed and resolvable hostname
结论

修改主机名最后在集群安装之前规划好, 集群搭建完以后主机名一定不能修改, 谨记。

### 更改RabbitMQ服务器的主机名 #### 调整操作系统层面的主机名设置 为了确保RabbitMQ能够正常工作,在更改操作系统的主机名之后,还需要执行额外的操作以防止数据丢失以及认证问题的发生。对于Linux系统而言,可以通过编辑`/etc/sysconfig/network`文件来实现这一点[^1]。 ```bash vim /etc/sysconfig/network ``` 在此文件内定义新的HOSTNAME参数值为期望的新名称。然而需要注意的是,简单地修改此文件并重启网络服务可能不足以完全解决问题;有时还需更新`/etc/hosts`文件中的条目以便让新名字生效,并且要确认DNS解析无误。 #### 处理因变更引发的身份验证失败情况 当尝试仅通过上述方法改变主机名时,可能会遇到像这样的错误:“AMQPLAIN login refused: user 'test' - invalid credentials”。这表明虽然客户端可以找到服务器,但是它无法成功完成身份验证过程[^2]。这是因为RabbitMQ内部存储了一些依赖于原始主机名的信息,特别是与权限控制有关的数据。 为了避免这种情况发生,在实际环境中应当采取更加谨慎的方式来进行这项改动: - **备份数据库**:在任何重要的配置变动之前总是应该先做好充分准备,包括但不限于创建完整的Erlang Mnesia数据库副本。 - **停止服务**:停运现有的RabbitMQ实例,确保没有任何活动会话正在进行之中。 - **迁移Mnesia表**:如果确实有必要更换主机名,则需按照官方文档指导转移相关表格至新的命名空间之下。 - **重新启动服务**:最后再开启经过调整后的RabbitMQ进程,并仔细监控其行为直至稳定运行一段时间为止。 #### 配置文件内的特定设定 另外一种方式是在不直接更动全局主机名的前提下,只针对RabbitMQ应用层面上做相应变化。例如可以在Windows环境下通过图形界面进入管理页面,点击Nodes下的Name选项卡获取到当前使用的配置路径位置[^3]。接着依据提示打开对应的`.conf`或`.ini`形式的文本档,加入如下所示的内容片段用于指定监听地址及端口号: ```erlang [ {rabbit, [ {tcp_listeners, [{"192.168.40.116", 19042}]} ] } ]. ``` 这里假设目标机器拥有静态分配给它的IPv4数值“192.168.40.116”,并且希望对外提供非默认的服务端口即19042号。当然也可以根据实际情况灵活替换这些具体细节部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴国进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值