【问题标题】:Cassandra deploy cluster failureCassandra 部署集群失败
【发布时间】:2015-05-02 05:09:58
【问题描述】:

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

cassandra-压力写

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

节点工具状态

失败节点上的命令,我收到此错误消息

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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) 在 com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) 在 com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) 在 com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) 在 com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) 在 com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 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) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) 在 sun.rmi.transport.Transport$1.run(Transport.java:177) 在 sun.rmi.transport.Transport$1.run(Transport.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.Transport.serviceCall(Transport.java:173) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)

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

【问题讨论】:

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


    【解决方案1】:

    从这个节点尝试 telnet 到其他节点的 7000 端口。并且从其他节点尝试对这个节点做同样的事情。很可能您为该节点分配了不同的安全组,这就是它无法连接到集群其余部分的原因。

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

    附:希望你没有给这个节点分配相同的token,而你设置的监听地址是节点自己的IP,而不是其他节点的IP?

    【讨论】:

    • 节点在同一组中。我想避免连接问题,所以我在入站流量中只设置了一条规则——允许来自所有地址的所有流量。我分配了相同的令牌。其他的默认值为 256。两者都有。如何为新节点分配正确的令牌?
    • 是的,我尝试从健康节点到另一个健康节点,但出现错误连接被外部主机关闭。
    • 如果您从故障节点远程登录到其他节点会发生什么?您在 EC2 还是 VPC 中?我建议您在此处发布您的 cassandra.yaml 文件(可能不包括密码和其他敏感信息)。似乎存在网络配置问题,因为它看不到其他节点。也可能是因为种子列表不匹配,甚至可能是因为节点无法解析其名称 - 前一段时间 /etc/hosts 文件中存在错误。不确定它是否消失了也发布主机文件
    • 失败的节点也是同样的错误。我在EC2。我删除了整个集群并使用相同的配置设置再次部署了一个集群,它现在可以工作了。
    【解决方案2】:

    “节点启动完成”表示 Cassandra 仍在启动。这可能需要几分钟。还有其他错误吗?

    是什么

    nodetool status
    

    从其他节点说?

    【讨论】:

    • 从其他两个节点它显示了 2 台机器,没有这个失败的节点。他们起来了,一切看起来都很好。当我等待启动 Cassandra 时,服务会在几秒钟后停止。当我再次启动它时,我得到了同样的错误。
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2020-12-23
    • 2020-10-08
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多