Service Fabric и контейнеры

Введение

Azure Service Fabric — это платформа распределенных систем, которая дает возможность не только легко упаковывать и развертывать масштабируемые надежные микрослужбы и контейнеры, но и управлять ими.

Service Fabric — это оркестратор контейнеров корпорации Майкрософт, который развертывает микрослужбы в кластере виртуальных машин. Service Fabric развивается с учетом опыта многолетнего выполнения служб корпорации Майкрософт в крупном масштабе.

Микрослужбы можно разрабатывать различными способами — от использования моделей программирования Service Fabric и ASP.NET Core до развертывания любого кода на ваш выбор. Если же вам нужно просто развертывать контейнеры и управлять ими, Service Fabric идеально подойдет и для этого.

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

Чтобы приступить к работе и попробовать контейнеры в Service Fabric, ознакомьтесь с кратким руководством, полным руководством или примером:

Краткое руководство. Развертывание контейнеров Linux в Service Fabric
Краткое руководство. Развертывание контейнеров Windows в Service Fabric
Контейнеризация существующего приложения .NET
Примеры контейнеров Service Fabric

Сведения о контейнерах

Контейнеры надежно решают проблему выполнения приложений в различных вычислительных средах путем предоставления неизменяемой среды для работы приложения. Контейнеры помещают приложение и все его зависимости, такие как библиотеки и файлы конфигурации, в собственную изолированную оболочку, которая содержит все необходимое для выполнения программного обеспечения в контейнере. Где бы не работал контейнер, приложение внутри всегда имеет все необходимое для выполнения, например правильные версии зависимых библиотек, какие-либо файлы конфигурации и все остальное.

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

По сравнению с виртуальными машинами использование контейнеров связано со следующими преимуществами.

  • Небольшой размер. Контейнеры используют единое дисковое пространство, версию уровней и обновления для повышения эффективности.
  • Быстрота. Контейнерам не нужно загружать всю операционную систему, так что они запускаются значительно быстрее, — обычно через несколько секунд.
  • Переносимость. Образ контейнерного приложения можно перенести и запустить в облачной или локальной среде, на виртуальных машинах или непосредственно на физических компьютерах.
  • Возможность управления ресурсами. Можно ограничивать физические ресурсы, которые контейнер может использовать на узле.

Поддержка Service Fabric для контейнеров

Service Fabric поддерживает развертывание контейнеров Docker в Linux и контейнеров Windows Server в Windows Server 2016 и более поздних версий, а также режим изоляции Hyper-V.

Среды выполнения контейнеров, совместимые со ServiceFabric:

  • Linux: Docker
  • Windows:
    • Windows Server 2022: среда выполнения контейнеров Mirantis
    • Windows Server 2019/2016: DockerEE

Контейнеры Docker в Linux

Docker предоставляет API-интерфейсы для создания контейнеров и управления ими поверх контейнеров из ядер Linux. Docker Hub — это центральный репозиторий для хранения и извлечения образов контейнеров. Руководство для Linux см. в статье Создание первого приложения-контейнера Service Fabric в Linux.

Контейнеры Windows Server

Windows Server 2016 и более поздних версий поддерживает два типа контейнеров, которые отличаются уровнем изоляции. Как и в контейнерах Docker, в контейнерах Windows Server предусмотрена изоляция пространства имен и файловой системы. Эти контейнеры совместно используют ядро и узел, на котором выполняются. В Linux эта изоляция обычно обеспечивается с помощью cgroups и пространств имен. У контейнеров Windows Server все аналогично.

Контейнеры Windows с поддержкой Hyper-V обеспечивают более высокую степень изоляции и безопасности, так как контейнер не использует ядро операционной системы совместно с любым другим контейнером или узлом. Благодаря высокому уровню изоляции и безопасности контейнеры с поддержкой Hyper-V предназначены для потенциально неблагоприятных мультитенантных сред. Руководство для Windows см. в статье Создание первого контейнера-приложения Service Fabric в Windows.

На рисунке ниже показаны различные доступные типы уровней изоляции и виртуализации. Платформа Service Fabric

Сценарии использования контейнеров

Ниже представлены распространенные примеры использования контейнеров.

  • Быстрая загрузка и удаление IIS. Имеющееся приложение ASP.NET MVC можно поместить в контейнер вместо переноса в ASP.NET Core. Эти приложения ASP.NET MVC зависят от служб Internet Information Services (IIS). Приложения можно упаковать в образ контейнера из предварительно созданного образа IIS и развернуть с помощью Service Fabric. Дополнительные сведения о контейнерах Windows см. в статье Образы контейнеров в Windows Server.

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

  • Сокращение влияния "шумных соседей". Возможности управления, предоставляемые контейнерами, можно использовать для ограничения ресурсов, используемых службой на узле. Службы, которые используют много ресурсов и таким образом влияют на производительность других служб (например, выполняют длительные запросы), рекомендуется поместить в контейнеры с возможностью управления ресурсами.

Примечание

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

Service Fabric предоставляет модель приложения, в которой контейнер представляет собой узел приложения, где размещаются несколько реплик службы. Service Fabric также поддерживает гостевой исполняемый сценарий, в котором не используются встроенные модели программирования Service Fabric. Вместо этого имеющееся приложение, написанное с использованием любого языка или платформы, помещается в контейнер. Это распространенный вариант использования для контейнеров.

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

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

  • развертывание и активация образа контейнера;
  • управление ресурсами, в том числе настройка значений ресурсов по умолчанию для кластеров Azure;
  • проверка подлинности репозитория;
  • сопоставление порта контейнера с портом узла;
  • межконтейнерное обнаружение и взаимодействие;
  • возможность настройки и установки переменных среды.
  • возможность настроить учетные данные безопасности для контейнера;
  • выбор различных сетевых режимов для контейнеров.

Подробный обзор поддержки контейнера в Azure, например, сведения о создании кластера Kubernetes со Службой Azure Kubernetes, создании частного реестра Docker в службе "Реестр контейнеров Azure" и многом другом, см. в статье Azure для контейнеров.

Дальнейшие действия

В этой статье вы узнали о поддержке выполнения контейнеров в Service Fabric. Теперь можно переходить к изучению примеров использования каждой функции.

Создание первого приложения-контейнера Service Fabric в Linux
Создание первого контейнера-приложения Service Fabric в Windows
Дополнительные сведения о контейнерах Windows