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 в контейнере Windows в Azure Service Fabric
Примеры контейнеров 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.
На рисунке ниже показаны различные доступные типы уровней изоляции и виртуализации.
Сценарии использования контейнеров
Ниже представлены распространенные примеры использования контейнеров.
Быстрая загрузка и удаление 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