【问题标题】:How to Connect to Cassandra Remotely Using DevCenter如何使用 DevCenter 远程连接到 Cassandra
【发布时间】:2015-07-10 16:51:38
【问题描述】:

我使用他们的镜像在 Azure 上设置了 DataStax Cassandra Sandbox。我能够在服务器上本地运行 OpsCenter,没有任何问题。安装的是 Ubuntu,我对它很陌生。

根据这篇帖子Apache Cassandra remote access我应该能够将我的 rpc_address 设置为 0.0.0.0 以允许远程访问我的数据库。但是,在我的本地 Windows 8 PC 上尝试从 DevCenter 连接时,它显示无法连接。

这是我的设置:

联系人主机地址是 Azure 中为我的 VM 显示的虚拟 IP 地址。该端口与 cassandra.yaml 配置文件中显示的端口相同。 我没有配置任何授权,根据我阅读的内容,我应该能够使用 .NET 或管理工具进行连接,但两者都不起作用。

我还检查了端口是否打开,据我所知:

据我所知,它可能是 9160 或 9042。

【问题讨论】:

  • 您确定 C* 正在运行吗?如果是这样,您可以在运行 Cassandra 的 VM 上通过本地 cqlsh 访问 C* 吗?您可以从尝试访问它的计算机 ping Azure VM 吗? 137.x.x.x 是 VM 的 WAN IP 吗?
  • 我可以毫无问题地运行 cqlsh... 连接到 localhost:9160 的测试集群。 [cqlsh 4.1.1 |卡桑德拉 2.0.14.352 | DSE 4.6.5 | CQL 规范 3.1.1 | Thrift 协议 19.39.0] 使用 HELP 寻求帮助。 cqlsh>
  • 我能够使用 PsPing ping 我的 SSH 端口,但不能使用 9160 或 9042。Azure 上禁用了常规 ping,因此不确定端口类型是否存在差异,但我想我应该也能ping通这些。
  • 我意识到您必须为每个端口创建端点才能路由到 VM。我这样做了,远程 ping 时收到不同的错误消息,但我仍然无法连接到它。我现在正在尝试设置一个静态 ip 看看是否有帮助。

标签: .net azure cassandra datastax


【解决方案1】:

感谢所有帮助我解决这个问题的人。最终的问题是,在设置 Azure VM 时,分配的虚拟 IP 是为云服务本身而不是虚拟机分配的。因此,即使看起来正确的端口已暴露,您也无法从外部计算机访问它们。

更多info about it here (但请先阅读下面的说明,因为这在 Azure 管理控制台中更容易做到)

在设置虚拟机时,您会注意到 Azure 会自动为您的 SSH 连接创建一个端点,例如 55xxx。您将无法连接到盒子本身显示的配置端口 22,而是必须使用端点端口 55xxx 等。

请务必注意这一点,因为 Cassandra 端口 8888(OpsCenter)和 9042(本机传输)也是如此。

所以你可以:

  1. 为这些端口创建端点并在连接时使用它们 远程。
  2. 创建指向 VM 本身的公共 IP 地址 而不是云服务。

一开始我无法让端点工作,但后来让它们工作。这导致我设置了一个公共 IP 地址。我使用 Azure Powershell 艰难地做到了这一点。这是痛苦的,需要大量的研究。 但是,在花时间完成此操作后,我意识到现在可以在预览控制台中完成。只需转到 VM 上的 IP 地址设置并启用“实例 IP 地址”选项。

然后您应该能够使用设置完成后通过浏览器返回的 IP 地址远程连接到 OpsCenter:(新 IP 地址):8888

...然后在 DevCenter 中使用新的 ip 地址和端口 9042。

如果您使用端点而不是设置公共静态 ip(出于安全原因,您需要这样做并通过 ip 过滤器启用用户访问控制),那么您将需要使用新的而是创建了端口号以及您的虚拟 IP 地址。

其次...您需要在 cassandra.yaml 文件中将 rpc_address 设置为 0.0.0.0。

【讨论】:

    【解决方案2】:

    据我所知,它可能是 9160 或 9042。

    从连接设置屏幕截图中可以看出,DevCenter 通过“本机协议”连接到 Cassandra。这指的是原生二进制协议(除非您在 cassandra.yaml 中更改了 native_transport_port)在端口 9042 上运行。Thrift 通过端口 9160 连接,我不相信您可以将 DevCenter 配置为与 Thrift 连接。

    接下来,检查cassandra.yamllisten_addressbroadcast_address 的值。至少应使用您的主机名或外部 IP 地址定义其中之一。

    将您的“本地协议端口”设置为 9042。然后尝试连接到您的外部 IP 地址。

    编辑

    检查您的system.log 文件并查找如下行:

    Starting listening for CQL clients on localhost/127.0.0.1:9042...
    

    无论您看到哪个地址,您都需要通过 DevCenter 或客户端连接到该地址。如果该行显示 127.0.0.1,则您还有工作要做。

    另外,这里是我过去帮助过的类似问题的链接:How do I connect to local cassandra db

    你们中的任何一个都必须为你的虚拟机分配一个公共 IP 吗?

    我们的(基于云的)Cassandra 服务器(在产品中)具有内部和外部 IP 地址。我明天必须再次检查,但我们的 Cassandra 2.0 配置将 listen_address 设置为我们的外部(公共)IP 和 rpc_address 空白或设置为相同。

    这里有一些文档可以帮助您进行配置:

    【讨论】:

    • 他不想检查 rpc_address 以确保 DSE 正在侦听正确的出站连接接口吗?
    • 嗯,他确实提到他已将 rpc_address 设置为 0.0.0.0。如果他仍然无法让这个工作,那么更改rpc_address 是一个很好的下一步。
    • 我尝试首先将我的广播地址设置为我的 Azure 虚拟公共 IP,并将 listen_address 保留为 localhost,但这不起作用,我什至无法在服务器本身上加载 OpsCenter。然后我尝试将 listen_address 更改为我的 Azure 虚拟公共 IP,但也没有用。我无法远程连接,当我在服务器本身上加载 OpsCenter 时,它说无法连接到集群。
    • “seed_provider”中“种子”的 IP 地址是什么? 127.0.0.1 ?您的 listen_address IP 设置是什么(不是专门设置,而是与其他地址一起使用)?如果您将 C* 集群托管在与访问它的应用程序相同的 Intranet 上,则可以将 listen_address(和 broadcast_address)设置为您的内部 IP 地址。如果 0.0.0.0 没有正确分配它,我会尝试将 rpc_address 显式设置为您的虚拟机出站 IP 地址。
    • 感谢布莱斯和所有提供帮助的人。问题与 azure 使用虚拟 ips 的方式有关。它不是机器本身的真实 IP。
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 2017-12-26
    • 2018-06-21
    • 2019-08-31
    • 2015-11-28
    • 2016-09-02
    • 2014-07-16
    • 2015-01-03
    相关资源
    最近更新 更多