2014-12-29 1 views
1

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

Аэрокосмические узлы не являются частью или кластером контейнеров, но они находятся в одном проекте, и кластер контейнеров и аэрокосмические узлы работают в сети по умолчанию.

The aerospike узлов работает с конфигурациями по умолчанию

изнутри докеров контейнеров я пытаюсь сделать это

var client = aerospike.connect(internal-ip-of-aerospike-node, 3000) 

, но соединение не удается, то, что я делаю неправильно?

ответ

1

Я немного отрывочен о том, как контейнеры-докеры запускаются на GCE (или как вы это делаете в точности), но IIRC - оверлейная сеть построена так, что контейнеры могут быть адресованы в своем адресном пространстве. Обычно это делается путем создания пары виртуального сетевого интерфейса между хостом и контейнером. Для того, чтобы выйти из наложенной сети, правило маскарад, как это (от https://docs.docker.com/articles/networking/#binding-container-ports-to-the-host) добавляется на хост-системе:

Chain POSTROUTING (policy ACCEPT) 
target  prot opt source    destination 
MASQUERADE all -- 172.17.0.0/16  !172.17.0.0/16 

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

Я не могу ответить на вопрос, почему он не работает, но я могу предложить вещи, чтобы попробовать:

  • Дайте внешний адрес для узла aerospike и попытайтесь подключиться к этому. Если это работает, это говорит о том, что проблема связана с сетью контейнеров.
  • Прокрутите несвязанную тестовую виртуальную машину и попытайтесь подключиться к аэрокосмическому узлу от
  • Есть ли в сети GCE брандмауэры, которые могут мешать? Попробуйте добавить явное правило, чтобы разрешить трафик.

Обычный способ отладки этих проблем, это запустить что-то, что создает поток (отсутствие) запросов, а затем попытаться увидеть пакеты потока на каждом шаге:

while :; do nc -w1 -n -v -z <aerospike-ip> 3000; sleep 1; done" 

Затем ТСРйитр увидеть ли попытки соединения есть и какие пакеты выглядеть так:

  • IP Link шоу и/или IP Addr шоу (найти интерфейс)
  • ТСРйитр -n -v -c 10 -i < интерфейс > TCP-порт 3000

И сделать это:

  • в контейнере (должен быть eth0)
  • на Docker хосте, на виртуальном интерфейсе контейнера (Veth < что-то >)
  • на хост-хостеле, на сетевом интерфейсе хоста (eth0)
  • на аэрокосмическом хосте (eth0)

Это поможет определить, где возникла проблема, и дампы пакетов также могут выявить причину возникновения проблемы.

+0

Я думаю, что проблема связана с кубернетами, пингом с другой виртуальной машины или изнутри контейнера докеров, который я создал самостоятельно – Alloys

 Смежные вопросы

  • Нет связанных вопросов^_^