在目前这家公司,刚进公司的时候接手了一个服务,算是个比较完备的服务,其中几台电脑之间通信用到了rabbitmq,一开始没出什么问题,然后后来勒索病毒wanner cry来的时候,系服把所有服务器装了一个什么杀毒软件,重启之后rabibtmq集群就出现了一些问题,经过一番学习,把这些问题都搞定了,现在做一个总结。
一开始,我按照官网的描述,把四台服务器加入了一个集群,但是不知道为什么,除了主节点外,另外三台都看不了集群状态,由于并不影响什么,就先放在那没管,其实想起来,是因为之前集群的配置文件没删除,应该先把C:\Users\Administrator\AppData\Roaming下的RabbitMQ文件夹删除掉。后来,其中一台服务器老是打出连接断开的错误日志,经过检查,发现是rabbitmq设置的消费者端缓存池满了,所以才有这个log。处理了一下消费者端的消费问题,这个算是解决了。
由于之前那个配置文件一直没删除,导致后来集群出现问题了,有两台服务器相继从集群中断开连接,用rabbitmqctl join_cluster [email protected]命令尝试连接进集群的时候,会报一堆乱七八糟的错误。类似这种:
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了。