我试图在一个小的(测试)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'
但是当我启动部署脚本时(通过运行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
它会一直重试并显示相同的错误,直到我终止它。
我尝试删除' zk'或用' mesos'替换它。在URL中,更改(或完全删除)删除' mesos' URL中的单词,但我不断收到相同的错误。
我也试着看看其他框架是如何做到的(特别是火花,我希望接下来部署),但没有找到任何有用的东西。任何想法如何运行它?谢谢!
答案 0 :(得分:5)
提供给mesos.master.url
的URL直接传递给底层的Mesos Native Java Library。示例中列出的格式看起来是正确的。
调试连接问题的后续步骤是验证ZooKeeper服务器绑定的IP地址。您可以通过在运行ZooKeeper的服务器上运行sudo netstat -ntplv | grep 2181
来查找。
我希望看到以下内容:
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项目的开发人员之一,使其更强大,更稳定,更易于运行。当前母版(6aa82acfac
)中的代码已经过期,将在接下来的几周内使用rewrite分支中的代码进行替换。
如果您想尝试重写分支的最新版本,可以找到运行框架的marathon.json here。下载marathon.json后,更新MESOS_ZK
和CASSANDRA_ZK
的值(以及您要更新的任何资源值),然后将json发送到/v2/apps
的马拉松。
答案 1 :(得分:0)
如果你有一个master而没有zk,那么如何将mesos.master.url设置为10.10.10.1:5050
(其中5050是默认的mesos-master端口)?
如果Ben是正确的,并且Cassandra框架否则需要ZK自己的持久性/ HA,那么尽可能尝试禁用该功能。否则,如果您真的想要无ZK设置(因此没有任何HA功能),您可能必须自己翻录ZK代码并重新编译。