【问题标题】:Not able to connect cassandra port 9042 from other machines.无法从其他机器连接 cassandra 端口 9042。
【发布时间】:2017-05-06 09:34:00
【问题描述】:
sudo docker run --name dc101 -P -d -e CASSANDRA_CLUSTER_NAME="Cluster1" -e
CASSANDRA_DC="datacenter1" -e CASSANDRA_RACK="rc1" -e
CASSANDRA_ENDPOINT_SNITCH="GossipingPropertyFileSnitch" -e 
CASSANDRA_RPC_ADDRESS="<IPOfUbuntu>" -e CASSANDRA_BROADCAST_ADDRESS="
<IPOfUbuntu>" -p 9042:9042 cassandra:latest

我在 ubuntu 上使用 docker。并尝试创建一个 cassandra 节点。上面的命令运行成功,并创建了一个节点。但无法从其他系统连接。我可以从同一台机器连接。如果我 telnet 到 9042,它没有连接。

谢谢!

下面是错误日志----

INFO  04:00:18 Using Netty Version: [netty-buffer=netty-buffer-4.0.39.Final.38bdf86, netty-codec=netty-codec-4.0.39.Final.38bdf86, netty-codec-haproxy=netty-codec-haproxy-4.0.39.Final.38bdf86, netty-codec-http=netty-codec-http-4.0.39.Final.38bdf86, netty-codec-socks=netty-codec-socks-4.0.39.Final.38bdf86, netty-common=netty-common-4.0.39.Final.38bdf86, netty-handler=netty-handler-4.0.39.Final.38bdf86, netty-tcnative=netty-tcnative-1.1.33.Fork19.fe4816e, netty-transport=netty-transport-4.0.39.Final.38bdf86, netty-transport-native-epoll=netty-transport-native-epoll-4.0.39.Final.38bdf86, netty-transport-rxtx=netty-transport-rxtx-4.0.39.Final.38bdf86, netty-transport-sctp=netty-transport-sctp-4.0.39.Final.38bdf86, netty-transport-udt=netty-transport-udt-4.0.39.Final.38bdf86]
INFO  04:00:18 Starting listening for CQL clients on /10.24.112.136:9042 (unencrypted)...
    Exception (java.lang.IllegalStateException) encountered during startup: Failed to bind port 9042 on 10.24.112.136.
    java.lang.IllegalStateException: Failed to bind port 9042 on 10.24.112.136.
        at org.apache.cassandra.transport.Server.start(Server.java:164)
        at java.util.Collections$SingletonSet.forEach(Collections.java:4767)
        at org.apache.cassandra.service.NativeTransportService.start(NativeTransportService.java:128)
        at org.apache.cassandra.service.CassandraDaemon.startNativeTransport(CassandraDaemon.java:649)
        at org.apache.cassandra.service.CassandraDaemon.start(CassandraDaemon.java:511)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:616)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730)
ERROR 04:00:18 Exception encountered during startup
    java.lang.IllegalStateException: Failed to bind port 9042 on 10.24.112.136.
        at org.apache.cassandra.transport.Server.start(Server.java:164) ~[apache-cassandra-3.9.jar:3.9]
        at java.util.Collections$SingletonSet.forEach(Collections.java:4767) ~[na:1.8.0_111]
        at org.apache.cassandra.service.NativeTransportService.start(NativeTransportService.java:128) ~[apache-cassandra-3.9.jar:3.9]
        at org.apache.cassandra.service.CassandraDaemon.startNativeTransport(CassandraDaemon.java:649) [apache-cassandra-3.9.jar:3.9]
        at org.apache.cassandra.service.CassandraDaemon.start(CassandraDaemon.java:511) [apache-cassandra-3.9.jar:3.9]
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:616) [apache-cassandra-3.9.jar:3.9]
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:730) [apache-cassandra-3.9.jar:3.9]
INFO  04:00:18 Announcing shutdown

【问题讨论】:

  • docker 版本客户端:版本:1.12.5 API 版本:1.24 Go 版本:go1.6.4 Git 提交:7392c3b 内置:2016 年 12 月 16 日星期五 02:30:42 OS/Arch:linux/amd64

标签: ubuntu docker cassandra


【解决方案1】:

您的描述是错误的“上述命令运行成功并创建了一个节点”。根据您的日志,它不起作用

ERROR 04:00:18 Exception encountered during startup
INFO  04:00:18 Announcing shutdown

我认为这是因为rpc_address 应该映射到 docker 容器的私有 IP,而不是主机的私有 IP。最好保留默认值

sudo docker run --name dc101 -P -d -e CASSANDRA_CLUSTER_NAME="Cluster1" -e
CASSANDRA_DC="datacenter1" -e CASSANDRA_RACK="rc1" -e
CASSANDRA_ENDPOINT_SNITCH="GossipingPropertyFileSnitch" -e CASSANDRA_BROADCAST_ADDRESS="
<IPOfUbuntu>" -p 9042:9042 cassandra:latest

【讨论】:

  • 在创建节点时指定 -e CASSANDRA_START_RPC=true 后,允许从外部机器连接
猜你喜欢
  • 1970-01-01
  • 2016-08-03
  • 2014-02-08
  • 2015-03-01
  • 2020-08-16
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多