Google cloud platform 在外部ip上的Google Cloud上运行cassandra时出错-无法绑定34.89.109.98上的端口9042

Google cloud platform 在外部ip上的Google Cloud上运行cassandra时出错-无法绑定34.89.109.98上的端口9042,google-cloud-platform,cassandra-3.0,Google Cloud Platform,Cassandra 3.0,我正在尝试使用虚拟机的外部ip在Google云上运行Cassandra。但是在34.89.109.98上绑定端口9042时出现错误。据我所知,我已经遵循了设置防火墙规则的规则,但我仍然无法解决这个问题。我已附上我的配置图片供您参考 1) 防火墙规则是 2) 所有规则的列表如下所示 3) 虚拟机是 更多信息 我按照中的步骤安装Cassandra。这自动启动了卡桑德拉。然后我杀死了cassandra,在cassandra.yaml文件中将ip地址更改为外部ip,然后再次启动它。它不起作用。然后

我正在尝试使用虚拟机的外部ip在Google云上运行
Cassandra
。但是在34.89.109.98上绑定端口9042时出现错误
。据我所知,我已经遵循了设置防火墙规则的规则,但我仍然无法解决这个问题。我已附上我的配置图片供您参考

1) 防火墙规则是

2) 所有规则的列表如下所示

3) 虚拟机是

更多信息 我按照中的步骤安装Cassandra。这自动启动了卡桑德拉。然后我杀死了cassandra,在
cassandra.yaml
文件中将ip地址更改为外部ip,然后再次启动它。它不起作用。然后我开始使用VPN设置

在我发出启动cassandra的命令后,消息转储的一部分
/usr/sbin/cassandra-f

INFO  [main] 2019-12-18 16:09:40,755 StorageService.java:1521 - JOINING: Finish joining ring
INFO  [main] 2019-12-18 16:09:40,826 StorageService.java:2442 - Node localhost/127.0.0.1 state jump to NORMAL
INFO  [main] 2019-12-18 16:09:41,027 NativeTransportService.java:68 - Netty using native Epoll event loop
INFO  [main] 2019-12-18 16:09:41,071 Server.java:158 - Using Netty Version: [netty-buffer=netty-buffer-4.0.44.Final
.452812a, netty-codec=netty-codec-4.0.44.Final.452812a, netty-codec-haproxy=netty-codec-haproxy-4.0.44.Final.452812
a, netty-codec-http=netty-codec-http-4.0.44.Final.452812a, netty-codec-socks=netty-codec-socks-4.0.44.Final.452812a
, netty-common=netty-common-4.0.44.Final.452812a, netty-handler=netty-handler-4.0.44.Final.452812a, netty-tcnative=
netty-tcnative-1.1.33.Fork26.142ecbb, netty-transport=netty-transport-4.0.44.Final.452812a, netty-transport-native-
epoll=netty-transport-native-epoll-4.0.44.Final.452812a, netty-transport-rxtx=netty-transport-rxtx-4.0.44.Final.452
812a, netty-transport-sctp=netty-transport-sctp-4.0.44.Final.452812a, netty-transport-udt=netty-transport-udt-4.0.4
4.Final.452812a]
INFO  [main] 2019-12-18 16:09:41,071 Server.java:159 - Starting listening for CQL clients on /35.197.238.136:9042 (
unencrypted)...
Exception (java.lang.IllegalStateException) encountered during startup: Failed to bind port 9042 on 35.197.238.136.
java.lang.IllegalStateException: Failed to bind port 9042 on 35.197.238.136.
        at org.apache.cassandra.transport.Server.start(Server.java:163)
        at java.util.Collections$SingletonSet.forEach(Collections.java:4769)
        at org.apache.cassandra.service.NativeTransportService.start(NativeTransportService.java:124)
        at org.apache.cassandra.service.CassandraDaemon.startNativeTransport(CassandraDaemon.java:696)
        at org.apache.cassandra.service.CassandraDaemon.start(CassandraDaemon.java:546)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:635)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:742)
