使用nodetool远程检查cassandra的状态。错误:连接被拒绝

时间:2018-09-27 19:36:37

标签: docker cassandra cassandra-3.0 janusgraph

我正在尝试创建一个docker compose安装程序,该安装程序将等到Cassandra容器启动后再运行JanusGraph容器,该容器要求Cassandra在启动前运行。

nodetool命令似乎是检查Cassandra状态的标准方法。这是我首先在cassandra容器上运行nodetool的内容:

  docker exec -it ns-orchestration_data_storage_1 nodetool状态
数据中心:datacenter1
=======================
状态=上/下
| /状态=正常/离开/加入/移动
-拥有地址加载令牌(有效)主机ID机架
联合国172.31.0.2 235.53 KiB 256 100.0%eea17329-6274-45a7-a9fb-a749588b733a rack1
 

最后一个标准输出行上的第一个“ UN”表示Up / Normal,我打算在我的cassandra-and-elasticsearch.sh脚本中使用它。但是现在当我尝试在janusgraph容器(远程)上运行它时,我得到了:

  docker exec -it ns-orchestration_data_janusgraph_1 bin / nodetool -h 172.31.0.2 -u cassandra -pw <我的密码在这里>状态
docker exec -it ns-orchestration_data_janusgraph_1 bin / nodetool -h
SLF4J:类路径包含多个SLF4J绑定。
SLF4J:在[jar:file:/app/janusgraph-0.3.0-hadoop2/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]中发现绑定
SLF4J:在[jar:file:/app/janusgraph-0.3.0-hadoop2/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定
SLF4J:有关说明,请参见http://www.slf4j.org/codes.html#multiple_bindings。
SLF4J:实际绑定的类型为[org.slf4j.impl.Log4jLoggerFactory]
nodetool:无法连接到“ 172.31.0.2:7199”-ConnectException:“连接被拒绝(连接被拒绝)”。
 

我已经公开了所有Cassandra端口,如下面的docker-compose文件所示。

我还看到了这篇文章不确定是否相关。我尝试按照说明进行操作,但仍然遇到相同的错误。

任何建议,我将不胜感激。

文件:docker-compose.yml

 版本:“ 3”
服务:
  data_janusgraph:
    建立:
      上下文:../ ns-compute-store / db-janusgraph
      dockerfile:Dockerfile.janusgraph
    端口:
      -“ 8182:8182”
    取决于:
      - 数据存储
      -data_index
    网络:
      -ns-net
  数据存储:
    建立:
      上下文:../ ns-compute-store / db-janusgraph
      dockerfile:Dockerfile.cassandra
    环境:
      -CASSANDRA_START_RPC = true
    端口:
      -“ 9160:9160”
      -“ 9042:9042”
      -“ 7199:7199”
      -“ 7001:7001”
      -“ 7000:7000”
    数量:
      -数据量:/ var / lib / cassandra
    网络:
      -ns-net
  资料索引:
    图片:elasticsearch:5.6
    端口:
      -“ 9200:9200”
      -“ 9300:9300”
    网络:
      -ns-net
网络:
  ns-net:
    司机:桥
数量:
  数据量:
 

文件:Dockerfile.cassandra

  FROM卡桑德拉:3.11
复制conf / jmxremote.password /etc/cassandra/jmxremote.password
运行chown cassandra:cassandra /etc/cassandra/jmxremote.password
运行chmod 400 /etc/cassandra/jmxremote.password
复制conf / jmxremote.access /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
运行chown cassandra:cassandra /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
运行chmod 400 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
复制conf / cassandra.yaml /etc/cassandra/cassandra.yaml
 

文件:Dockerfile.janusgraph

  FROM openjdk:8-jre-alpine
运行mkdir / app
WORKDIR / app
RUN APK更新
    && apk升级\
    && apk --no-cache添加解压缩
运行wget https://github.com/JanusGraph/janusgraph/releases/download/v0.3.0/janusgraph-0.3.0-hadoop2.zip
运行解压缩janusgraph-0.3.0-hadoop2.zip
运行apk --no-cache添加bash coreutils nmap
运行apk del解压缩
ENV JVM_OPTS =“ $ JVM_OPTS -Djava.rmi.server.hostname = data_storage”
WORKDIR /app/janusgraph-0.3.0-hadoop2
COPY等待卡桑德拉和elasticsearch.sh ./
复制conf / janusgraph-cql-es.properties ./
CMD [“ ./wait-for-cassandra-and-elasticsearch.sh”,“ data_storage:9160”,“ data_index:9200”,“ ./bin/gremlin-server.sh”,“ ./conf/gremlin-server /gremlin-server-berkeleyje.yaml“]
 

在Github存储库中查看完整代码: https://github.com/nvizo/janusgraph-cluster-example

1 个答案:

答案 0 :(得分:0)

我相信从janusgraph容器运行nodetool时,应将cassandra容器名称称为主机名。类似于:

template_redirect

尝试一下,让我知道是否有帮助。