Как назначить общедоступный IP-адрес (ILPIP) для виртуальной машины Azure в ARM (Resouce Manager)

1

У нас есть WSO2CEP, работающий на виртуальной машине Azure, которая представляет собой сложный обработчик событий и будет отправлять уведомление своим обработчиком с помощью простого HTTP POST. Однако он будет хорошо работать на AWS EC2, но не на виртуальной машине Azure. Когда-нибудь это будет ниже исключения.

ID: [-1] [] [2016-10-07 16:05:00,043] ERROR {org.wso2.carbon.event.output.adapter.core.OutputEventAdapter} -  Event dropped at Output Adapter '57f629ee23a74a1688b9e7c1_PUBLISHER' for tenant id '-1234', Read timed out 
java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:170)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
    at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
    at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
    at org.wso2.carbon.event.output.adapter.http.HTTPEventAdapter$HTTPSender.run(HTTPEventAdapter.java:317)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Я думал, что это, возможно, вызвано обсуждаемой проблемой Вот а также Вот , Обходной путь - назначить публичный IP-адрес уровня экземпляра (ILPIP) виртуальной машине. Однако сейчас мы используем модель диспетчера ресурсов Azure, и все связанные статьи ILPIP, похоже, говорят о классическом режиме (Azure Service Manager).

В настоящее время у нас есть динамичный Публичный IP-адрес назначить на Сетевой интерфейс из Виртуальная машина ,

У ARM все еще есть ILPIP? и как мы можем это настроить?

Bruce
источник

Ответы:

1

Вкратце, насколько мне известно, нет способа назначить ILPIP для виртуальной машины ARM.

Потому что в ARM нет концепции ILPIP. ARM меняет архитектуру сети.

Когда вы назначаете общедоступный IP-адрес виртуальной машине в ARM (фактически он назначается виртуальной сетевой карте, подключенной к виртуальной машине), этот IP-адрес не будет использоваться другими виртуальными машинами, что отличается от ASM. В ASM общедоступный IP-адрес принадлежит облачной службе. Все виртуальные машины, принадлежащие одной облачной службе, будут использовать общий IP-адрес. Вот почему нам нужен ILPIP. Но в ARM у VM есть собственный публичный IP-адрес.

Так что я сомневаюсь, что ваша проблема такая же, как ссылка, упомянутая выше. Пожалуйста, попробуйте выполнить захват сети на ВМ, чтобы проверить точное поведение сети, что очень полезно для устранения неполадок в сети.

Steven Lee - MSFT
источник
Привет Стивен, спасибо за ответ. Согласно статья , В ASM он поддерживает исходную таблицу NAT и получил жестко заданное значение времени ожидания, If your application keeps a connection idle for 4 minutes, its entry in the connection table will get deleted. И AFAIK, в ARM, даже статический общедоступный IP-адрес все еще имеет значение по умолчанию для времени простоя до 4 минут, но почему? Если общедоступный IP больше не используется совместно с любой другой виртуальной машиной в архитектуре ARM.
Bruce
"но почему?" - Это хороший вопрос. Я столкнулся с этой проблемой и потратил около недели на отладку & amp; работа с поставщиком, преодолевающим эту проблему в Azure. Поразительно знать, что у этой проблемы было решение в «классической» версии Azure, но в современной версии ЭТОГО НЕ ДАЕТСЯ И общедоступный IP-адрес имеет отношение 1: 1 к виртуальной машине, так зачем нужна таблица соединений с отслеживанием состояния ?! Даже @docs, не говоря уже о том, что современный Azure не поддерживает это docs.microsoft.com/en-gb/azure/virtual-network/... Microsoft, это отвратительно. WTF ?!
joonas.fi