Implante PostgreSQL com StackGres no OCI

StackGres é uma distribuição PostgreSQL de pilha completa para Kubernetes, embalada em uma unidade de implantação fácil. O StackGres inclui pool de conexões, backups automatizados, monitoramento, registro em log centralizado e um console web de gerenciamento completo.

StackGres integra o software de alta disponibilidade mais conhecido e testado pela produção para Postgres: Patroni.

  • Ele está totalmente integrado. Se algo falhar, o cluster será ensaiado automaticamente, sem intervenção humana.
  • StackGres expõe uma conexão somente leitura e gravação para os aplicativos, que será atualizada automaticamente após ocorrer qualquer evento disruptivo.

Uma pilha PostgreSQL de nível empresarial precisa de vários outros componentes do ecossistema e ajuste significativo. Ele requer pool de conexões, failover automático e HA, monitoramento, backups e DR. O pacote StackGres e os componentes do Oracle Cloud Infrastructure (OCI) mostrados nesta arquitetura de referência fornecem uma implantação altamente disponível, escalável e de baixo esforço.

Arquitetura

Esta arquitetura mostra como implantar PostgreSQL em um cluster do Oracle Container Engine for Kubernetes. Use esta arquitetura para ambientes prontos para produção que aproveitem os recursos PostgreSQL:

  • Sem restrição de fornecedor: PostgreSQL funciona em qualquer ambiente Kubernetes.
  • Inclui um console web com todos os recursos.
  • A plataforma Postgres tem a maior parte das extensões do mundo.
  • É executado nos nós de trabalho do Kubernetes x86-64 e ARM64.
  • Código-Fonte Aberto Totalmente (sem divisão entre uma "Comunidade" gratuita e uma "Enterprise" dispendiosa).
  • Preços para suporte e atualizações, com base nos núcleos usados.
  • Inclui Postgres "vanilla" e Babelfish (que oferece compatibilidade com SQL Server).

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



A arquitetura tem os seguintes componentes:

stackgres-oci-arch-oracle.zip

  • 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ínio 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.

    Um domínio de disponibilidade é mostrado, mas você pode implantar entre diversos domínios de disponibilidade, dependendo dos requisitos de produçã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.

    Um domínio de falha é mostrado, mas você pode implantar entre vários domínios de falha, dependendo dos requisitos de produção.

  • 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.

  • 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.

  • Serviço Bastion

    O Oracle Cloud Infrastructure Bastion oferece acesso seguro restrito e com tempo limitado a recursos que não têm pontos finais públicos e que exigem controles rígidos de acesso a recursos, como bare metal e máquinas virtuais, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Container Engine for Kubernetes (OKE) e qualquer outro recurso que permita acesso ao Secure Shell Protocol (SSH). Com o serviço Oracle Cloud Infrastructure Bastion, você pode ativar o acesso a hosts privados sem implantar e manter um host de salto. Além disso, você ganha melhor postura de segurança com permissões baseadas em identidade e uma sessão SSH centralizada, auditada e limitada por tempo. O Oracle Cloud Infrastructure Bastion elimina a necessidade de um IP público para acesso bastion, eliminando o incômodo e a potencial superfície de ataque ao fornecer acesso remoto.

  • 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 roteamento dinâmico (DRG)

    O DRG é um roteador virtual que fornece um caminho para o tráfego de rede privada entre VCNs na mesma região, entre uma VCN e uma rede fora da região, como uma VCN em outra região do Oracle Cloud Infrastructure, uma rede local ou uma rede em outro provedor de nuvem.

  • Object Storage

    O armazenamento de objetos oferece acesso rápido a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados analíticos e conteúdo avançado, como imagens e vídeos. Você pode armazenar de forma segura e depois recuperar dados diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento de forma integrada sem prejudicar o desempenho ou a confiabilidade do serviço. Use o armazenamento padrão para armazenamento de acesso frequente que você precisa acessar de forma rápida, imediata e com frequência. Use o armazenamento de arquivos compactados para armazenamento "frio" que você mantém por longos períodos de tempo e raramente acessa.

  • Gateway de Internet

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

  • FastConnect

    O Oracle Cloud Infrastructure FastConnect fornece uma maneira fácil de criar uma conexão privada dedicada entre o seu data center e o Oracle Cloud Infrastructure. FastConnect oferece opções de largura de banda mais alta e uma experiência de rede mais confiável quando comparada com conexões baseadas em internet.

  • Gateway de pareamento local (LPG)

    Um LPG permite que você pareie uma VCN com outra VCN na mesma região. Pareamento significa que as VCNs se comunicam usando endereços IP privados, ou seja, sem o tráfego que passa pela internet ou que é roteado pela sua rede local.

  • Container Engine para Kubernetes

    O Oracle Cloud Infrastructure Container Engine for Kubernetes é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos de contêineres para a nuvem. Você especifica os recursos de computação necessários para os seus aplicativos, e o Container Engine for Kubernetes os provisiona no Oracle Cloud Infrastructure em uma tenancy existente. O Container Engine for Kubernetes usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos de contêineres em clusters de hosts.

  • PostgreSQL

    PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código-fonte aberto (RDBMS) que é altamente extensível e altamente escalável. Ele suporta consulta SQL (relacional) e JSON (não relacional).

  • StackGres

    StackGres é uma distribuição PostgreSQL de pilha completa para Kubernetes, embalada em uma unidade de implantação fácil. Ele inclui um conjunto cuidadosamente selecionado e ajustado de componentes PostgreSQL adjacentes.

  • 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.

  • Proteção contra Negação de Serviço Distribuída (DDoS)

    Os ataques distribuídos de negação de serviço (DDoS) são crimes cibernéticos sérios cometidos por invasores que inundam servidores de empresas com uma quantidade esmagadora de tráfego de entrada. Essa quantidade esmagadora de tráfego vem de inúmeras fontes e geolocalizações, impedindo que os usuários acessem os serviços e sites da empresa. Todos os data centers do Oracle Cloud têm detecção e mitigação de ataques DDoS para ataques de camada 3 ou 4 DDoS de alto volume. Esses serviços de proteção DDoS do Oracle Cloud ajudam a garantir a disponibilidade dos recursos de rede da Oracle mesmo sob ataques sustentados de camada 3 ou 4.

  • Serviço IAM (Identity and Access Management)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) is the access control plane for Oracle Cloud Infrastructure (OCI) and Oracle Cloud Applications. A API do serviço IAM e a interface do usuário permitem que você gerencie domínios de identidades e os recursos dentro do domínio de identidades. Cada domínio de identidades do OCI IAM representa uma solução de gerenciamento de identidades e acesso independente ou outra população de usuários.

  • 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.
  • Auditoria

    O serviço Oracle Cloud Infrastructure Audit registra automaticamente as chamadas para todos os pontos finais suportados da API (application programming interface) pública do Oracle Cloud Infrastructure como eventos de log. Atualmente, todos os serviços suportam os logs do Oracle Cloud Infrastructure Audit.

