Удаленно проверьте состояние cassandra с помощью nodetool.Ошибка: соединение отказано - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать настройку docker compose, которая будет ожидать запуска контейнера Cassandra, прежде чем запускать контейнер JanusGraph, который требует запуска Cassandra перед запуском.

Кажется, что команда nodetool является стандартным способом проверки состояния Cassandra.Вот что я запускаю nodetool сначала в контейнере cassandra:

docker exec -it ns-orchestration_data_storage_1 nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns (effective)  Host ID                               Rack
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 (удаленно), я получаю следующее:

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

Я открыл все порты Cassandra, как вы можете видеть в файле docker-compose ниже.

Я также видел этот пост , который, я не уверен, связан.Я пытался следовать инструкциям, но я все еще получаю ту же ошибку.

Буду признателен за любые предложения.

Файл: docker-compose.yml

version: '3'
services:
  data_janusgraph:
    build:
      context: ../ns-compute-store/db-janusgraph
      dockerfile: Dockerfile.janusgraph
    ports:
      - "8182:8182"
    depends_on:
      - data_storage
      - data_index
    networks:
      - ns-net
  data_storage:
    build:
      context: ../ns-compute-store/db-janusgraph
      dockerfile: Dockerfile.cassandra
    environment:
      - CASSANDRA_START_RPC=true
    ports:
      - "9160:9160"
      - "9042:9042"
      - "7199:7199"
      - "7001:7001"
      - "7000:7000"
    volumes:
      - data-volume:/var/lib/cassandra
    networks:
      - ns-net
  data_index:
    image: elasticsearch:5.6
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - ns-net
networks:
  ns-net:
    driver: bridge
volumes:
  data-volume:

Файл: Dockerfile.cassandra

FROM cassandra:3.11
COPY conf/jmxremote.password /etc/cassandra/jmxremote.password
RUN chown cassandra:cassandra /etc/cassandra/jmxremote.password
RUN chmod 400 /etc/cassandra/jmxremote.password
COPY conf/jmxremote.access /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
RUN chown cassandra:cassandra /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
RUN chmod 400 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management/jmxremote.access
COPY conf/cassandra.yaml /etc/cassandra/cassandra.yaml

Файл:Dockerfile.janusgraph

FROM openjdk:8-jre-alpine
RUN mkdir /app
WORKDIR /app
RUN apk update \
    && apk upgrade \
    && apk --no-cache add unzip
RUN wget https://github.com/JanusGraph/janusgraph/releases/download/v0.3.0/janusgraph-0.3.0-hadoop2.zip
RUN unzip janusgraph-0.3.0-hadoop2.zip
RUN apk --no-cache add bash coreutils nmap
RUN apk del unzip
ENV JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=data_storage"
WORKDIR /app/janusgraph-0.3.0-hadoop2
COPY wait-for-cassandra-and-elasticsearch.sh ./
COPY 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 голосов
/ 28 сентября 2018

Я полагаю, что вы должны ссылаться на имя вашего контейнера cassandra как имя хоста при запуске nodetool из вашего контейнера janusgraph.Что-то вроде:

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

Попробуйте и дайте мне знать, если это поможет.

...