Couchbase XDCR в контейнере Docker
Мне нужно иметь локальный кластер Couchbase и реплицировать на него данные из нашего кластера prod, нельзя установить его непосредственно в OS X (из-за несовместимости vbuckets - кластер prod находится в linux).
Докер для спасения. Мне удалось создать Dockerfile, вы можете увидеть его здесь.
Теперь кластер работает, он доступен в локальной сети, все необходимые порты перенаправляются - я использовал описанные здесь приемы
Я успешно создал ссылку на кластер на вкладке 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). Я попытался изменить имя хоста контейнера с помощью docker run -h
Кажется, это не помогло.
Кто-нибудь, вы, ребята, установили XDCR с кластером, работающим в док-контейнере?
2 ответа
Я понял это. Первым шагом является установка имени хоста couchbase на что-то доступное из главного кластера. Второе, что вам нужно сделать, это обновить файл hosts на ведомом кластере, заменив текущее определение 127.0.0.1 на то, где COUCHBASE_HOSTNAME - это имя хоста, использованное выше, я не смог использовать публичные IP-адреса, и мне пришлось использовать доменное имя. с записями DNS, указывающими на подчиненное устройство:
127.0.0.1 COUCHBASE_HOSTNAME
Кластер не примет ваш узел как часть его, поэтому он будет отключен. Похоже, у вас не правильно настроена сеть.
Возможно, вам нужно открыть еще несколько портов: (все порты узел-узел) http://docs.couchbase.com/couchbase-manual-2.5/cb-install/
Кроме того, как вы начинаете свой контейнер? Помещение expose в dockerfile не открывает порты, вам также нужно ввести -P в вашу команду, чтобы действительно выставить порты