2017-02-20 12 views
1

Я довольно новичок в игре с Docker, так что, надеюсь, это все моя вина, но я пытаюсь получить настройку кольца Apache Cassandra с несколькими хостами, используя Docker Compose.Multi host cassandra Docker-compose file issue

У меня есть следующие DOCKER-compose.yml файла

version: '2' 

services: 

    cassandra-1: 
     hostname: cassandra-1 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 1 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-1:/var/lib/cassandra:rw 

    cassandra-2: 
     hostname: cassandra-2 
     image: cassandra:latest 
     command: /bin/bash -c "sleep 20 && echo ' -- Pausing to let system catch up ... -->' && /docker-entrypoint.sh cassandra -f" 
     environment: 
     - CASSANDRA_SEEDS=cassandra-1 
     links: 
     - cassandra-1:cassandra-1 
     expose: 
     - 7000 
     - 7001 
     - 7199 
     - 9042 
     - 9160 
     # volumes: # uncomment if you desire mounts, also uncomment cluster.sh 
     # - ./data/cassandra-2:/var/lib/cassandra:rw 

Этот пример попытки запуска 1-го узла CASSANDRA (CASSANDRA-1), а затем второго узла (CASSANDRA-2) в другой контейнер которые должны быть в состоянии использовать 1-й узел в качестве узла семян для стандартной переменной окружения Кассандры «CASSANDRA_SEEDS»

Однако, когда я запускаю это, я получаю такого рода исключение

cassandra-2_1 | WARN 07:00:35 Seed provider couldn't lookup host cassandra-1 
cassandra-2_1 | Exception (org.apache.cassandra.exceptions.ConfigurationException) encountered during startup: The 
provider lists no seeds. 
cassandra-2_1 | The seed provider lists no seeds. 
cassandra-2_1 | ERROR 07:00:35 Exception encountered during startup: The seed provider lists no seeds. 
cass2_cassandra-2_1 exited with code 3 

Если попытка запустить 2-й узел Кассандры (Cassandra-2) ВСЕГДА выходит из строя, и заканчивается также до убийства в 1-й

cass1_cassandra-1_1 exited with code 137 

Если я расколоть докер-compose.yaml файл в 2-х частей , где начало 1-го узла кассандры находится в одном файле. И просто запустите этот узел, используя docker-compose, и все в порядке.

Пожалуйста, обратите внимание, что, когда я беру 2 отдельных докер-compose.yml маршрут файла, один для «Cassandra-1», а другой для «Cassandra-2» я AM, убедившись, что второй файл использует «external_links», а не «ссылки». Но результат тот же

Может ли кто-нибудь с немного более опытным докером сказать мне, где я иду не так.

Я просмотрел веб-страницы для других примеров, и все, похоже, делают это так же, как и я. Но мой просто не работает.

Чувствуя совсем потерялась, пожалуйста, помогите

ответ

1

Это похоже только на проблему с Docker для Windows. Я попробовал исходный файл на Mac, и он работал нормально

1

ли вы убедитесь, что первый узел закончил запуск перед второй узел пытается присоединиться к кластеру?

По моему опыту, 20 секунд недостаточно для того, чтобы первый узел завершил запуск. Сделайте второй узел сна за что-то вроде 60 секунд, прежде чем присоединяться к кластеру.

command: /bin/bash -c "echo ' -- Pausing to let system catch up ...' && sleep 60 && /docker-entrypoint.sh cassandra -f" 

Кроме того, в команде выше я сменил echo и sleep, который имеет больше смысла, как вы внимательно следите за выходом терминала.

Логи cassandra-1 должен показать что-то вроде

INFO 21:21:06 Node /172.18.0.2 state jump to NORMAL 
INFO 21:23:04 Handshaking version with /172.18.0.4 
INFO 21:23:07 Node /172.18.0.4 is now part of the cluster 
INFO 21:23:07 InetAddress /172.18.0.4 is now UP 

Very бревнами контейнера, выполнив эту команду на своем терминале:

docker logs [OPTIONS] CONTAINER_ID 

Найти идентификатор контейнера, выполнив docker ps.

Если все еще не работает, попробуйте добавить mem_limit: 1024m в оба определения контейнеров Cassandra.Возможно, при запуске из-за нехватки ресурсов памяти.

+0

К сожалению, это не имело никакого значения. Такая же ошибка. Я запускаю Docker на окнах, я дал этот файл пользователю Linux-докера, и они сказали, что он просто сработал. Grrrr – sacha