Сеть

При создании кластеров Azure Service Fabric и управлении ими вы предоставляете сетевое подключение для узлов и приложений. Сетевые ресурсы включают в себя диапазоны IP-адресов, виртуальные сети, подсистемы балансировки нагрузки и группы безопасности сети. В этой статье описаны рекомендации по этим ресурсам.

Изучите шаблоны сетей Azure Service Fabric, чтобы узнать, как создавать кластеры, использующие следующие функции: существующую виртуальную сеть или подсеть, статический общедоступный IP-адрес, подсистему балансировки нагрузки для внутреннего и внешнего или только для внутреннего использования.

Сеть инфраструктуры

Вы можете увеличить производительность своей виртуальной машины с помощью ускорения сети. Для этого нужно объявить свойство enableAcceleratedNetworking в шаблоне Resource Manager. Приведенный ниже фрагмент кода позволяет использовать ускорение сети в масштабируемом наборе виртуальных машин с помощью переменной NetworkInterfaceConfigurations.

"networkInterfaceConfigurations": [
  {
    "name": "[concat(variables('nicName'), '-0')]",
    "properties": {
      "enableAcceleratedNetworking": true,
      "ipConfigurations": [
        {
        <snip>
        }
      ],
      "primary": true
    }
  }
]

Кластер Service Fabric можно подготовить с ускоренной работой в сети в Linux и Windows.

Ускорение сети поддерживают виртуальные машины Azure со следующими номерами SKU: D/DSv2, D/DSv3, E/ESv3, F/FS, FSv2 и Ms/Mms. Ускорение сети успешно протестировано с помощью Standard_DS8_v3 SKU 23 января 2019 года для кластера Service Fabric Windows, а также с помощью Standard_DS12_v2 29 января 2019 года для кластера Service Fabric Linux. Обратите внимание, что для ускорения сети требуется не менее 4 виртуальных ЦП.

Чтобы включить ускорение сети в существующем кластере Service Fabric, необходимо сначала масштабировать кластер Service Fabric, добавив масштабируемый набор виртуальных машин, чтобы выполнить следующие действия.

  1. Подготовить NodeType с поддержкой ускоренной работы в сети.
  2. Перенести службы и их состояния в подготовленный NodeType с поддержкой ускоренной работы в сети.

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

Сеть кластера

  • Кластеры Service Fabric можно развернуть в имеющейся виртуальной сети, выполнив действия, описанные в статье Схемы сетевых подключений Service Fabric.

  • Для узлов, которые ограничивают входящий и исходящий трафик своего кластера, рекомендуется использовать группы безопасности сети (NSG). Убедитесь, что в NSG открыты необходимые порты.

  • Тип основного узла, который содержит системные службы Service Fabric, не требуется предоставлять через внешнюю подсистему балансировки нагрузки и может предоставляться внутренним подсистемой балансировки нагрузки.

  • Используйте статический общедоступный IP-адрес для кластера.

Правила безопасности сети

Описанные далее правила — это рекомендуемый минимум для типичной конфигурации. Мы также включаем правила, которые являются обязательными для операционного кластера, если необязательные правила не нужны. Они позволяют обеспечить полную защиту с использованием сетевого пиринга и концепций инсталляционного сервера, таких как Бастион Azure. Не удается открыть обязательные порты или утвердить IP/URL-адрес, предотвратит правильную работу кластера и может не поддерживаться.

Входящий трафик

Приоритет Имя Порт Протокол Источник Назначение Действие Обязательно
3900 Портал Azure 19080 TCP Service Fabric Любое Разрешить Да
3910 API-адрес клиента 19000 TCP Интернет Любое Разрешить No
3920 SFX + API клиента 19080 TCP Интернет Любое Разрешить No
3930 Кластер 1025-1027 TCP Виртуальная сеть Любое Разрешить Да
3940 Временные 49152–65534 TCP Виртуальная сеть Любое Разрешить Да
3950 Приложение 20000–30000 TCP Виртуальная сеть Любое Разрешить Да
3960 RDP 3389 TCP Интернет Любой Запрет No
3970 SSH 22 TCP Интернет Любой Запрет No
3980 Пользовательская конечная точка 443 TCP Интернет Любой Запрет No

