Как сменить nat windows 10

Как работает Azure Load Balancer

Это базовая форма балансировки на уровне L4, т.е. полностью прозрачная для всех протоколов. Балансировщик не заглядывает в трафик и не работает как прокси. Как это работает?

Одним из компонентов балансировщика является сохранение информации о наборе ваших ВМ и о том, живо ли приложение, т. е. проверка работоспособности — может работать как HTTP, так и общий TCP (тестирует установленное соединение) и поэтому подходит для любого протокола. На входе пакета балансировщик выполняет HASH (5-кратный, 2-кратный или 3-кратный), на основе которого распределяет результат. В связи с тем, что в фабрике SDN распределены различные функции NAT, на этом шаге балансировщик установил Destination NAT на адрес выбранной ВМ, но оставил исходный IP-адрес (это очень приятно с точки зрения логирования и пути пакетов). Виртуальная машина будет отвечать клиенту напрямую, а распределенная структура SDN предоставит исходный NAT с частного IP-адреса виртуальной машины на адрес балансировщика. Благодаря этому исходящий трафик идет напрямую от вычислительного узла в сеть, ему не нужно проходить через какое-либо приложение. Это большая разница по сравнению с прокси-сервером L7 (включая Шлюз приложений Azure). Емкость Azure Load Balancer фактически неограничена и не влияет на производительность вашего хранилища, и вам не нужно платить за нее или планировать ее каким-либо образом. Azure автоматически балансирует балансирующий кластер в фоновом режиме с точки зрения проверки работоспособности, а исходящая обработка распределяется непосредственно на вычислительные узлы. Вы получаете преимущества Direct Server Return без его обычных неприятных функций (= он у вас есть, и вам не нужно иметь один и тот же IP-адрес на каждой виртуальной машине). И это не классический Source NAT, из-за которого ваше приложение не сможет увидеть реальный IP-адрес клиента. Благодаря SDN вы получаете одновременно высокую производительность и удобство/прозрачность. Всевы увидите в сегодняшней статье.

Давайте попробуем Azure Load Balancer

Во-первых, давайте создадим среду на границе. Балансировщик распределяет нагрузку на некоторую группу ВМ, что основано на определении Availability Set (который также делится на разные типы доменов доступности и обновления). Также можно автоматизировать процесс (особенно с точки зрения создания и изменения количества ВМ) с помощью Scale Set, но об этом позже. Итак, давайте создадим 3 виртуальные машины через CLI. Чтобы протестировать балансировщик, мне нужно запустить на них простой веб-сайт (в идеале такой, который позволит мне идентифицировать конкретную виртуальную машину по возвращаемому значению). Я подготовил простой веб-сервер, который возвращает MAC-адрес (это двоичный файл, скомпилированный из простого приложения Go с фреймворком Martini). Мы скопируем его на виртуальную машину через расширение и воспользуемся скриптом, чтобы убедиться, что он исполняемый (chmod) и запустится сам. Веб-сайт будет подключен к порту 3000. Давайте настроим мою среду следующим образом:

Читайте также:  Как включить wifi на ноутбуке windows 7 lenovo b570e

Начнем с простого сценария — внешнего общедоступного IP-адреса, который балансирует трафик с внутренними веб-серверами. Давайте рассмотрим Azure Load Balancer.

Мы будем использовать общедоступный IP-адрес (если вы можете создать новый прямо в диалоговом окне).

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

Мы определенно не хотим отправлять трафик на узлы, которые перестают отвечать с точки зрения приложения. Мы хотим автоматически удалить их из пула. Итак, приступим к проверке работоспособности.

Я буду использовать HTTP-зонд для некоторого URL-адреса (в моем случае только / ) и пары параметров. Поскольку Azure Load Balancer не является прокси-сервером приложения, он поддерживает любой протокол, и мы можем выполнить проверку работоспособности наустановленное TCP-соединение, которое подходит, например, для кластера базы данных. В моем случае веб-сайт будет на порту 3000.

Для чего следует балансировать Azure? Мы должны сделать это и создать внутренний пул.

Пройдемся по группе доступности и укажем конкретные виртуальные машины и их карты памяти.

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

