【问题标题】:Random failure of creating a New Cassandra Cluster using OpsCenter使用 OpsCenter 创建新 Cassandra 集群的随机失败
【发布时间】:2015-05-22 09:45:04
【问题描述】:

OpsCenter 版本:5.1.0 和 DSE 版本:4.6.0

直接使用 OpsCenter 创建一个全新的集群,会出现以下错误。它在相同的设置下随机工作,但 95% 的时间它失败并出现相同的错误。 Opscenter 在自己的机器上运行,但与集群实例共享相同的安全组。为了更好地衡量,我已经向所有 IP 开放了所有 TCP 端口。以下是来自 opscenterd.log 的错误堆栈跟踪:

*2015-03-19 10:06:12+0000 [] 信息:开始配置过程 2015-03-19 10:06:12+0000 [] INFO:开始集群配置的安装阶段

2015-03-19 10:06:13+0000 [] 警告:HTTP 请求 http://10.x.x.x:61621/alive?失败:连接被对方​​拒绝:111:连接被拒绝。

2015-03-19 10:06:13+0000 [] 信息:开始将 OpsCenter 代理安装到 54.x.x.x

2015-03-19 10:06:26+0000 [] 警告:HTTP 请求 http://10.x.x.x:61621/alive?失败:连接被对方​​拒绝:111:连接被拒绝。

2015-03-19 10:06:31+0000 [] 信息:ip 10.x.x.x 的代理是版本无 2015-03-19 10:06:31+0000 [] 信息:ip 10.x.x.x 的代理是版本 u'5.1.0' 2015-03-19 10:07:23+0000 [] INFO: 在节点 10.x.x.x 上成功安装代理和 dse

2015-03-19 10:07:23+0000 [] INFO:开始集群配置的“停止”阶段

2015-03-19 10:07:25+0000 [] WARN:将请求“10.xxx:/ops/stop”(f6708fa2-b45f-42b4-b992-90a82b460ac7)标记为失败:/usr/sbin/服务 dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] 错误:无法停止节点 10.x.x.x:/usr/sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] WARN:将请求“停止阶段”(0b6fcb6b-96ba-404e-a484-b4b6b167b309)标记为失败:无法停止节点 10.xxx:/usr/ sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] 错误:停止阶段失败:无法停止节点 10.x.x.x:/usr/sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] WARN:将请求“提供”(daf1c15d-92e3-40b0-83ca-34d548ea835b)标记为失败:停止阶段失败:无法停止节点 10.xxx: /usr/sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] 错误: 2015-03-19 10:07:25+0000 [] 错误:集群配置失败:异常:停止阶段失败:无法停止节点 10.x.x.x:/usr/sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] 错误:无法配置集群:集群配置失败:异常:停止阶段失败:无法停止节点 10.xxx:/usr/sbin/service dse stop失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:25+0000 [] WARN:将请求 28c021fd-d21a-4fed-bb5c-a4fe17d362e0 标记为失败:集群配置失败:异常:停止阶段失败:无法停止节点 10.xxx : /usr/sbin/service dse 停止失败

    exit status: 1
    stdout:
    log_daemon_msg is a shell function
    Cassandra 2.0 and later require Java 7 or later.

2015-03-19 10:07:41+0000 [] 警告:无法为 IP [u'fe80:0:0:0:2000:aff:feeb:31c7%2' 的节点找到匹配的集群, u'10.xxx', u'0:0:0:0:0:0:0:1%1', u'127.0.0.1'];消息是 [u'5.1.0', u'/1947480708/conf']。这通常表明 OpsCenter 代理仍在旧节点上运行,该节点已停用或属于 OpsCenter 不再监控的集群的一部分。

感谢任何帮助! 提前致谢 哈沙

【问题讨论】:

  • 想补充一点,所有这些都在亚马逊上。另外,我使用的是 Opscenter 提供的默认 AMI。 (ami id - 814ec2e8)所以关于 Java 7 等的错误增加了一点混乱,因为所有这些都是 DSE 默认的,里面预装了软件。
  • 您确定使用的是默认 AMI 吗? 814ec2e8 是一个相当老的版本(2013 年更新),而 OpsCenter 5.1 默认使用 ami-6139e708。
  • ami-814ec2e8 是的,这是 ID。我什至升级到了 5.1.1。我添加一个新的集群或节点显示相同。

标签: datastax-enterprise datastax opscenter


【解决方案1】:

此处为 OpCenter 开发人员。我使 OpsCenter 配置功能进行了缩放(或者如您所见,偶尔会出现 splat)。我必须带着悲伤和羞耻的心情告诉你,你遇到了错误。

