dcos cassandra子命令错误

时间:2016-04-24 18:25:16

标签: python cassandra mesosphere dcos

似乎无法安装Cassandra软件包,马拉松在第1/2阶段陷入部署,而dcos cassandra子命令会发出以下stacktrace,任何帮助都会受到赞赏。

Traceback (most recent call last):
  File "/home/azureuser/.dcos/subcommands/cassandra/env/bin/dcos-cassandra", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/opt/mesosphere/lib/python3.4/site-packages/pkg_resources.py", line 2701, in <module>
    parse_requirements(__requires__), Environment()
  File "/opt/mesosphere/lib/python3.4/site-packages/pkg_resources.py", line 572, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: requests


Python version: Python 3.4.2
requests version : 1.8.1

2 个答案:

答案 0 :(得分:2)

我正在建立Cassandra服务的团队。谢谢你试试吧!

我们刚刚更新了Cassandra CLI包,以更好地定义其pip依赖关系。在您的情况下,它似乎试图重用旧版本的requests库?要将CLI的Cassandra模块踢到最新版本,请尝试运行dcos package uninstall --cli cassandra; dcos package install --cli cassandra。请注意--cli很重要;省略它可能导致卸载Cassandra服务本身,而我们想要的只是重新安装本地CLI模块。

请记住,您还应该能够直接通过HTTP访问Cassandra服务。 CLI模块实际上是围绕服务的HTTP API的瘦接口。例如,curl -H "Authorization:token=$(dcos config show core.dcos_acs_token)" http://<your-dcos-host>/service/cassandra/v1/plan | jq '.'。有关其他端点,请参阅Cassandra 1.7 docs中的curl示例。

一旦启动并运行了CLI,就可以更深入地了解服务状态,但是日志可能会提供更全面的信息,尤其是在服务无法启动的情况下。您可以访问http://<your-dcos-host>/

上的信息中心直接访问服务日志
  1. 点击左侧的Services,然后从列表中选择marathon。 Cassandra服务经理是作为马拉松任务运行的。
  2. 将出现一个面板,显示Marathon管理的所有任务的列表。单击此列表中的cassandra以显示其工作目录,包括可用的日志文件。
  3. 将鼠标悬停在文件上时,会出现一个放大镜。单击放大镜以在线显示相应的文件。

答案 1 :(得分:1)

不幸的是我们仍然遇到同样的问题,尽管我们已经设法解决了问题。似乎Azure上的DC / OS存在多个不同的问题,无论如何我会提供进一步的反馈。如果使用Marketplace版本的DC / OS 1.7.0,Cassandra不会部署,它会在第1/2阶段卡在Marathon中,在检查日志时,它似乎在访问默认端口时出现问题。

Pastebin to log file

另一方面,ACS DC / OS上没有出现此问题,Cassandra正确部署在DC / OS服务选项卡以及Marathon上。 DCOS Cassandra CLI不适用于任何版本。在进行不太彻底的检查后,似乎当我们使用上述方法安装DCOS CLI时,依赖项存在一些问题,特别是考虑到$ PYTHONPATH变量

/opt/mesosphere/lib/python3.4/site-packages

我们通过采取两项行动来解决依赖性问题:

  • 第一个依赖问题是请求模块,在为Cassandra子命令安装cli后,通过以下操作解决了这个问题。

    cd ~/.dcos/subcommands/cassandra
    source env/bin/activate
    pip install -Iv requests
    

我们使用-Iv,因为通常的更新过程因$ PYTHONPATH路径中的外部依赖而失败,因此请求依赖性已解决。

  • cassandra子命令需要的第二个依赖是docopt,再次使用我们能够解决问题的相同方法,现在子命令按照文档工作

    pip install -Iv docopt
    

这似乎有些过时,想知道是否还有更适合的事情。

采取上述步骤后输出dcos cassandra连接

{
"address": [
    "10.32.0.9:9042",
    "10.32.0.6:9042",
    "10.32.0.8:9042"
],
"dns": [
    "node-0.cassandra.mesos:9042",
    "node-1.cassandra.mesos:9042",
    "node-2.cassandra.mesos:9042"
]
}

其他DC / OS子命令也是如此,例如Kafka子命令。