Мы вводим имя, внешний порт (классический 80) и внутренний порт (в нашем случае 3000), внутренний пул, проверку работоспособности, а также сохраняемость сеанса. Если мы установим None, каждый запрос будет направлен на какую-либо бэкэнд-ВМ независимо от предыдущих запросов (для маршрутизации используется хеш из 5 кортежей). Это идеально с точки зрения оптимизированной производительности, но подходит только для приложений без сохранения состояния, когда конкретная виртуальная машина не хранит никакой информации о сеансе в памяти (обычно она выносит ее в Azure Redis, где хранит содержимое корзины покупок или состояние, отправленное туда и обратно вместе с клиентом). Начнем с раздела «Нет» и попробуем.

Браузер будет кешировать, поэтому мы используем curl в Linux. Ответ будет возвращен с разных ВМ:

Variant Client IP (2-tuple hash) Легко если клиент с определенного IP сделал запрос и был отправлен на конкретную ВМ, эта информация запоминается на 4 минуты бездействия (или можно изменить значение таймаута сдача). То есть если клиент выполнит еще один запрос через полминуты, он достигнет той же ВМ. Это необходимо в ситуации, когда приложение не является stateless — например, информация о сеансе хранится в памяти ВМ или для связи используется TCP-соединение, но данные идут по UDP (например,передача мультимедиа). Однако распределенное решение может быть не идеальным, особенно если ваш единственный клиент — компания, все сотрудники которой спрятаны NAT за одним публичным IP (тогда вообще не балансируется). Давайте переключим сохраняемость сеанса на IP-адрес клиента и повторим попытку.

Давайте переключим концепцию балансировки обратно на 5-кортежность (Нет в постоянстве сеанса). Возможно, вы подумали, что лучше использовать файлы cookie для сохранения сеанса на веб-серверах. Но это уже означает, что балансировщик смотрит в сам протокол, т.е. работает на L7. Такой запрос существует, и это шлюз приложений Azure, но об этом в другой раз.

Читайте также:  Как создать загрузочный usb диск windows 10 с помощью ultraiso

Мы хотим протестировать сеть веб-процесса. Сбой проверки работоспособности, и балансировщик перестает использовать виртуальную машину. Давайте снова запустим непрерывные переходы и в одной из ВМ я убью веб-процесс. Обратите внимание, что машина из F8 не сбалансирована.

После запуска процесса виртуальная машина снова автоматически загружается.

Путь пакета или то, что мы видим внутри ВМ

Azure Load Balancer является частью структуры SDN, поэтому он работает немного иначе, чем классический балансировщик в виде устройства. Давайте посмотрим, что именно происходит. Сначала нам нужно подключиться к виртуальной машине через SSH. Мы можем сделать это на внутренних адресах какой-нибудь другой ВМ в виртуальной сети или задать правила NAT для отдельных машин на балансировщике. Перейдем к общедоступному IP-доступу к SSH отдельных ВМ.

Вводим SSH-доступ (22) к первой ВМ на внешний порт 9001. Повторите это для следующей ВМ через внешние порты 9002 и 9003.

В результате я получаю доступ к первой виртуальной машине через SSH на общедоступном IP-адресе через порт 9001. Запущу tcpdump с фильтрацией на порт 3000 (там будет мое веб-приложение), он сгенерирует пару запросов и посмотрим,что происходит.

Общедоступный IP-адрес моего сайта:

Мы видим запросы с 168.63.129.16 — это проверка работоспособности балансировщика. Потом уже идут запросы с 167.220.196.156 на приватный IP в ВМ (10.0.0.4). Замечательно! Balancer не выполнял SNAT, а только DNAT, что имеет два основных преимущества. С одной стороны, приложение видит реальный IP-адрес клиента (а не балансировщика) и позволяет ему отвечать напрямую клиенту. Azure SDN обеспечивает трансляцию исходящего трафика и исходящего IP-адреса с локального 10.0.0.4 на IP-адрес балансировщика. Это функция, распределенная по фабрике SDN, поэтому она выполняется непосредственно в стеке SDN хоста, а не в каком-то центральном балансировщике. В противном случае, с точки зрения пути пакета, Azure Load Balancer реализует так называемый прямой возврат сервера.

