2015-05-15 18 views
6

Мне нужно иметь локальный кластер Couchbase и реплицировать данные из нашего кластера prod на него, не может быть установлен непосредственно на OS X (из-за несовместимости vbuckets - кластер prod на Linux) ,Couchbase XDCR в контейнере Docker

Docker для спасения. Я сумел создать Dockerfile, you can see it here.

Теперь, кластер работает, он доступен в локальной сети, все необходимые порты пересылают - I used tricks described here

Я успешно создал ссылку кластера на вкладке XDCR, но всякий раз, когда я пытаюсь реплицировать данные ведра - это меняет имя хоста моего кластера в какой-то не-бы бессмысленно-адрес IP и создает запись в журнале:

Updated remote cluster `mycluster` hostname to "172.17.0.5:8091" 
because old one ("mylaptop.company.com:8091") 
is not part of the cluster anymore 

Я знаю Couchbase очень чувствителен к IP-адреса, как вы можете видеть, вместо этого я использую имя хоста моей машины (хост контейнера докера). Я попытался изменить имя хоста контейнера, используя docker run -h, что, похоже, не помогло.

Кто-нибудь, вы, ребята, установили XDCR с кластером, работающим в контейнере докера?

+0

ли вы когда-нибудь решить эту проблему? Я столкнулся с подобной проблемой. – jmiraglia

+0

@jmiraglia no, к сожалению, я не мог найти способ решить эту проблему. Позже я перешел к другим вещам, в моем текущем проекте я не использую Couchbase. Сожалею. – Agzam

ответ

1

Кластер не принимает ваш узел как часть его, поэтому его выбивают. Похоже, что у вас нет вашей сети, настроенной правильно.

Может быть, что вам нужно еще несколько портов открылись: (все-узла к узлу портов) http://docs.couchbase.com/couchbase-manual-2.5/cb-install/#network-ports

Кроме того, как вы начинаете свой контейнер? Помещение экспонирования в файл докеров не откроет порты, вам также нужно поместить -P в свою команду, чтобы действительно разоблачить порты.

+0

нет, открыты все необходимые порты. У меня есть все это: 8091 8092 11209 11210 11211 11214 11215 18091 18092 4369. Как я уже сказал, он находит ведро, он подключается к кластеру, но не хочет реплицироваться, потому что ip-адрес контейнера докера отличается от ip своего хостинга. Я пытаюсь использовать имя хоста моего компьютера, а не ip - все равно, не реплицирует – Agzam

+0

Возможно, мне нужно найти способ полностью сделать контейнер-докер «видимым» в локальной сети, просто пересылая порты недостаточно? – Agzam

1

Я закончил тем, что понял это. Первым шагом является установление имени хоста couchbase для чего-то доступного из основного кластера. Второе, что вам нужно сделать, это обновить файл hosts в подчиненном кластере, заменив текущее определение 127.0.0.1 на то, где COUCHBASE_HOSTNAME - это имя хоста, используемое выше, я не смог использовать общедоступные IP-адреса и должен был использовать доменное имя с DNS-записями, указывающий на ведомый:

127.0.0.1 COUCHBASE_HOSTNAME