Azure InputEndpoints блокируют мои TCP-порты - PullRequest
0 голосов
/ 27 марта 2012

В моем приложении Azure размещено несколько сокетов ZeroMQ, которые связаны с несколькими портами tcp. Он работал нормально, когда я разрабатывал его локально, но они не были доступны после загрузки в Azure. К сожалению, после добавления портов в Azure ServiceDefinition (чтобы разрешить доступ после загрузки в Azure) каждый раз, когда я запускаю приложение локально, оно жалуется на то, что порты уже используются. Я предполагаю, что это связано с (отладочным / локальным) балансировщиком нагрузки, отражающим поведение лазури. Я сделал что-то не так или это ожидаемое поведение? Если последнее верно, как справиться с такой ситуацией? Я думаю, я мог бы использовать разные порты для сокетов и указать их как частные порты в конечных точках, но это больше похоже на обходной путь.

Спасибо и всего наилучшего

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Конечные точки, которые вы добавляете (в вашем случае tcp), доступны извне с указанным номером порта.Вы можете принудительно сопоставить эти конечные точки с определенными портами или позволить им назначаться динамически, что требует от вас запрашивать у RoleEnvironment назначенный порт внутреннего использования.

Если, например, вы создали InputКонечная точка, называемая «ZeroMQ», вы обнаружите, что порт будет использоваться с чем-то вроде этого, независимо от того, были ли порты настроены принудительно или вы просто позволили им получить динамическое отображение:

var zeromqPort = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["ZeroMQ"].IPEndpoint.Port;
0 голосов
/ 27 марта 2012

Вы используете более одного экземпляра роли? В эмуляторе вычислений внутренние конечные точки для разных экземпляров ролей в конечном итоге окажутся одним и тем же портом на разных IP-адресах. Если вы попытаетесь просто открыть порт без прослушивания определенного IP-адреса, вы, вероятно, столкнетесь с конфликтом между несколькими экземплярами. (Например, они все пытаются открыть порт 5555 вместо одного открытия 127.0.0.2:5555 и одного открытия 127.0.0.3:5555.)

0 голосов
/ 27 марта 2012

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

...