Manter uma implantação do Spanner Omni

Este documento explica como manter uma implantação do Spanner Omni. A manutenção de uma implantação do Spanner Omni inclui verificações de integridade de rotina, desativação de elementos não íntegros e substituição de nós de servidor ou discos com falha para garantir a estabilidade e a consistência do cluster. O gerenciamento da integridade do banco de dados protege seus bancos de dados contra interrupções não planejadas e mantém a redundância do grupo de consenso do Paxos subjacente.

A manutenção ajuda você a:

  • Garantir alta disponibilidade: provisione novamente máquinas virtuais (VMs) ou pods não íntegros para manter a redundância do servidor de banco de dados. Isso ajuda a manter seus aplicativos em execução em caso de falha de hardware.

  • Proteger a segurança e a integridade dos dados: desative nós com discos com falha para evitar que falhas de armazenamento se espalhem para outras partes do banco de dados. Isso também garante que servidores desconectados não gravem atualizações conflitantes.

Antes de começar

Antes de realizar a manutenção na implantação do Kubernetes, faça o seguinte:

Substituir um servidor

Talvez seja necessário substituir um servidor na implantação para resolver falhas de sistema ou armazenamento.

Substituir um servidor raiz

Para substituir um servidor raiz, selecione a guia do seu ambiente:

Kubernetes

Para substituir um servidor raiz em uma implantação do Kubernetes, siga estas etapas. Embora não seja possível adicionar mais servidores raiz a uma implantação do Kubernetes, você pode substituir os servidores raiz atuais para resolver erros irrecuperáveis.

  1. Exclua o servidor que você quer substituir:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Substitua:

    • SERVER_ENDPOINT: o endpoint do pod do servidor a ser excluído, no formato SERVER.pod.NAMESPACE:PORT. Por exemplo, spanner-a-1.pod.spanner-ns:15000. Para encontrar os endpoints do servidor na implantação, liste os servidores de implantação executando spanner deployment servers list --zone=ZONE.
    • ZONE: a zona que contém o servidor. Por exemplo, us-central1-a.

    Essa etapa pode levar alguns minutos, dependendo do volume de dados no servidor. O Spanner Omni realoca os dados desse servidor para outros servidores na implantação. Verifique se a exclusão do servidor foi concluída antes de prosseguir para a próxima etapa.

    Para acompanhar o progresso da exclusão, verifique o status do servidor:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Aguarde até que o comando retorne um erro NOT_FOUND ou indique que o servidor não está mais registrado.

  2. Exclua a declaração de volume permanente (PVC) do pod que hospeda o servidor:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Substitua:

    • DATA_VOLUME_NAME: o nome do volume de dados. Por exemplo, data-volume-spanner-a-1. Para encontrar o nome do volume de dados, liste os PVCs no namespace executando kubectl get pvc -n NAMESPACE.
    • NAMESPACE: o namespace da implantação. Por exemplo, spanner-ns.
  3. Exclua o pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Substitua POD_NAME pelo nome do pod do servidor a ser excluído. Por exemplo, spanner-a-1.

    O Kubernetes inicia automaticamente um novo servidor em um pod de substituição e anexa um novo PVC.

  4. Adicione o novo servidor à implantação:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Verifique se os argumentos correspondem ao novo endpoint e à zona do pod. Por exemplo, usando spanner-a-1.pod.spanner-ns:15000 como o endpoint e us-central1-a como a zona.

VM

