在目前這家公司,剛進公司的時候接手了一個服務,算是個比較完備的服務,其中幾台電腦之間通信用到了rabbitmq,一開始沒出什么問題,然后后來勒索病毒wanner cry來的時候,系服把所有服務器裝了一個什么殺毒軟件,重啟之后rabibtmq集群就出現了一些問題,經過一番學習,把這些問題都搞定了,現在做一個總結。
一開始,我按照官網的描述,把四台服務器加入了一個集群,但是不知道為什么,除了主節點外,另外三台都看不了集群狀態,由於並不影響什么,就先放在那沒管,其實想起來,是因為之前集群的配置文件沒刪除,應該先把C:\Users\Administrator\AppData\Roaming下的RabbitMQ文件夾刪除掉。后來,其中一台服務器老是打出連接斷開的錯誤日志,經過檢查,發現是rabbitmq設置的消費者端緩存池滿了,所以才有這個log。處理了一下消費者端的消費問題,這個算是解決了。
由於之前那個配置文件一直沒刪除,導致后來集群出現問題了,有兩台服務器相繼從集群中斷開連接,用rabbitmqctl join_cluster rabbit@compute01命令嘗試連接進集群的時候,會報一堆亂七八糟的錯誤。類似這種:
Error: {cannot_start_mnesia,
{{
shutdown
,{failed_to_start_child,mnesia_kernel_sup,killed}},
{mnesia_sup,start,[normal,[]]}}}
由於rabbitmq是用erlang寫的,安裝也基於erlang平台,而我又不懂erlang里的方法,因此只能看出是erlang里面報錯,但是並不知道怎么解決,於是采用最原始暴力的手段,重裝erlang以及rabbitmq(其實把任務結束掉,再刪除前面的集群配置文件就可以,不過當時並不知道,人總是有個慢慢熟悉的過程嘛)。其中三台服務器比較正常,卸載rabbitmq和erlang,從任務管理器結束掉epmd.exe任務后,將安裝路徑下的殘留文件刪除,再刪除掉集群配置文件,重裝就搞定了。但是有一台服務器很奇怪,刪除了rabbitmq后,服務里居然它還在運行,而且還能停止和運行。感覺遇到鬼了的我一氣之下到注冊表里找到rabbitmq的注冊信息給刪了,然后就出問題了,雖然服務里rabbitmq總算是停了,但是無論怎么安裝再也起不來這個服務了,直接雙擊rabbitmq-server.bat啟動的話還會報C:\Program Files\erl7.0.3\erts-7.0.3\bin\erlsrv: Warning, could not set correct service description (comment)的錯誤。后來一氣之下,把HKLM/SOFTWARE/Ericsson/Erlang/ErlSrv下erlang的注冊表信息一並刪了,重裝了erlang和rabbitmq再配集群,就OK了。