在mesos集群上运行cassandra

mar*_*n_j 3 cassandra mesos

我正在尝试在一个小的(测试)Mesos集群上部署Cassandra.我有一个主节点(比如10.10.10.1)和三个工作节点:10.10.10.2-4.

在apache mesos的官方网站上有一个为mesos开发的cassandra框架的链接(它在这里:https://github.com/mesosphere/cassandra-mesos).

我正在按照他们在那里提供的教程.在第3步中,他们说我应该编辑conf/mesos.yaml文件,特别是我应该设置mesos.master.url以便它指向主节点(我也有conf文件).

我尝试的第一件事就是用主节点ip替换localhost,所以我有

mesos.master.url: 'zk://10.10.10.1:2181/mesos'
Run Code Online (Sandbox Code Playgroud)

但是当我启动部署脚本时(通过运行bin/cassandra-mesos,正如他们在第5点所说的那样)我得到以下错误:

2015-02-24 09:18:24,262:12041(0x7fad617fa700):ZOO_ERROR@handle_socket_error_msg@1697: Socket [10.10.10.1:2181] zk retcode=-4, errno=111(Connection refused): server refused to accept the client 
Run Code Online (Sandbox Code Playgroud)

它会一直重试并显示相同的错误,直到我终止它.

我尝试删除'zk'或用URL中的'mesos'替换它,更改(或完全删除)端口删除URL中的'mesos'字,但我不断收到相同的错误.

我也试着看看其他框架是如何做到的(特别是spark,我希望接下来部署)但是没有找到任何有用的东西.任何想法如何运行它?谢谢!

小智 5

提供的URL mesos.master.url直接传递给底层的Mesos Native Java Library.示例中列出的格式看起来正确.

调试连接问题的后续步骤是验证ZooKeeper服务器绑定的IP地址.您可以通过sudo netstat -ntplv | grep 2181在运行ZooKeeper的服务器上运行来查找.

我希望看到如下内容:

tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 3957/java

另一种可能是ZooKeeper专门绑定到localhost:

tcp 0 0 127.0.0.1:2181 0.0.0.0:* LISTEN 3957/java

如果ZooKeeper绑定到localhost,则客户端只能使用URL连接到它 zk://127.0.0.1:2181/mesos

关于Cassandra Mesos框架未来的说明.

我是致力于重写cassandra-mesos项目的开发人员之一,使其更强大,更稳定,更易于运行.当前master(6aa82acfac)中的代码是生命周期结束,将在接下来的几周内使用重写分支中的代码进行替换.

如果您想尝试重写分支的最新版本,可以在此处找到用于运行框架的marathon.json .下载marathon.json后,更新MESOS_ZKCASSANDRA_ZK(以及要更新的任何资源值)的值,然后将json POST到marathon at /v2/apps.