Cassandra部署集群故障

时间:2015-03-01 22:14:54

标签: java amazon-web-services cassandra datastax nodetool

我正在尝试在AWS上部署Cassandra集群。我按照http://datastax.com/documentation/cassandra/2.1/cassandra/install/installAMI.html的说明进行操作 它看起来一切正常,但一个节点仍然得到0响应。在初始脚本之后我跑了

  

cassandra-stress write

命令休息两个节点,一切都很好。当我试图运行时

  

nodetool status

失败的节点上的

命令,我收到此错误消息

nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused'.

我找了cassandra服务而且它已经关闭了,当我启动它并再次运行时出现了这个错误

  

错误:群集中没有节点。这个节点是否已经完成启动?    - 堆栈跟踪 -   java.lang.RuntimeException:集群中没有节点。这个节点是否已经完成启动?           在org.apache.cassandra.dht.Murmur3Partitioner.describeOwnership(Murmur3Partitioner.java:129)           在org.apache.cassandra.service.StorageService.effectiveOwnership(StorageService.java:3763)           在org.apache.cassandra.service.StorageService.effectiveOwnership(StorageService.java:104)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           at java.lang.reflect.Method.invoke(Method.java:606)           at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           at java.lang.reflect.Method.invoke(Method.java:606)           at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)           at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)           at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)           at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)           at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)           at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)           at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)           at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)           在javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)           在javax.management.remote.rmi.RMIConnectionImpl.access $ 300(RMIConnectionImpl.java:97)           at javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.run(RMIConnectionImpl.java:1328)           在javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)           在javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)           at java.lang.reflect.Method.invoke(Method.java:606)           at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)           at sun.rmi.transport.Transport $ 1.run(Transport.java:177)           at sun.rmi.transport.Transport $ 1.run(Transport.java:174)           at java.security.AccessController.doPrivileged(Native Method)           at sun.rmi.transport.Transport.serviceCall(Transport.java:173)           at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)           at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:811)           at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:670)           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)           at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)           在java.lang.Thread.run(Thread.java:744)

当我再次运行它时,我收到了第一个错误,并且cassandra服务已关闭。我还改了/etc/cassandra/cassandra.yaml文件。我设置种子,侦听器地址,rpc地址,群集名称和令牌与群集的其余部分相同。当我再次运行时,Cassandra服务会停止运行。我该如何解决?

2 个答案:

答案 0 :(得分:2)

从此节点尝试telnet到其他节点的端口7000。并且从其他节点尝试对此节点执行相同操作。很可能您为此节点分配了一个不同的安全组,这就是它无法连接到群集的其余部分的原因。

  

我设置种子,监听器地址,rpc地址,群集名称和令牌   与群集的其余部分相同。

P.S。我希望您没有为此节点分配相同的令牌,并将您设置的侦听器地址分配给节点自己的IP,而不是其他节点的IP?

答案 1 :(得分:0)

"节点已完成启动"意味着卡桑德拉还在开始。这可能需要几分钟。还有其他错误吗?

什么是

nodetool status

从其他节点说?