【问题标题】:running cassandra on a mesos cluster在 mesos 集群上运行 cassandra
【发布时间】:2015-02-24 17:28:15
【问题描述】:

我正在尝试在一个小型(测试)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'

但是当我随后启动部署脚本时(按照他们在第 5 点中所说的那样运行 bin/cassandra-mesos),我收到以下错误:

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 

它会不断重试并显示相同的错误,直到我终止它。

我尝试在 URL 中删除“zk”或将其替换为“mesos”,更改(或完全删除)端口,删除 URL 中的“mesos”字,但我一直收到相同的错误。

我还尝试查看其他框架如何做到这一点(特别是 spark,我希望接下来部署它),但没有发现任何有用的东西。任何想法如何运行它?谢谢!

【问题讨论】:

    标签: cassandra mesos


    【解决方案1】:

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

    调试连接问题的下一步是验证 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 框架未来的说明。

    我是致力于重写 cassandra-mesos 项目以使其更健壮、更稳定且更易于运行的开发人员之一。当前 master(6aa82acfac) 中的代码已结束生命周期,将在接下来的几周内替换为 rewrite 分支中的代码。

    如果您想尝试最新版本的重写分支,可以找到用于运行框架的 marathon.json here。下载 marathon.json 后,更新 MESOS_ZK 和 CASSANDRA_ZK 的值(以及您要更新的任何资源值),然后将 json 发布到 /v2/apps 的马拉松。

    【讨论】:

    • 嗨,本,感谢您的解释。问题是我们根本不打算经营动物园管理员。它是一个分析集群,高可用性并不是真正的关键。由于我们拥有的资源有限,我们真的买不起另外两台机器。让我检查一下连接并稍后在这里报告
    • 好吧,所以我意识到我无法进行您建议的测试,因为我没有运行 Zookeeper 服务器。我正在查看文档,但似乎没有在不使用 ZK 时运行框架的选项......还是我弄错了?如果有那我该怎么做呢?
    • Hi marcin_j the connection to ZooKeeper is how the mesos framework locates the elected master.如果机器数量对您的集群来说是个问题,您可以在运行 Mesos Master 的同一台服务器上运行 ZooKeeper。您是正确的,因为框架假设 ZooKeeper 可用并且可用于框架持久性。
    【解决方案2】:

    如果你只有一个master并且没有zk,那么将mesos.master.url设置为10.10.10.1:5050(其中5050是默认mesos-master端口)怎么样?

    如果 Ben 是对的,并且 Cassandra 框架需要 ZK 来实现其自身的持久性/HA,那么尽可能尝试禁用该功能。否则,如果您真的想要一个无 ZK 的设置(因此没有任何 HA 功能),您可能不得不自己撕掉 ZK 代码并重新编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多