Autoscale Oracle Cloud Infrastructure Container Instances

Os aplicativos implantados usando contêineres precisam ser escalados com base na demanda. Por exemplo, um aplicativo de matrícula do aluno precisa ser ampliado à medida que um semestre começa, mas depois é reduzido quando o semestre está em andamento. O Oracle Cloud Infrastructure Container Instances pode hospedar seus aplicativos em contêiner e, em seguida, dimensioná-los automaticamente conforme necessário.

As Instâncias do OCI Container permitem que você execute facilmente aplicativos em uma computação sem servidor otimizada para contêineres. Você também pode iniciar facilmente um ou mais contêineres com flexibilidade para especificar configuração de computação, alocação de recursos, rede e outras configurações opcionais.

Use essa arquitetura de referência para dimensionar automaticamente Instâncias do OCI Container com base na utilização de recursos.

Arquitetura

Essa arquitetura usa uma combinação de serviços de notificação, alarmes e funções da Oracle para dimensionar automaticamente as Instâncias do OCI Container.

O diagrama a seguir ilustra essa arquitetura de referência.



autoscaling-container-instances-diagram-oracle.zip

A arquitetura tem os seguintes componentes:

  • Locação

    Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você acessa o Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de empresa ou organização. Geralmente, uma empresa terá uma única tenancy e refletirá sua estrutura organizacional dentro dessa tenancy. Em geral, uma única tenancy é associada a uma única assinatura e, em geral, uma única assinatura só tem uma tenancy.

  • Região

    Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou até mesmo continentes).

  • Compartimento

    Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.

  • Domínios de disponibilidade

    Domínios de disponibilidade são data centers stand-alone e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, o que oferece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou refrigeração ou a rede interna do domínio de disponibilidade. Portanto, provavelmente uma falha em um domínio de disponibilidade não afetará os outros domínios de disponibilidade da região.

  • Domínio de falha

    Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com potência e hardware independentes. Quando você distribui recursos entre diversos domínios de falha, seus aplicativos podem tolerar falhas físicas no servidor, na manutenção do sistema e na alimentação dentro de um domínio de falha.

  • Rede virtual na nuvem (VCN) e sub-redes

    Uma VCN é uma rede personalizável e definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.

  • Lista de segurança

    Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego que deve ser permitido dentro e fora da sub-rede.

  • Gateway NAT (Network Address Translation)

    Um gateway NAT permite que recursos privados em uma VCN acessem hosts na internet, sem expor esses recursos a conexões de internet de entrada.

  • Gateway de serviço

    O gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle passa pela malha da rede Oracle e nunca atravessa a internet.

  • Gateway de Internet

    O gateway de internet permite tráfego entre as sub-redes públicas em uma VCN e a internet pública.

  • Cloud Guard

    Você pode usar o Oracle Cloud Guard para monitorar e manter a segurança de seus recursos no Oracle Cloud Infrastructure. O Cloud Guard usa receitas do detector que você pode definir para examinar seus recursos em busca de pontos fracos de segurança e para monitorar operadores e usuários em busca de atividades arriscadas. Quando qualquer atividade de configuração incorreta ou insegura é detectada, o Cloud Guard recomenda ações corretivas e ajuda a tomar essas ações, com base nas receitas do respondedor que você pode definir.

  • Balanceador de carga

    O serviço Oracle Cloud Infrastructure Load Balancing fornece distribuição de tráfego automatizada de um único ponto de entrada para vários servidores no back-end.

  • Zona de segurança

    As zonas de segurança garantem desde o início as melhores práticas de segurança da Oracle, impondo políticas como criptografar dados e impedir o acesso público a redes de um compartimento inteiro. Uma zona de segurança está associada a um compartimento com o mesmo nome e inclui políticas de zona de segurança ou uma "receita" que se aplica ao compartimento e seus subcompartimentos. Você não pode adicionar ou mover um compartimento padrão para um compartimento de zona de segurança.

  • Registro

    O Oracle Cloud Infrastructure Registry é um registro gerenciado pela Oracle que permite simplificar seu workflow de desenvolvimento para produção. O registro facilita o armazenamento, o compartilhamento e o gerenciamento de artefatos de desenvolvimento, como imagens do Docker. A arquitetura altamente disponível e escalável do Oracle Cloud Infrastructure garante que você possa implantar e gerenciar seus aplicativos de forma confiável.

  • Log
    O registro em log é um serviço altamente escalável e totalmente gerenciado que oferece acesso aos seguintes tipos de logs de seus recursos na nuvem:
    • Logs de Auditoria: Logs relacionados a eventos emitidos pelo serviço Audit.
    • Logs de serviço: Logs emitidos por serviços individuais, como API Gateway, Events, Functions, Load Balancing, Object Storage e logs de fluxo da VCN.
    • Logs personalizados: Logs que contêm informações de diagnóstico de aplicativos personalizados, outros provedores de nuvem ou um ambiente on-premises.
  • Política

    Uma política do Oracle Cloud Infrastructure Identity and Access Management especifica quem pode acessar quais recursos e como. O acesso é concedido no nível de grupo e compartimento. Isso significa que você pode gravar uma política que dá a um grupo um tipo específico de acesso em um compartimento específico ou à tenancy.

  • Vault

    O Oracle Cloud Infrastructure Vault permite gerenciar centralmente as chaves de criptografia que protegem seus dados e as credenciais secretas usadas para proteger o acesso aos seus recursos na nuvem. Você pode usar o serviço Vault para criar e gerenciar vaults, chaves e segredos.