OpsCenter 配置 (https://github.com/riptano/ComboAMI/tree/2.4) 使用的 Datastax AMI 版本 2.4 在启动时通过启动脚本完成了大量工作。其中一项任务是设置一些用于验证包的 gpg 存储库密钥。该过程可能会间歇性地失败,破坏软件包安装并导致您看到的一系列错误。这种故障是间歇性的,最近频率大大增加。如果您检查 /home/ubuntu/datastax-ami/ami.log,您应该会看到 gpg 密钥失败,这些失败开始于失败链的其余部分。

不幸的是,这个错误在技术堆栈中非常落后,很难手动解决。如果您只需要配置一个集群,您可以重试直到运行良好。否则,最好的办法是手动启动实例并使用本地配置将 dse/dsc 部署到它们的私有 IP 地址:

  • 使用 ami-ada2b6c4 启动实例(假设您在 us-east-1 中)
    • 确保将实例添加到 OpsCenterSecurity 组。
    • 确保您拥有您使用的密钥对的私有部分(在本地配置期间您将需要它)
    • 在实例数据页面上,点击高级下拉菜单并将以下用户数据添加为文本“--raidonly --java7”
  • 针对私有 IP 运行本地配置

不是一个超级简单的解决方法。我希望您这次使用 OpsCenter 的体验更棒。好消息是我正在处理这个错误,它将在即将发布的版本中修复。

编辑:不再需要手动删除 /etc/security/limits.d/cassandra.conf

【讨论】:

  • 嗨,迈克。 Opscenter 工具做得很好,感谢您的回复。这个错误在 Opscenter 5.1.1 中修复了吗?我希望能够使用 Opscenter 轻松配置集群。我用 5.1.1 试了几次,但它没有再给我那个错误。另外,作为功能请求,请让 opscenter 选择在 Amazon 上的 VPC 中创建 cassandra 节点和集群。
  • 该修复尚未被推送,当它发布时它不会是一个发布,而是一个自动下载的配置文件。当我把它拿出来时,我会在这里联系,我们已经为 ComboAMI 做出了一些很好的社区贡献,我想在我们烘烤一个新的 AMI 之前登陆这些贡献。至于 VPC,我无法谈论潜在的未来功能,但我们知道这是人们想要的东西,因此请密切关注变更日志。
  • 本地配置方法给出了同样的问题错误 [初始化] 通过 JMX 连接时出错:java.io.IOException:无法检索 RMIServer 存根 javax.naming.ServiceUnavailableException [根异常是 java.rmi.ConnectException:连接拒绝托管:127.0.0.1;嵌套异常是 java.net.ConnectException: Connection refused] INFO [main] 创建到 172.31.19.2:61620 INFO [StompConnection receiver] Reconnecting in 0s INFO [Initialization] Starting Jetty server: {:join?假的,:ssl?假,:主机零,:端口 61621}
  • 遗憾的是,OpsCenter 5.x 的 AMI 修复程序从未发布。但是,OpsCenter 6.0 现已推出,包括改进的配置功能,称为 LCM。 LCM 不再与特定 AMI 紧密耦合...您可以通过使用任何公共 AMI 启动目标实例,将其安装在任何受支持的操作系统(Red Hat、Ubuntu 等)上。
【解决方案2】:

如果它只是抱怨 java,那么最好安装 java 7,datastax 需要 oracle jdk 和 jre。您的节点上可能已经有 java 7 和另一个版本,但 java 7 不是默认版本。改变这一点:

sudo update-java-alternatives -s java-7-oracle

这是一个您可以编写脚本以使用 ssh 运行的命令,因此您不必登录到每个节点

【讨论】:

  • 感谢您的快速回复。这是奇怪的部分,我用来启动 cassandra 集群的 ami 默认由 OpsCenter 提供。这就像某种设备。即插即用。 aws.amazon.com/amis/datastax-auto-clustering-ami-2-2 如果我必须使用 OpsCenter 手动干预节点的启动,那么整个目的就会失败。但是让我试试你的建议,然后回到这里。再次感谢。
  • 实际上,如果它是一个就绪的 ami,并且您也遇到连接被拒绝的问题,您可能需要检查您分配给实例的安全组,以便 cassandra 所需端口的端口规则可用跨度>
  • 我的安全组的所有 TCP 端口都对 0.0.0.0/0 开放。 Opscenter 和 cassandra 节点都属于同一个安全组,因此它们应该能够毫无问题地相互交谈。我还可以在从 Opscenter 到 Cassandra 节点的 61621 端口上远程登录,即
猜你喜欢
  • 2016-07-08
  • 2014-12-30
  • 2017-07-16
  • 2016-06-26
  • 2021-05-14
  • 2022-08-18
  • 2015-05-02
  • 2017-05-20
  • 2015-10-09
相关资源
最近更新 更多