Дополнительные сведения о правилах безопасности для входящего трафика:

  • Портал Azure. Этот порт используется поставщиком ресурсов Service Fabric для запроса сведений о вашем кластере, отображаемых на портале управления Azure. Если этот порт недоступен у поставщика ресурсов Service Fabric, появится сообщение, например "Узлы не найдены" или "UpgradeServiceNotReachable" в портал Azure, а список узлов и приложений пуст. Если вы хотите просматривать сведения о кластере на портале управления Azure, то ваша подсистема балансировки нагрузки должна предоставлять общедоступный IP-адрес, а группа безопасности сети должна разрешать входящий трафик через порт 19080. Этот порт рекомендуется использовать для расширенных операций управления со стороны поставщика ресурсов Service Fabric, чтобы обеспечить более высокую надежность.

  • API клиента. Конечная точка подключения клиента для API, используемых PowerShell.

  • SFX + API клиента. Этот порт используется Service Fabric Explorer для просмотра кластеров и управления ими. Он используется наиболее распространенными API, такими как REST/PowerShell (Microsoft.ServiceFabric.PowerShell.Http)/CLI/.NET таким же образом.

  • Cluster(кластер). Используется для связи между узлами.

  • Временный. Service Fabric использует часть из них в качестве портов приложений, а остальные доступны для операционной системы. Кроме того, этот диапазон сопоставляется с существующим диапазоном в операционной системе, поэтому для любых целей вы можете использовать диапазоны, указанные в этом примере. Убедитесь в том, что разница между номерами начального и конечного портов составляет не менее 255. Если это различие слишком мало, могут возникнуть конфликты, потому что этот диапазон также используется для ОС. Чтобы просмотреть настроенный динамический диапазон портов, выполните netsh int ipv4 show dynamicport tcp. Эти порты не нужны для кластеров Linux.

  • Приложение. Диапазон портов приложения должен быть достаточным для обеспечения потребностей приложений в конечных точках. Этот диапазон должен отличаться от диапазона динамических портов на компьютере, т. е. диапазона ephemeralPorts, указанного в конфигурации. Service Fabric использует их каждый раз, когда требуются новые порты, а также разрешает их использование в брандмауэре узлов.

  • RDP. Необязательные порты, если протокол используется RDP из Интернета или виртуальной сети для Jumpbox.

  • SSH. Необязательные порты, если протокол SSH используется из Интернета или виртуальной сети для Jumpbox.

  • Пользовательская конечная точка. Пример включения конечной точки приложения для доступа через Интернет.

Примечание.

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

Исходящие

Приоритет Имя Порт Протокол Источник Назначение Действие Обязательно
4010 Поставщик ресурсов 443 TCP Любое Service Fabric Разрешить Да
4020 Скачивание двоичных файлов 443 TCP Любое AzureFrontDoor.FirstParty Разрешить Да

Дополнительные сведения о правилах безопасности для входящего трафика:

  • Поставщик ресурсов. Подключение между UpgradeService и поставщиком ресурсов Service Fabric для получения операций управления, таких как развертывание ARM, или обязательных операций, таких как выбор начального узла или обновление типа основного узла.

  • Скачивание двоичных файлов. Служба обновления использует адрес download.microsoft.com для получения двоичных файлов, эта связь необходима для установки, повторного образа и обновления среды выполнения. Если используется "только внутренняя" подсистема балансировки нагрузки, необходимо добавить дополнительную внешнюю подсистему балансировки нагрузки, в которой будет разрешен исходящий трафик через порт 443. При необходимости этот порт может быть заблокирован после успешной установки, но в этом случае пакет обновления должен распространяться на узлы или порт должен быть открыт в течение короткого периода времени, после чего требуется обновление вручную.

Используйте Брандмауэр Azure с журналом потоков NSG и аналитикой трафика, чтобы отслеживать проблемы с подключением. Рекомендуем использовать шаблон ARM Service Fabric с NSG.

Примечание.

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

Распространенные сценарии, требующие дополнительных правил

Во всех дополнительных сценариях можно применить теги служб Azure.

Azure DevOps

Классическим задачам PowerShell в Azure DevOps (тег службы: AzureCloud) требуется доступ к кластеру через API клиента. Примеры: развертывания приложений и рабочие задачи. Это не относится только к подходу к шаблонам ARM, включая ресурсы приложения ARM.

Приоритет Имя Порт Протокол Источник Назначение Действие Направление
3915 Azure DevOps 19000 TCP AzureCloud Любое Разрешить Входящий трафик

Обновление Windows

Для исправления операционной системы Windows рекомендуется заменять диск операционной системы автоматическими обновлениями образа ОС. Дополнительные правила не требуются. Приложение для оркестрации исправлений управляет обновлениями в виртуальных машинах, а клиентский компонент Центра обновления Windows применяет исправления операционной системы. Для загрузки двоичных файлов обновлений требуется доступ к Центру загрузки (тег службы: AzureUpdateDelivery).

Приоритет Имя Порт Протокол Источник Назначение Действие Направление
4015 Установка обновлений Windows 443 TCP Любое AzureUpdateDelivery Разрешить Исходящие

Управление API

Для интеграции Управления API Azure (тег службы: ApiManagement) требуется доступ клиентского API к сведениям о конечной точке запроса из кластера.

Приоритет Имя Порт Протокол Источник Назначение Действие Направление
3920 Управление API 19080 TCP Управление API Любое Разрешить Входящий трафик

Сеть для приложений

  • Для запуска рабочих нагрузок контейнера Windows используйте режим открытой сети, чтобы упростить взаимодействие между службами.

  • Используйте обратный прокси-сервер, например Traefik или обратный прокси-сервер Service Fabric, чтобы предоставить распространенные порты для приложений, например 80 или 443.

  • Если у вас размещены контейнеры Windows на машинах без подключения к Интернету, которые не могут запрашивать базовые уровни из облачного хранилища Azure, переопределите поведение внешнего уровня с помощью флага --allow-nondistributable-artifacts в управляющей программе Docker.

Следующие шаги