2016-11-25 7 views
1

Я думаю, что мне не хватает чего-то, что есть на поверхности. Я создал кластер SF в Azure. Он имеет балансировщик нагрузки и сеть с 3 виртуальными машинами (узлами), которые имеют IP-адреса в 10.0.0.0/16.Доступ к Azure Service Ткань из интернета

Когда я спрашиваю балансировку нагрузки для конечной точки приложения, он отвечает на IP-адрес узла. (Я захватил пакеты с помощью WireShark) Но я не могу получить к нему доступ, потому что сеть является частной.

Немного больше информации о моем случае: экземпляры 3xA0, net.tcp: 20001 конечные точки, межсетевой экран разрешают соединения, открытые и прослушиваемые порты, у меня есть общедоступный IP-адрес, назначенный балансирующему устройству, зонд для служебного порта.

ответ

0

Ok Вот это:

Если вы хотите сообщить службе за пределами кластера - просто использовать балансир IP нагрузки и не нуждаются в обмене данными между серверами имен. У балансировки нагрузки есть проблемы, которые могут проверять порты на каждом узле кластера и перенаправлять ваш запрос на случайный экземпляр, у которого есть служба, которую вы запрашиваете.

Если вы хотите общаться один microservice к другому в пределах кластера то у вас есть 2 варианта:

  1. просят службу именования через балансировки нагрузки, а затем общаться на службу непосредственно.
  2. Если вы точно знаете, что служба должна быть на каждом узле вашего кластера, вы можете просто напрямую связаться с локальным хостом.

Если вы хотите общаться с отдельной виртуальной машины к microservice в кластере внутри виртуальной сети кластера (вы можете подключить WebAPP к кластеру с помощью ВЧСА), то вы можете попросить назвать услугу через балансировку нагрузки, но с использованием службы API HTTP API, потому что вы не сможете использовать классы рабочей среды на виртуальной машине, у которой не установлен SDK Service Fabric. Вот пример разрешения службы: https://github.com/lAnubisl/ServiceFabricHttpApiClient

1

На балансировщике нагрузки вам нужно будет присвоить общедоступный IP-адрес. Для этого вы можете найти действительно хорошие подробные руководства в documentation.

+0

My Load balancer имеет общедоступный IP-адрес. Я могу получить к нему доступ, и он отвечает мне конечными точками узла. У меня есть пробники и другие материалы из документации. Проблема в том, что ни один из моих vm не имеет общедоступных IP-адресов и балансировки нагрузки, просто отвечает мне, где я должен подключиться (он хочет, чтобы я напрямую подключался к узлам). Я ожидал, что он пройдет через трафик. – Anubis

+0

Правильно, вы не хотите, чтобы ваши виртуальные машины имели общедоступные IP-адреса. Пробовали ли вы настраивать прямую обратную связь по правилам балансировки нагрузки? Мы должны сделать это для SQL AAG. –

+0

Да. В моем балансировочном правиле есть Frontend ip address = load balancer public ip, Protocol = TCP, порт = мой служебный порт, бэкэнд-пул = моя группа масштабируемости vm, пробная версия, persistence session = IP-адрес клиента, плавающий IP = true. В моем клиентском приложении говорится: «Не удается подключиться к 10.0.0.5:20001/.....» – Anubis