Так это раз:

  • Трафик, уходящий от клиента: IP-адрес источника = мой IP-адрес, IP-адрес назначения = IP-адрес балансировщика
  • Трафик от балансировщика к выбранной ВМ: IP-адрес источника = мой IP-адрес, IP-адрес назначения = IP-адрес частной ВМ
  • Исходящий трафик внутри ВМ: исходный IP-адрес = частный IP-адрес ВМ, целевой IP-адрес = мой IP-адрес
  • Операция при выходе из вычислительного узла: IP-адрес источника = IP-адрес балансировщика, IP-адрес назначения = мой IP-адрес

Однако — в настройках вы могли заметить параметры Плавающий IP и параметр Прямой возврат сервера в рабочей скобке. Что это значит? Технически, с точки зрения пути пакетов, Azure LB всегда находится в режиме DSR. Этот параметр означает, что балансировщик не будет преобразовывать IP-адрес назначения в частный адрес виртуальной машины (т. е. в 10.0.0.4). Есть несколько ситуаций, когда технология кластеризации требует, чтобы ВМ «знала» адрес балансировщика, т.е. имела его как интерфейс (хороший пример — кластер MS SQL AlwaysOn. Для самого балансировщика это глобальная настройка и я не хочу делать это сновапоэтому воспользуемся правилом NAT — оно ничего не сделает, но будет смотреть на пакеты.

Читайте также:  Как установить javafx на windows

Давайте наберем туда немного трафика (curl http://mojeip:10000) и посмотрим на пакеты.

Вот разница. IP-адрес источника — это адрес клиента, но назначение — это не частный IP-адрес виртуальной машины (10.0.0.4), а общедоступный IP-адрес балансировщика. Таким образом, все виртуальные машины будут иметь петлевой интерфейс с одним и тем же IP-адресом. Как обычно, мне ничего подобного не нужно, но некоторые технологии кластеризации могут потребовать — и Azure Load Balancer справится с таким сценарием.

Внутренний балансировщик

Вы не всегда хотите иметь внешний общедоступный IP-адрес в Azure Load Balancer. Например, это внутреннее веб-приложение, к которому можно получить доступ только по частному IP-адресу через Azure VPN, или это балансирующее внутреннее приложение (например, из Интернета в серверную службу). Итак, давайте создадим один балансировщик с теми же правилами, но на этот раз он будет внутренним.

Настройте все необходимые правила, как и в предыдущем случае, а затем запустите другую виртуальную машину в своей виртуальной сети. Оттуда убедитесь, что балансировка на внутренний адрес работает.

Наблюдение за балансировщиком

Azure Load Balancer может вести журнал, и это будет легко в учетной записи хранения или концентраторе событий, но вы можете визуализировать журналы в Azure Network Watcher (там собирается диагностическая информация о сборе в Azure) или отправлять их в Operations Management Suite (глобальный гибридный инструмент мониторинга и анализа журналов).

Во-первых, давайте включим ведение журнала для Наблюдателя за сетями Azure.

Нажмите на балансировщик, и мы включим логин.

Теперь давайте зайдем на виртуальную машину и завершим веб-процесс, чтобы сгенерировать неудачную проверку работоспособности.

Поехалитакже отправлять журналы в мою рабочую область OMS (то есть в Log Analytics).

Вот результат. Благодаря различным возможностям визуализации и обработки логотипов вы можете работать с этими списками дальше.

Например, мы можем создать оповещение в тот момент, когда один из узлов не работает. Для этого мы должны сначала сформулировать запрос, который будет выглядеть примерно так:

Мы можем установить правило, если приходит электронное письмо или, например, инцидент автоматически создается в каком-либо инструменте ITSM.

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

Вы даже можете экспортировать журналы из OMS в Power BI для дальнейшей визуализации, ориентированной на бизнес.

Azure Load Balancer — это мощный и особо высокопроизводительный инструмент, который не замедляет трафик благодаря фабрике SDN, вам не нужно планировать его мощность, и он доступен для ВМ категории «Стандартный» для свободно. Определенно стоит затраченных усилий.

Поделиться с друзьями
ОС советы