ERROR [main] 2019-12-18 16:09:41,100 CassandraDaemon.java:759 - Exception encountered during startup
java.lang.IllegalStateException: Failed to bind port 9042 on 35.197.238.136.
        at org.apache.cassandra.transport.Server.start(Server.java:163) ~[apache-cassandra-3.11.5.jar:3.11.5]
        at java.util.Collections$SingletonSet.forEach(Collections.java:4769) ~[na:1.8.0_232]
        at org.apache.cassandra.service.NativeTransportService.start(NativeTransportService.java:124) ~[apache-cass
andra-3.11.5.jar:3.11.5]
        at org.apache.cassandra.service.CassandraDaemon.startNativeTransport(CassandraDaemon.java:696) [apache-cass
andra-3.11.5.jar:3.11.5]
        at org.apache.cassandra.service.CassandraDaemon.start(CassandraDaemon.java:546) [apache-cassandra-3.11.5.ja
r:3.11.5]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:635) [apache-cassandra-3.11.5
.jar:3.11.5]

在Cassandra Cassandra.yaml文件中,您可以将Cassandra服务器绑定到它正在侦听的IP地址。默认值为127.0.0.1(localhost),不适合外部连接

可以使用的地址值是计算引擎与其关联的地址。可以使用以下方法发现这些问题:

ip addr
重要的是要认识到,当在GCP控制台中显示时,计算引擎可能看起来具有公共IP地址,但这不是计算引擎上的网络接口。在原始问题的示例中,计算引擎IP地址为
10.154.0.4
。这是要在配置文件中设置的地址

另请参见本文件,其中描述了在GCP上设置Cassandra:


我听说错误消息是“未能绑定34.89.109.98上的端口9042”。你能详细说明一下吗?消息在哪里发布?是否发布了任何stackdriver日志记录?你有没有按照配方安装卡桑德拉?我有种直觉。。。这是疯狂的猜测。。。您可能已将软件安装配置为使用34.x.x.x IP地址,因为您的逻辑显示“这是我的公共IP,我只希望我的数据库响应该IP”。如果是,那么很可能就是错误。您的计算引擎没有与该公共IP的接口。。。只有它的VPC接口更新了这个问题。IP是我的计算机的公共IP/接口。我在安装cassandra时没有指定它。cassandra.yaml中的IP是
35.197.238.136
,它现在是我的计算机的新IP。我得到了新的IP,因为我重新启动了机器。新错误是
java.lang.IllegalStateException:未能绑定35.197.238.136上的9042端口
,我认为这表明
34…
ip没有硬编码,谢谢。确实很有帮助。如果我使用
10.xxx
地址,一切都正常。我想从我的笔记本电脑连接到
cassandra
计算机(比如在我的笔记本电脑上运行的cqlsh)。如果我使用
10.xxx
地址,我就不能这样做,因为它甚至不能从我的笔记本电脑上ping。你的回答非常有用,但老实说,我对这两个IP地址感到困惑,不知道如何从外部连接到cassandra。这应该很容易,因为我想最终从我的web服务器连接到cassandra,该服务器可能托管在其他地方。我想我知道了,但如果没有,请告诉我。我必须使用
10.xxx
地址将cassadra绑定到NIC的ip,因为这是实际地址。但是要从外部连接,我必须使用
35.xxx
地址。这似乎是避免将
10.xxx
地址暴露给外界的一种方法。但是,在外部工作可以使用
35.xxx
地址进行连接之前,我必须启用防火墙。考虑到这一点,您的计算引擎(您的VM)具有网络接口。这些都连接到VPC网络。这些地址仅对专有网络专用。应用程序(如Cassandra)可以绑定到这些网络接口。创建的公共IP地址不同于您的VM,并且与路由/路径相关联,因此当Internet请求到达公共IP地址时,它将通过VPC路由到您的私有IP地址。