Service Fabric e contêineres

Introdução

O Azure Service Fabric é uma plataforma de sistemas distribuídos que facilita o empacotamento, a implementação e a gestão de microsserviços e contentores dimensionáveis e fiáveis.

O Service Fabric é o orquestrador de contêineres da Microsoft para a implantação de microsserviços em um cluster de máquinas. O Service Fabric se beneficia das lições aprendidas durante seus anos executando serviços na Microsoft em grande escala.

Os microsserviços podem ser desenvolvidos de muitas formas, desde a utilização dos modelos de programação do Service Fabric e do ASP.NET Core até à implementação de qualquer código à sua escolha. Ou, se você quiser apenas implantar e gerenciar contêineres, o Service Fabric também é uma ótima opção.

Por padrão, o Service Fabric implanta e ativa esses serviços como processos. Os processos fornecem a ativação mais rápida e o uso de maior densidade dos recursos em um cluster. O Service Fabric também pode implantar serviços em imagens de contêiner. Você também pode misturar serviços em processos e serviços em contêineres no mesmo aplicativo.

Para entrar diretamente e experimentar contêineres no Service Fabric, experimente um guia de início rápido, tutorial ou exemplo:

Guia de início rápido: implantar um aplicativo de contêiner Linux no Service Fabric
Guia de início rápido: implantar um aplicativo de contêiner do Windows no Service Fabric
Contentorizar uma aplicação .NET existente
Exemplos de Contentor do Service Fabric

O que são contentores

Os contêineres resolvem o problema de executar aplicativos de forma confiável em diferentes ambientes de computação, fornecendo um ambiente imutável para o aplicativo ser executado. Os contêineres encapsulam um aplicativo e todas as suas dependências, como bibliotecas e arquivos de configuração, em sua própria 'caixa' isolada que contém tudo o que é necessário para executar o software dentro do contêiner. Onde quer que o contêiner seja executado, o aplicativo dentro dele sempre tem tudo o que precisa para ser executado, como as versões corretas de suas bibliotecas dependentes, quaisquer arquivos de configuração e qualquer outra coisa que precise executar.

Os contêineres são executados diretamente sobre o kernel e têm uma visão isolada do sistema de arquivos e de outros recursos. Um aplicativo em um contêiner não tem conhecimento de quaisquer outros aplicativos ou processos fora de seu contêiner. Cada aplicativo e seu tempo de execução, dependências e bibliotecas do sistema são executados dentro de um contêiner com acesso total e privado à exibição isolada do próprio contêiner do sistema operacional. Além de facilitar o fornecimento de todas as dependências do seu aplicativo que ele precisa para ser executado em diferentes ambientes de computação, a segurança e o isolamento de recursos são benefícios importantes do uso de contêineres com o Service Fabric, que de outra forma executa serviços em um processo.

Em comparação com as máquinas virtuais, os contêineres têm as seguintes vantagens:

  • Pequeno: os contêineres usam um único espaço de armazenamento e versões e atualizações em camadas para aumentar a eficiência.
  • Rápido: os contêineres não precisam inicializar um sistema operacional inteiro, então eles podem iniciar muito mais rápido, normalmente em segundos.
  • Portabilidade: uma imagem de aplicativo em contêiner pode ser portada para ser executada na nuvem, no local, dentro de máquinas virtuais ou diretamente em máquinas físicas.
  • Governança de recursos: um contêiner pode limitar os recursos físicos que ele pode consumir em seu host.

Suporte do Service Fabric para contentores

O Service Fabric oferece suporte à implantação de contêineres do Docker no Linux e contêineres do Windows Server no Windows Server 2016 e posterior, além do suporte ao modo de isolamento do Hyper-V.

Tempos de execução de contêiner compatíveis com o ServiceFabric:

  • Linux: Docker
  • Windows:
    • Windows Server 2022: Tempo de execução do contêiner Mirantis
    • Windows Server 2019/2016: DockerEE

Contêineres do Docker no Linux

O Docker fornece APIs para criar e gerenciar contêineres sobre contêineres do kernel Linux. O Docker Hub fornece um repositório central para armazenar e recuperar imagens de contêiner. Para obter um tutorial baseado em Linux, consulte Criar seu primeiro aplicativo de contêiner do Service Fabric no Linux.

Contentores do Windows Server

