gpt4 book ai didi

azure - 无法连接公共(public) IP 上的 Cassandra 客户端

转载 作者:行者123 更新时间:2023-12-02 08:02:13 25 4
gpt4 key购买 nike

您好,我正在尝试在 Azure Linux VM 上设置三节点 Cassandra 集群,并使用 C# datastax 客户端从外部计算机连接到它。但是,我在通过虚拟机公共(public) IP 从网络外部进行连接时遇到问题。任何帮助将不胜感激,因为我现在快要迷路了。

这是机器正在运行的 Java 版本。

openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

我的 cassandra 版本是

3.11.3

当我运行nodetool status时,我可以看到集群上的计算机,但是显示的是Azure VNetwork上的本地IP地址,而不是它们的公共(public)IP地址。我不确定这是否正确?

Datacenter: dc1europe
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
DN 10.1.0.7 101.37 KiB 256 32.8% 617d3f87-cb04-4c29-9e0c-e2c712487ad5 rack1europe
UN 10.1.0.6 158.26 KiB 256 33.1% b79a1aa0-a049-46f2-8efc-679d10a097e2 rack1europe
DN 10.1.0.9 101.36 KiB 256 34.2% 58a101e5-51f2-491e-833f-cc5c49a8740a rack1europe

我可以使用 cqlsh 内部 IP 地址 连接到任何计算机,但是当我使用 cqlsh 公共(public) IP 地址 时,出现以下错误:

Connection error: ('Unable to connect to any servers', {'XX.XXX.XXX.XXX': error(None, "Tried connecting to [('XX.XXX.XXX.XXX', 9042)]. Last error: timed out")})

当我运行 netstat -vatn 时,它显示我的机器实际上正在监听端口 9042,但我再次不确定这是否正确:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:9042 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 10.1.0.6:7000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:42271 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:7199 0.0.0.0:* LISTEN
tcp 0 64 10.1.0.6:22 109.76.85.23:51728 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN

我可以使用当前在集群上登录的计算机的公共(public) IP 地址进行远程登录,但是当我尝试使用集群上另一台计算机的公共(public) IP 地址进行远程登录时,我得到以下信息:

Trying XX.XXX.XXX.XXX...

但是连接从未建立。

以下是我为集群上的所有三个节点编辑的 cassandra.yaml 文件中的相关设置

seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "10.1.0.6, 10.1.0.7"

listen_address:

# broadcast_address: 1.2.3.4

start_rpc: false

rpc_address: 0.0.0.0

broadcast_rpc_address: <PUBLIC IP OF CURRENT NODE>

我已在 azure 中编辑了 NSG,以允许所有必需的入站端口,包括 7000、7001、7199、9042、9160、9142,因此这应该不是问题。

我不确定问题是否出在我的 Azure VM/网络配置或我的 Cassandra 设置上。任何指示或帮助都会很棒!

谢谢。

最佳答案

我的设置。

Windows VM 作为网络服务器

Ubuntu 作为 Cassandra 节点。

两者都位于同一订阅和不同的资源组和 VNET 中。

用于从 Windows 计算机到 Cassandra 的连接。

按照这些步骤操作,它成功了:)

1) 对等 VNet。这必须在两个 vnet 上完成。最初我无法从 Windows VM ping Ubuntu VM,在对等互连后我能够 ping 通。

2) 在Cassandra VM上打开端口9042,您可以添加对Web服务器地址范围的限制。

3) 在 Ubuntu VM 中编辑 etc/cassandra/cassandra.yaml 并更改以下设置。 IP是Ubuntu VM的私有(private)IP地址

1) rpc_address: 10.0.1.5
2) listen_address: 10.0.1.5
3) seeds: "10.0.1.5"

4) 现在尝试使用任何测试应用程序从 Web 服务器连接到 cassandra。

例如

            var cluster = Cluster.Builder()
.AddContactPoints("10.0.1.5")
.WithPort(9042)
.WithAuthProvider(new PlainTextAuthProvider("cassandra", "cassandra"))
.Build();
ISession session = cluster.Connect();

您应该能够连接并运行语句。

干杯,

赫曼特

关于azure - 无法连接公共(public) IP 上的 Cassandra 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com