Recomendações

Use as seguintes recomendações como ponto de partida. 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.

    Usar sub-redes regionais.

  • 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.

  • Largura de banda do balanceador de carga

    Ao criar o balanceador de carga, você pode selecionar uma forma predefinida que forneça uma largura de banda fixa ou especificar uma forma personalizada (flexível) na qual defina uma faixa de largura de banda e permita que o serviço dimensione a largura de banda automaticamente com base nos padrões de tráfego. Com qualquer uma das abordagens, você pode alterar a configuração a qualquer momento após criar o balanceador de carga.

Considerações

Ao implantar essa arquitetura, considere estas opções:

  • Homologação com processadores ARM

    StackGres pode ser executado com ARM (Ampere A1 Compute).

  • Opções de arquitetura

    A arquitetura deste documento é uma sugestão e pode ser alterada de acordo com as necessidades do projeto.

  • Extensões Postgres

    O StackGres tem mais de 130 extensões Postgres que você pode usar.

  • Privilégios de usuário

    Use a melhor prática de segurança de privilégio mínimo: restrinja o acesso da conta aos privilégios root ou de superusuário somente quando realmente for necessário.

  • Monitoramento

    Além dos serviços do OCI, como Eventos do OCI, Registro em Log do OCI e Monitoramento do OCI, você pode usar o Prometheus ou o Grafana para monitoramento.

  • Backups

    StackGres inclui backups contínuos baseados em arquivo, que permitem a recuperação sem perda de dados.

    Os backups são sempre armazenados na mídia mais durável disponível hoje: OCI Object Storage.

Siga estas melhores práticas:

  • Não deixe seu banco de dados exposto à Internet.
  • Se possível, divida seu cluster de aplicativos do cluster usado por Stackgres.
  • Se você quiser criar seu aplicativo no mesmo cluster, a Oracle recomenda enfaticamente que você crie outro namespace para o aplicativo.
  • Ao escolher seu processador Intel, AMD ou ARM, leve em consideração o tamanho da carga de trabalho para não subdimensionar seu ambiente Postgres.

Explorar Mais

Saiba mais sobre como implantar PostgreSQL no OCI.

Revise estes recursos adicionais:

Confirmações

Autor:

  • Luís Eduardo Lannes Silva

Colaborador:

  • Joshua Stanley