背景介紹
?公司的很多關鍵服務都使用了RabbitMQ來作為消息隊列服務, 可以說是非常地關鍵的一個環節, 最近由于業務量的上升, 導致RabbitMQ的CPU持續走高, 所以抽空研究了一下RabbitMQ的擴容, 利用我們自己運維平臺使用的一個單節點的RabbitMQ來作為測試吧.看到這個單節點的RabbitMQ的服務器主機名不是很規范, 所以就順手改了主機名, 然后重啟了RabbitMQ服務, 重啟后看了RabbitMQ的日志, 發現有大量的因為密碼錯誤而連接失敗的, 如下:
AMQPLAIN login refused: user 'test' - invalid credentials
發現RabbitMQ的管理后臺也登陸不進去了, 這時候我意識到RabbitMQ的數據丟失了, 至少是用戶的數據丟失了, 因為管理后臺登陸不上了, 我登錄到服務器上列出了所有的用戶:
root@test-01:/# rabbitmqctl list_usersListing 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
結論
修改主機名最后在集群安裝之前規劃好, 集群搭建完以后主機名一定不能修改, 謹記。