Para substituir um servidor raiz em uma implantação de VM, siga estas etapas:

  1. Exclua o servidor que você quer substituir:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Substitua:

    • SERVER_ENDPOINT: o endereço IP ou o nome do host e a porta do servidor. Por exemplo, spanner-vm-1.example.com:15000. Para encontrar os endpoints do servidor, liste os servidores de implantação executando spanner deployment servers list --zone=ZONE.
    • ZONE: a zona que contém o servidor. Por exemplo, us-central1-a.

    Essa etapa pode levar alguns minutos, dependendo do volume de dados no servidor. O Spanner Omni realoca os dados desse servidor para outros servidores na implantação. Verifique se a exclusão do servidor foi concluída antes de prosseguir para a próxima etapa.

    Para acompanhar o progresso da exclusão, verifique o status do servidor:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Aguarde até que o comando retorne um erro NOT_FOUND ou indique que o servidor não está mais registrado.

  2. Provisione novamente o servidor com armazenamento limpo, conforme explicado em Criar uma implantação do Spanner Omni em VMs:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    Substitua:

    • HOSTNAME: o FQDN ou nome do host resolvível da nova VM. Por exemplo, spanner-vm-1.example.com.
    • ZONE: a zona de destino. Por exemplo, us-central1-a.
    • BASE_DIR: o caminho em que os dados são armazenados. Por exemplo, ./span-dir.
  3. Adicione o novo servidor à implantação:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Verifique se os argumentos correspondem aos parâmetros do novo servidor. Por exemplo, usando spanner-vm-1.example.com:15000 como o endpoint e us-central1-a como a zona.

Substituir um servidor não raiz

Para substituir um servidor não raiz, selecione a guia do seu ambiente:

Kubernetes

Para substituir um servidor não raiz em uma implantação do Kubernetes, siga estas etapas:

  1. Exclua o servidor que você quer substituir:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Substitua:

    • SERVER_ENDPOINT: o endpoint do pod do servidor a ser excluído, no formato SERVER.pod.NAMESPACE:PORT. Por exemplo, spanner-a-4.pod.spanner-ns:15000. Para encontrar os endpoints do servidor na implantação, liste os servidores de implantação executando spanner deployment servers list --zone=ZONE.
    • ZONE: a zona que contém o servidor. Por exemplo, us-central1-a.

    Essa etapa pode levar alguns minutos, dependendo do volume de dados no servidor. O Spanner Omni realoca os dados desse servidor para outros servidores na implantação. Verifique se a exclusão do servidor foi concluída antes de prosseguir para a próxima etapa.

    Para acompanhar o progresso da exclusão, verifique o status do servidor:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Aguarde até que o comando retorne um erro NOT_FOUND ou indique que o servidor não está mais registrado.

  2. Exclua a declaração de volume permanente (PVC) do pod que hospeda o servidor:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Substitua:

    • DATA_VOLUME_NAME: o nome do volume de dados. Por exemplo, data-volume-spanner-a-4. Para encontrar o nome do volume de dados, liste os PVCs no namespace executando kubectl get pvc -n NAMESPACE.
    • NAMESPACE: o namespace da implantação. Por exemplo, spanner-ns.
  3. Exclua o pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Substitua POD_NAME pelo nome do pod do servidor a ser excluído. Por exemplo, spanner-a-4.

    O Kubernetes inicia automaticamente um novo servidor em um pod de substituição e anexa um novo PVC. O Spanner Omni registra automaticamente o novo servidor não raiz na implantação.

VM

Para substituir um servidor não raiz em uma implantação de VM, siga estas etapas:

  1. Exclua o servidor que você quer substituir:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Substitua:

    • SERVER_ENDPOINT: o endereço IP ou o nome do host e a porta do servidor. Por exemplo, spanner-vm-4.example.com:15000. Para encontrar os endpoints do servidor, liste os servidores de implantação executando spanner deployment servers list --zone=ZONE.
    • ZONE: a zona que contém o servidor. Por exemplo, us-central1-a.

    Essa etapa pode levar alguns minutos, dependendo do volume de dados no servidor. O Spanner Omni realoca os dados desse servidor para outros servidores na implantação. Verifique se a exclusão do servidor foi concluída antes de prosseguir para a próxima etapa.

    Para acompanhar o progresso da exclusão, verifique o status do servidor:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Aguarde até que o comando retorne um erro NOT_FOUND ou indique que o servidor não está mais registrado.

  2. Provisione novamente o servidor não raiz com armazenamento limpo, conforme explicado em Adicionar servidores não raiz. O servidor é adicionado automaticamente à implantação.

Próximas etapas