Recomendações

Use as seguintes recomendações como ponto de partida para criar um ambiente seguro e robusto. Seus requisitos podem ser diferentes da arquitetura descrita aqui.
  • VCN

    Quando você cria uma VCN, determina o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que planeja anexar às sub-redes na VCN. Use blocos CIDR que estão dentro do espaço de endereço IP privado padrão.

    Selecione blocos CIDR que não se sobrepõem a nenhuma outra rede (no Oracle Cloud Infrastructure, no seu data center local ou em outro provedor de nuvem) para a qual você pretende configurar conexões privadas.

    Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.

    Ao projetar as sub-redes, considere seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como limite de segurança.

  • Cloud Guard

    Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do respondedor. Essas receitas permitem especificar que tipo de violações de segurança geram uma advertência e quais ações podem ser executadas nelas. Por exemplo, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.

    Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.

    Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações a detectores.

  • Zonas de Segurança

    Para recursos que exigem segurança máxima, a Oracle recomenda que você use zonas de segurança. Uma zona de segurança é um compartimento associado a uma receita definida pela Oracle de políticas de segurança que se baseiam nas melhores práticas. Por exemplo, os recursos em uma zona de segurança não devem ser acessíveis por meio da internet pública e devem ser criptografados usando chaves gerenciadas pelo cliente. Quando você criar e atualizar recursos em uma zona de segurança, o Oracle Cloud Infrastructure validará as operações com relação às políticas na receita de zona de segurança e negará as operações que violam qualquer uma das políticas.

  • Grupos de Segurança de Rede (NSGs)

    Você pode usar NSGs para definir um conjunto de regras de entrada e saída que se aplicam a VNICs específicas. Recomendamos o uso de NSGs em vez de listas de segurança, pois os NSGs permitem que você separe a arquitetura de sub-rede da VCN dos requisitos de segurança do seu aplicativo.

Considerações

Considere os pontos a seguir ao implantar essa arquitetura de referência.

  • Desempenho

    Essa solução é mais rápida do que criar uma nova instância de contêiner e adicioná-la ao conjunto de backend na própria função, pois não precisamos esperar que a instância de contêiner crie uma chamada de API para retornar o endereço IP da instância de contêiner e adicioná-la ao conjunto de backend do balanceador de carga. O Oracle Cloud Infrastructure Functions tem um limite de execução de cinco minutos para cada chamada.

  • Segurança

    Certifique-se de colocar todas as instâncias de contêiner em uma sub-rede privada e somente o balanceador de carga público na sub-rede pública.

  • Escalabilidade

    Certifique-se de definir o número mínimo e máximo de instâncias de contêiner. Teste a solução totalmente para dimensionar um grande número de instâncias.

  • Custo

    O uso do Oracle Cloud Infrastructure Registry é gratuito. A instância do contêiner incorre em um custo, mas a função só incorre em um custo pelo tempo em que ela está em execução.

Implantar

Siga estas etapas de alto nível para dimensionar automaticamente as instâncias do contêiner.

  1. Crie uma pilha no Oracle Cloud Infrastructure Resource Manager para criar instâncias de contêiner, criar um balanceador de carga e adicionar as instâncias de contêiner ao conjunto de backend do balanceador de carga usando o IP da instância de contêiner.
  2. Crie a pilha para que ela obtenha os seguintes parâmetros:
    • Compartment_OCID
    • Region
    • Tenancy_OCID
    • Container_Instances_Count
    • Is_Public_IP_Assigned
    • Container_instance_registry_secret
    • Container_Instance_Image_URL
    • Private_Subnet_OCID
    • Public_Subnet_OCID
  3. Crie uma função Oracle que leia Container_Instance_Count na pilha do Resource Manager acima e atualize-a com base na chamada de expansão ou redução necessária das instâncias do contêiner.
  4. Depois que o Container_Instance_Count for atualizado na função Oracle, aplique a pilha do Terraform no Resource Manager com o Container_Instance_Count atualizado; em seguida, saia da função.
    A pilha do Resource Manager se preocupa em adicionar ou encerrar a instância do contêiner do OCI com base na chamada e a adiciona ou remove do conjunto de backend do balanceador de carga.
  5. Adicione as seguintes configurações à sua função Oracle:
    • Min_Container_Instance
    • Max_Container_Instance
    • Compartment_ID
    • Resource_Manager_Stack_ID
  6. Envie a imagem de função Oracle recém-criada para o Oracle Cloud Infrastructure Registry (OCIR).
  7. Crie um Tópico em serviços de notificação e forneça um nome apropriado.
  8. Crie uma assinatura no tópico criado e selecione a função como o protocolo.

    Observação:

    Selecione a função que você criou selecionando o compartimento e o aplicativo corretos.
  9. Crie uma definição de alarme no namespace oci_computecontainerinstance.
    1. Selecione CPU_utilization ou Mem_Utilization como a Métrica.
    2. Selecione o nome da Instância do Contêiner como a dimensão.
    3. Defina o limite necessário para o Alarme como Fogo.
  10. Teste essa arquitetura de dimensionamento automático para ampliar e reduzir Instâncias do OCI Container.

Explorar Mais

Saiba mais sobre Instâncias do OCI Container.

Revise estes recursos adicionais:

Confirmações

Authors: Christophe Pruvost, Karthic Ravindran, Chandrashekar Avadhani

Contributors: John Sulyok