Przejmij kontrolę nad bazą danych za pomocą operatorów Kubernetes

Kontynuacja po reklamie..

Gerenciar aplicações com estado, como bancos de dados no Kubernetes, pode ser um desafio. Os operadores agrupam conhecimento prático em soluções que automatizam tarefas gerenciais.

Usar o operador MySQL simplifica a implantação e expansão de um cluster MySQL pronto para produção. Ele também permite alta disponibilidade replicando pods que hospedam o banco de dados e permite backups e recuperação.

Cluster InnoDB

Kontynuacja po reklamie..

Haroon Khan é um profissional de dados que cria e mantém bancos de dados que oferecem suporte a aplicativos de alto desempenho. Ele tem mais de uma década de experiência com diversas tecnologias, incluindo MySQL, Microsoft SQL Server, DB2 e ferramentas de código aberto.

Ele é apaixonado por ajudar as empresas a adotar uma arquitetura de dados moderna que possa lidar com extensos requisitos de dados. O InnoDB Cluster é um componente crítico nesse esforço, oferecendo melhor escalabilidade de gravação. No entanto, implementá-lo pode ser um desafio se você precisar se familiarizar com seus diversos componentes.

Kontynuacja po reklamie..

Além disso, pode exigir várias ferramentas para gerenciar a topologia. Esta solução pode não ser adequada para sua aplicação se você não quiser investir no tempo de desenvolvimento/integração/teste de cada tecnologia. É aqui que brilha a bússola Kubernetes de Haroon.

Ele acredita que dimensionar seu MySQL com InnoDB Cluster deve ser separado do dimensionamento de sua complexidade. É por isso que ele defende a integração com o MySQL Operator Kubernetes. Essa combinação poderosa combina o poder do Cluster InnoDB com a elegância do Kubernetes, simplificando o gerenciamento e a orquestração de uma só vez.

Ogłoszenie

Se uma instância for reiniciada, ela sairá do grupo e precisará ingressar novamente no grupo para ser adicionada novamente ao conjunto de réplicas padrão. Para juntar novamente um exemplo, você pode usar o comando cluster.rejoinInstance(), que usa um URI como parâmetro. Este comando garante que a instância esteja ONLINE e possa ser incluída no grupo.

Ele também verifica se não é um Split Brain (comparando seus GTIDs executados com GTIDs executados/purgados de outros membros ONLINE). O comando poderá falhar se uma instância estiver inacessível, mas você poderá tentar novamente mais tarde.

PodDisruptionBudget

Kontynuacja po reklamie..

Um orçamento de interrupção de pod (PDB) especifica o número mínimo ou a porcentagem de pods em uma coleção que deve estar sempre ativa. É uma ferramenta valiosa ao lidar com aplicativos que exigem alta disponibilidade, como aplicativos baseados em quórum ou front-ends da Web.

Os orçamentos de interrupção de pod ajudam a garantir que as operações do nó apenas reduzirão seu serviço ao drenar simultaneamente algumas instâncias de pod. Eles trabalham junto com o Horizontal Pod Autoscaler para proteger contra tempo de inatividade desnecessário na implantação.

Para usar um PDB, você precisa criar um arquivo YAML definindo a disponibilidade desejada para sua aplicação. Você também pode definir um objeto PodDisruptionBudgetStatus para rastrear o status atual do seu PDB. Isso pode ser útil ao lidar com situações variáveis, pois o status do seu PDB pode ficar atrás do estado real.

Os orçamentos de interrupção de pod são úteis para aplicativos que precisam manter sua disponibilidade enquanto ocorrem atualizações de cluster. Por exemplo, uma empresa de telecomunicações pode querer garantir que seus serviços VoIP permaneçam disponíveis durante a manutenção ou aplicação de patches do sistema.

Isso permite que as telecomunicações implementem recursos que podem melhorar a experiência do usuário final sem sacrificar a disponibilidade. O PodDisruptionBudget também é útil para provedores de software como serviço (SaaS) que devem equilibrar a disponibilidade com atualizações e manutenção do sistema. Isso é especialmente verdadeiro quando um provedor de SaaS precisa manter a disponibilidade enquanto lança um novo recurso ou implanta atualizações em seu serviço.

Conjuntos de réplicas

ReplicationSets são objetos de controle do Kubernetes que mantêm um número especificado de réplicas de pod. Eles são excelentes para lidar com necessidades simples de escalabilidade e podem ajudar a garantir alta disponibilidade e resiliência.

Os ReplicaSets também podem lidar com alterações no estado desejado, como a falha de um pod ou a exclusão manual de um pod, criando novos pods para substituí-los ou encerrando réplicas em excesso para trazer o sistema de volta ao estado desejado.

Os ReplicaSets são configurados em um arquivo de manifesto YAML, incluindo especificações para o número de réplicas e o modelo de pod. Eles também oferecem suporte ao uso de rótulos de pod para identificar e selecionar os pods que gerenciam.

Por exemplo, um ReplicationSet poderia adquirir todos os pods com a camada de rótulo em (frontend) e o ambiente em (prod). Um ReplicationSet também pode rastrear alterações no estado desejado observando o oplog ou o log de preocupação de gravação primária.

Quando um primário falha em um conjunto de réplicas, o secundário que opta por se tornar o novo primário se atualiza aplicando as operações registradas no log aos seus conjuntos de dados. Além disso, um ReplicaSet pode pré-aquecer os caches de réplicas secundárias elegíveis, espelhando consultas de leitura.

Isto reduz o impacto das eleições primárias após uma interrupção primária ou durante a manutenção planeada. Os ReplicaSets também podem ser implantados em vários nós e zonas de disponibilidade para aprimorar a redundância.

Cópias de segurança

Existem muitas soluções para executar bancos de dados com estado no Kubernetes, mas a maioria precisa de recursos de segundo dia, como backups e atualizações.

Os operadores Kubernetes preenchem essa lacuna automatizando e simplificando operações complexas e específicas de domínio, incluindo implantação, dimensionamento e atualização de bancos de dados.

Os melhores operadores MySQL são projetados para serem totalmente integrados às ferramentas de infraestrutura como código e pipelines de CI/CD existentes para permitir implantações de banco de dados escaláveis, seguras e prontas para produção.

O MySQL Operator da Oracle é uma solução de autocorreção que oferece suporte a clusters MySQL InnoDB em Kubernetes. Ele usa um StatefulSet do Kubernetes para gerenciar instâncias do servidor MySQL e atribui a elas um PersistentVolumeChain para armazenamento.

A operadora também implanta um pod roteador MySQL para rotear consultas por meio do cluster. O operador está atualmente em disponibilidade geral e distribuído sob uma licença universalmente permissiva próxima à licença do MIT.

O Bitpoke MySQL Operator é um operador MySQL de código aberto e fácil de usar para Kubernetes que instala apenas Helm e Kubectl. Ele foi projetado para ser uma solução simples, estável e pronta para produção para Kubernetes que fornece monitoramento, replicação, backup, atualização e outros recursos. O operador usa um arquivo YAML declarativo para implantar e dimensionar clusters MySQL no Kubernetes.

Ao contrário de um procedimento armazenado tradicional, a abstração do Nova-conductor impede o acesso direto ao banco de dados. Isso reduz o risco de ataques aos dados. No entanto, ainda é possível atacar o banco de dados através de buffer overflows, vazamentos de memória e programas de software maliciosos.

Rolar para cima