O Windows Server 2016 e versões posteriores fornecem dois tipos diferentes de contêineres que diferem por nível de isolamento. Os contêineres do Windows Server e do Docker são semelhantes porque ambos têm isolamento de namespace e sistema de arquivos, enquanto compartilham o kernel com o host em que estão sendo executados. No Linux, esse isolamento tem sido tradicionalmente fornecido por cgroups e namespaces, e os contêineres do Windows Server se comportam de forma semelhante.

Os contêineres do Windows com suporte a Hyper-V fornecem mais isolamento e segurança porque nenhum contêiner compartilha o kernel do sistema operacional com qualquer outro contêiner ou com o host. Com esse nível mais alto de isolamento de segurança, os contêineres habilitados para Hyper-V são direcionados a cenários potencialmente hostis e multilocatário. Para obter um tutorial baseado no Windows, consulte Criar seu primeiro aplicativo de contêiner do Service Fabric no Windows.

A figura a seguir mostra os diferentes tipos de virtualização e níveis de isolamento disponíveis. Plataforma do Service Fabric

Cenários para o uso de contêineres

Aqui estão exemplos típicos em que um contêiner é uma boa escolha:

  • Elevação e deslocamento do IIS: você pode colocar um aplicativo MVC de ASP.NET existente em um contêiner em vez de migrá-lo para o ASP.NET Core. Esses ASP.NET aplicativos MVC dependem do IIS (Serviços de Informações da Internet). Você pode empacotar esses aplicativos em imagens de contêiner a partir da imagem pré-criada do IIS e implantá-los com o Service Fabric. Consulte Imagens de contêiner no Windows Server para obter informações sobre contêineres do Windows.

  • Misture contêineres e microsserviços do Service Fabric: use uma imagem de contêiner existente para parte do seu aplicativo. Por exemplo, você pode usar o contêiner NGINX para o front-end da Web do seu aplicativo e serviços com monitoração de estado para a computação back-end mais intensiva.

  • Reduzir o impacto de serviços de "vizinhos barulhentos": você pode usar a capacidade de governança de recursos de contêineres para restringir os recursos que um serviço usa em um host. Se os serviços puderem consumir muitos recursos e afetar o desempenho de outros (como uma operação de longa duração semelhante a uma consulta), considere colocar esses serviços em contêineres com governança de recursos.

Nota

Um cluster do Service Fabric é um único locatário por design e os aplicativos hospedados são considerados confiáveis. Se você estiver pensando em hospedar aplicativos não confiáveis, consulte Hospedando aplicativos não confiáveis em um cluster do Service Fabric.

O Service Fabric fornece um modelo de aplicativo no qual um contêiner representa um host de aplicativo no qual várias réplicas de serviço são colocadas. O Service Fabric também oferece suporte a um cenário executável convidado no qual você não usa os modelos de programação internos do Service Fabric, mas empacota um aplicativo existente, escrito usando qualquer linguagem ou estrutura, dentro de um contêiner. Este cenário é o caso de uso comum para contêineres.

Você também pode executar serviços do Service Fabric dentro de um contêiner. Atualmente, o suporte para executar serviços do Service Fabric dentro de contêineres é limitado.

O Service Fabric fornece vários recursos de contêiner que ajudam a criar aplicativos compostos por microsserviços em contêineres, como:

  • Implantação e ativação de imagens de contêiner.
  • Governança de recursos, incluindo a definição de valores de recursos por padrão em clusters do Azure.
  • Autenticação de repositório.
  • Mapeamento de porta de contêiner para porta de host.
  • Descoberta e comunicação de contêiner para contêiner.
  • Capacidade de configurar e definir variáveis de ambiente.
  • Capacidade de definir credenciais de segurança no contêiner.
  • Uma escolha de diferentes modos de rede para contêineres.

Para obter uma visão geral abrangente do suporte a contêineres no Azure, como criar um cluster Kubernetes com o Serviço Kubernetes do Azure, como criar um registro privado do Docker no Registro de Contêiner do Azure e muito mais, consulte Azure for Containers.

Próximos passos

Neste artigo, você aprendeu sobre o suporte que o Service Fabric fornece para a execução de contêineres. Em seguida, vamos analisar exemplos de cada um dos recursos para mostrar como usá-los.

Crie seu primeiro aplicativo de contêiner do Service Fabric no Linux
Crie seu primeiro aplicativo de contêiner do Service Fabric no Windows
Saiba mais sobre os Contêineres do Windows