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

xxb16uws  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(419)

我正在尝试创建一个docker compose安装程序,它将等待cassandra容器启动后再运行janusgraph容器,该容器要求cassandra在启动前运行。
nodetool命令似乎是检查cassandra状态的标准方法。下面是我首先在cassandra容器上运行nodetool得到的结果:

  1. docker exec -it ns-orchestration_data_storage_1 nodetool status
  2. Datacenter: datacenter1
  3. =======================
  4. Status=Up/Down
  5. |/ State=Normal/Leaving/Joining/Moving
  6. -- Address Load Tokens Owns (effective) Host ID Rack
  7. UN 172.31.0.2 235.53 KiB 256 100.0% eea17329-6274-45a7-a9fb-a749588b733a rack1

最后一行的第一个“un”表示up/normal,我打算在wait-for-cassandra-and-elasticsearch.sh脚本中使用它。但现在,当我尝试在janusgraph容器(远程)上运行它时,我得到了以下结果:

  1. docker exec -it ns-orchestration_data_janusgraph_1 bin/nodetool -h 172.31.0.2 -u cassandra -pw <my-password-here> status
  2. docker exec -it ns-orchestration_data_janusgraph_1 bin/nodetool -h
  3. SLF4J: Class path contains multiple SLF4J bindings.
  4. SLF4J: Found binding in [jar:file:/app/janusgraph-0.3.0-hadoop2/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  5. SLF4J: Found binding in [jar:file:/app/janusgraph-0.3.0-hadoop2/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
  6. SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
  7. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
  8. nodetool: Failed to connect to '172.31.0.2:7199' - ConnectException: 'Connection refused (Connection refused)'.

我已经公开了所有的cassandra端口,你可以在下面的docker compose文件中看到。
我也看到这个帖子,我不确定是相关的。我试着按照指示去做,但还是犯了同样的错误。
如有任何建议,我将不胜感激。
文件:docker-compose.yml

  1. version: '3'
  2. services:
  3. data_janusgraph:
  4. build:
  5. context: ../ns-compute-store/db-janusgraph
  6. dockerfile: Dockerfile.janusgraph
  7. ports:
  8. - "8182:8182"
  9. depends_on:
  10. - data_storage
  11. - data_index
  12. networks:
  13. - ns-net
  14. data_storage:
  15. build:
  16. context: ../ns-compute-store/db-janusgraph
  17. dockerfile: Dockerfile.cassandra
  18. environment:
  19. - CASSANDRA_START_RPC=true
  20. ports:
  21. - "9160:9160"
  22. - "9042:9042"
  23. - "7199:7199"
  24. - "7001:7001"
  25. - "7000:7000"
  26. volumes:
  27. - data-volume:/var/lib/cassandra
  28. networks:
  29. - ns-net
  30. data_index:
  31. image: elasticsearch:5.6
  32. ports:
  33. - "9200:9200"
  34. - "9300:9300"
  35. networks:
  36. - ns-net
  37. networks:
  38. ns-net:
  39. driver: bridge
  40. volumes:
  41. data-volume:

文件:dockerfile.cassandra

  1. FROM cassandra:3.11
  2. COPY conf/jmxremote.password /etc/cassandra/jmxremote.password
  3. RUN chown cassandra:cassandra /etc/cassandra/jmxremote.password
  4. RUN chmod 400 /etc/cassandra/jmxremote.password
  5. COPY conf/jmxremote.access /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
  6. RUN chown cassandra:cassandra /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
  7. RUN chmod 400 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
  8. COPY conf/cassandra.yaml /etc/cassandra/cassandra.yaml

文件:dockerfile.janusgraph

  1. FROM openjdk:8-jre-alpine
  2. RUN mkdir /app
  3. WORKDIR /app
  4. RUN apk update \
  5. && apk upgrade \
  6. && apk --no-cache add unzip
  7. RUN wget https://github.com/JanusGraph/janusgraph/releases/download/v0.3.0/janusgraph-0.3.0-hadoop2.zip
  8. RUN unzip janusgraph-0.3.0-hadoop2.zip
  9. RUN apk --no-cache add bash coreutils nmap
  10. RUN apk del unzip
  11. ENV JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=data_storage"
  12. WORKDIR /app/janusgraph-0.3.0-hadoop2
  13. COPY wait-for-cassandra-and-elasticsearch.sh ./
  14. COPY conf/janusgraph-cql-es.properties ./
  15. 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

erhoui1w

erhoui1w1#

我认为在从janusgraph容器运行nodetool时,应该将cassandra容器名作为主机名。大致如下:

  1. docker exec -it ns-orchestration_data_janusgraph_1 bin/nodetool -h data_storage -u cassandra -pw <my-password-here> status

试试看,如果有帮助就告诉我。

相关问题