Partilhar via


Tutorial: Configurar um grupo de disponibilidade Always On de três nós com o HPE Serviceguard para Linux

Aplica-se a:SQL Server em Linux

Este tutorial explica como configurar grupos de disponibilidade do SQL Server com o HPE Serviceguard para Linux, em execução em máquinas virtuais (VMs) locais ou em máquinas virtuais baseadas no Azure.

Consulte Clusters HPE Serviceguard para obter uma visão geral dos clusters HPE Serviceguard.

Observação

A Microsoft oferece suporte à movimentação de dados, ao grupo de disponibilidade e aos componentes do SQL Server. Entre em contato com a HPE para obter suporte relacionado à documentação do cluster HPE Serviceguard e ao gerenciamento de quórum.

Este tutorial consiste nas seguintes tarefas:

  • Instalar o SQL Server em todas as três VMs que farão parte do grupo de disponibilidade
  • Instalar o HPE Serviceguard nas VMs
  • Criar o cluster HPE Serviceguard
  • Criar o balanceador de carga no portal do Azure
  • Criar o grupo de disponibilidade e adicionar um banco de dados de exemplo ao grupo de disponibilidade
  • Implantar a carga de trabalho do SQL Server no grupo de disponibilidade por meio do gerenciador de cluster do Serviceguard
  • Execute um failover automático e junte o nó de volta ao cluster

Pré-requisitos

  • No Azure, crie três VMs baseadas em Linux (Máquinas Virtuais). Para criar máquinas virtuais baseadas em Linux no Azure, consulte Guia de início rápido: criar máquina virtual Linux no portal do Azure. Ao implantar as VMs, certifique-se de usar distribuições Linux suportadas pelo HPE Serviceguard. Você também pode implantar as VMs localmente em um ambiente local, se preferir.

    Para obter um exemplo de uma distribuição suportada, consulte HPE Serviceguard para Linux. Consulte a HPE para obter informações sobre o suporte para ambientes de nuvem pública.

    As instruções neste tutorial são validadas em relação ao HPE Serviceguard para Linux. Uma edição de avaliação está disponível para download na HPE.

  • Arquivos de banco de dados do SQL Server em montagem de volume lógico (LVM) para todas as três máquinas virtuais. Consulte Guia de início rápido do Serviceguard Linux (HPE)

  • Certifique-se de ter um tempo de execução Java OpenJDK instalado nas VMs. O IBM Java SDK não é suportado.

Instalar o SQL Server

Em todas as três VMs, siga uma das etapas abaixo com base na distribuição Linux escolhida para este tutorial, para instalar o SQL Server e as ferramentas.

Red Hat Enterprise Linux (RHEL)

Servidor SUSE Linux Enterprise (SLES)

Depois de concluir esta etapa, você deve ter o serviço e as ferramentas do SQL Server instalados em todas as três VMs que participarão do grupo de disponibilidade.

Instalar o HPE Serviceguard nas VMs

Nesta etapa, instale o HPE Serviceguard para Linux em todas as três VMs. A tabela a seguir descreve a função que cada servidor desempenha no cluster.

Número de VMs Função HPE Serviceguard Função de réplica do grupo de disponibilidade do Microsoft SQL Server
1 Nós de cluster do HPE Serviceguard Réplica primária
1 ou mais Nó do cluster HPE Serviceguard Réplica secundária
1 Servidor de quórum HPE Serviceguard Réplica apenas de configuração

Para instalar o Serviceguard, use o cminstaller método. Instruções específicas estão disponíveis nos seguintes links:

Depois de concluir a instalação do cluster HPE Serviceguard, você pode habilitar o portal de gerenciamento de cluster na porta TCP 5522 no nó da réplica primária. As etapas a seguir adicionam uma regra ao firewall para permitir 5522. O comando a seguir é para um Red Hat Enterprise Linux (RHEL). Você precisa executar comandos semelhantes para outras distribuições:

sudo firewall-cmd --zone=public --add-port=5522/tcp --permanent
sudo firewall-cmd --reload

Criar cluster HPE Serviceguard

Siga estas instruções para configurar e criar o cluster HPE Serviceguard. Nesta etapa, você também configurará o servidor de quorum.

  1. Configure o servidor de quorum do Serviceguard no terceiro nó. Consulte a secção Configure_QS .
  2. Configure e crie um cluster do Serviceguard nos outros dois nós. Consulte a secção Configure_and_create_Cluster .

Observação

Você pode ignorar a instalação manual do cluster e do quórum do HPE Serviceguard, adicionando a extensão HPE Serviceguard for Linux (SGLX) do mercado de VM do Azure, ao criar sua VM.

Criar o grupo de disponibilidade e adicionar um banco de dados de exemplo

Nesta etapa, crie um grupo de disponibilidade com duas (ou mais) réplicas síncronas e uma réplica somente de configuração, que fornece proteção de dados e também pode fornecer alta disponibilidade. O diagrama a seguir representa essa arquitetura:

Diagrama mostrando réplica primária sincronizando dados do usuário e dados de configuração com réplica secundária. A réplica somente de configuração sincroniza apenas os dados de configuração.

  1. Replicação síncrona de dados do usuário para a réplica secundária. Ele também inclui metadados de configuração do grupo de disponibilidade.

  2. Replicação síncrona de metadados de configuração do grupo de disponibilidade. Ele não inclui dados do usuário.

Para obter mais informações, consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.

Para criar o grupo de disponibilidade, siga estes passos:

  1. Habilite grupos de disponibilidade e reinicie o mssql-server em todas as VMs, incluindo a réplica Configuração somente.
  2. Ativar uma sessão de AlwaysOn_health evento (opcional)
  3. Criar um certificado na VM primária
  4. Criar o certificado em servidores secundários
  5. Criar os endpoints de espelhamento de base de dados nas réplicas
  6. Criar grupo de disponibilidade
  7. Junte-se às réplicas secundárias
  8. Adicionar um banco de dados ao grupo de disponibilidade

Habilite grupos de disponibilidade e reinicie o mssql-server

Habilite grupos de disponibilidade em todos os nós que hospedam uma instância do SQL Server. Em seguida, reinicie o mssql-server. Execute o seguinte script em todos os três nós:

sudo /opt/mssql/bin/mssql-conf
set hadr.hadrenabled 1 sudo systemctl restart mssql-server

Ativar sessão de evento AlwaysOn_health (opcional)

Pode, opcionalmente, habilitar os eventos estendidos dos grupos de disponibilidade Always On para ajudar no diagnóstico da causa raiz ao resolver problemas de um grupo de disponibilidade. Execute o seguinte comando em cada instância do SQL Server:

ALTER EVENT SESSION AlwaysOn_health ON SERVER
WITH
(
        STARTUP_STATE = ON
);
GO

Criar um certificado na VM primária

O script Transact-SQL a seguir cria uma chave mestra e um certificado. Em seguida, ele faz backup do certificado e protege o arquivo com uma chave privada. Atualize o script com senhas fortes. Conecte-se à instância primária do SQL Server e execute o seguinte script Transact-SQL:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';

CREATE CERTIFICATE dbm_certificate
    WITH SUBJECT = 'dbm';

BACKUP CERTIFICATE dbm_certificate TO FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        ENCRYPTION BY PASSWORD = '<private-key-password>'
);

Neste ponto, a réplica primária do SQL Server tem um certificado em /var/opt/mssql/data/dbm_certificate.cer e uma chave privada em var/opt/mssql/data/dbm_certificate.pvk. Copie esses dois arquivos para o mesmo local em todos os servidores que hospedam réplicas de disponibilidade. Use o mssql usuário ou dê permissão ao mssql usuário para acessar esses arquivos.

Por exemplo, no servidor de origem, o comando a seguir copia os arquivos para a máquina de destino. Substitua os node2 valores pelo nome do host que executa a instância secundária do SQL Server. Copie o certificado na réplica de configuração apenas e execute os comandos abaixo nesse nó também.

cd /var/opt/mssql/data
scp dbm_certificate.* root@<node2>:/var/opt/mssql/data/

Agora, nas VMs secundárias que executam a instância secundária e a réplica somente de configuração do SQL Server, execute os comandos abaixo para que o mssql usuário possa possuir o certificado copiado:

cd /var/opt/mssql/data
chown mssql:mssql dbm_certificate.*

Criar o certificado em servidores secundários

O script Transact-SQL a seguir cria uma chave mestra e um certificado do backup que você criou na réplica primária do SQL Server. Atualize o script com senhas fortes. A palavra-passe de desencriptação é a mesma palavra-passe que usou para criar o ficheiro .pvk num passo anterior. Para criar o certificado, execute o seguinte script em todos os servidores secundários, exceto na réplica somente de configuração:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';

CREATE CERTIFICATE dbm_certificate
    FROM FILE = '/var/opt/mssql/data/dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = '/var/opt/mssql/data/dbm_certificate.pvk',
        DECRYPTION BY PASSWORD = '<private-key-password>'
);

No exemplo anterior, substitua <private-key-password> pela mesma senha usada ao criar o certificado na réplica primária.

Criar os endpoints de espelhamento da base de dados nas réplicas

Nas réplicas primária e secundária, execute os comandos abaixo para criar os endpoints de espelhamento:

CREATE ENDPOINT [hadr_endpoint]
    AS TCP
(
            LISTENER_PORT = 5022
)
    FOR DATABASE_MIRRORING
(
            ROLE = WITNESS,
            AUTHENTICATION = CERTIFICATE dbm_certificate,
            ENCRYPTION = REQUIRED ALGORITHM AES
);

ALTER ENDPOINT [hadr_endpoint]
    STATE = STARTED;

Observação

5022 é a porta padrão usada para o endpoint de espelhamento de base de dados. No entanto, pode alterá-la para qualquer porta disponível.

Na réplica somente de configuração, crie o ponto de extremidade de espelhamento de banco de dados usando o comando abaixo, e observe que o valor para a função está definido como WITNESS, como deve ser para a réplica somente de configuração.

CREATE ENDPOINT [hadr_endpoint]
    AS TCP
(
            LISTENER_PORT = 5022
)
    FOR DATABASE_MIRRORING
(
            ROLE = WITNESS,
            AUTHENTICATION = CERTIFICATE dbm_certificate,
            ENCRYPTION = REQUIRED ALGORITHM AES
);

ALTER ENDPOINT [hadr_endpoint]
    STATE = STARTED;

Criar grupo de disponibilidade

Na instância de réplica primária, execute os seguintes comandos. Esses comandos criam um grupo de disponibilidade chamado ag1, que tem um EXTERNO cluster_type e concede permissão de criação de banco de dados ao grupo de disponibilidade.

Antes de executar os scripts a seguir, substitua os marcadores de posição <node1>, <node2> e <node3> (réplica somente de configuração) pelo nome das VMs criadas nas etapas anteriores.

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = EXTERNAL)
    FOR REPLICA ON
    N'<node1>' WITH (
        ENDPOINT_URL = N'tcp://<node1>:<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node2>' WITH (
        ENDPOINT_URL = N'tcp://<node2>:\<5022>',
        AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
        FAILOVER_MODE = EXTERNAL,
        SEEDING_MODE = AUTOMATIC
        ),

    N'<node3>' WITH (
        ENDPOINT_URL = N'tcp://<node3>:<5022>',
        AVAILABILITY_MODE = CONFIGURATION_ONLY
        );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Junte-se às réplicas secundárias

Execute os seguintes comandos em todas as réplicas secundárias. Esses comandos unem as réplicas secundárias ao grupo de disponibilidade que contém a ag1 réplica primária, e fornecem acesso para criar banco de dados ao grupo de disponibilidade ag1.

ALTER AVAILABILITY GROUP [ag1]
JOIN WITH (CLUSTER_TYPE = EXTERNAL);
GO
ALTER AVAILABILITY GROUP [ag1]
GRANT CREATE ANY DATABASE;
GO

Adicionar um banco de dados ao grupo de disponibilidade

Conecte-se à réplica primária e execute os seguintes comandos T-SQL para:

  1. Crie um banco de dados de exemplo chamado db1, que será adicionado ao grupo de disponibilidade.

    CREATE DATABASE [db1];
    GO
    
  2. Defina o modelo de recuperação do banco de dados como completo. Todos os bancos de dados em um grupo de disponibilidade exigem um modelo de recuperação completa.

    ALTER DATABASE [db1]
        SET RECOVERY FULL;
    GO
    
  3. Faça backup do banco de dados. Um banco de dados requer pelo menos um backup completo antes que você possa adicioná-lo a um grupo de disponibilidade.

    BACKUP DATABASE [db1]
        TO DISK = N'/var/opt/mssql/data/db1.bak';
    GO
    
  4. Defina o banco de dados para o modelo de recuperação completa.

    ALTER DATABASE [db1]
        SET RECOVERY FULL;
    GO
    
  5. Fazer backup do banco de dados em disco

    BACKUP DATABASE [db1]
        TO DISK = N'/var/opt/mssql/data/db1.bak';
    GO
    
  6. Adicione o banco de dados db1 ao AG.

    ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];
    

Depois de concluir com êxito as etapas anteriores, você pode ver um ag1 grupo de disponibilidade criado e as três VMs são adicionadas como réplica com uma réplica primária, uma réplica secundária e uma réplica somente de configuração. ag1 contém uma base de dados.

Implantar a carga de trabalho do grupo de disponibilidade do SQL Server utilizando o Gestor de Clusters HPE

No HPE Serviceguard, implante a carga de trabalho do SQL Server no grupo de disponibilidade por meio da interface do usuário do gerenciador de cluster do Serviceguard.

Implante a carga de trabalho do grupo de disponibilidade e ative a alta disponibilidade (HA) e a recuperação de desastres (DR) através do cluster do Serviceguard, usando a interface gráfica do gerenciador do Serviceguard. Consulte a seção Protegendo o Microsoft SQL Server no Linux para grupos de disponibilidade Always On.

Criar o balanceador de carga no portal do Azure

Para implantações na Nuvem do Azure, o HPE Serviceguard para Linux requer um balanceador de carga para habilitar conexões de cliente com a réplica primária, para substituir os endereços IP tradicionais.

  1. No portal do Azure, abra o grupo de recursos que contém os nós de cluster ou máquinas virtuais do Serviceguard.

  2. No grupo de recursos, selecione Adicionar.

  3. Procure por "balanceador de carga" e, nos resultados da pesquisa, selecione o Balanceador de Carga publicado pela Microsoft.

  4. No painel Balanceador de Carga, selecione Criar.

  5. Configure o balanceador de carga da seguinte maneira:

    Configurações Valor
    Nome O nome do balanceador de carga. Por exemplo, SQLAvailabilityGroupLB.
    Tipo Interno
    SKU Básico ou Standard
    Rede virtual Rede virtual usada para as réplicas de VM
    Subrede Sub-rede na qual as instâncias do SQL Server estão hospedadas
    Atribuição de Endereço IP Estático
    Endereço IP privado Criar um IP privado dentro da sub-rede
    Subscrição Escolha a subscrição em causa
    Grupo de Recursos Escolha o grupo de recursos em questão
    Localização Selecione o mesmo local que os nós SQL

Configurar o pool de back-end

O pool de back-end são os endereços das duas instâncias nas quais o cluster do Serviceguard está configurado.

  1. No grupo de recursos, selecione o balanceador de carga que você criou.
  2. Navegue até Configurações > Pools de back-end e selecione Adicionar para criar um pool de endereços de back-end.
  3. Em Adicionar pool de back-end, em Nome, digite um nome para o pool de back-end.
  4. Em Associado a, selecione Máquina virtual.
  5. Selecione a máquina virtual no ambiente e associe o endereço IP apropriado a cada seleção.
  6. Selecione Adicionar.

Criar uma sonda

A sonda define como o Azure verifica qual dos nós do cluster Serviceguard é a réplica primária. O Azure investiga o serviço com base no endereço IP em uma porta que você define ao criar a sonda.

  1. No painel Configurações do balanceador de carga , selecione Sondas de integridade.

  2. No painel Testes de integridade , selecione Adicionar.

  3. Use os seguintes valores para configurar a sonda:

    Configurações Valor
    Nome Nome que representa a sonda. Por exemplo, SQLAGPrimaryReplicaProbe.
    Protocolo TCP
    Porto Você pode usar qualquer porta disponível. Por exemplo, 59999.
    Intervalo 5
    Limiar não saudável 2
  4. Selecione OK.

  5. Entre em todas as suas máquinas virtuais e abra a porta de teste usando os seguintes comandos:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure cria a sonda e depois usa-a para testar o nó do Serviceguard no qual a instância de réplica primária do grupo de disponibilidade está a ser executada. Lembre-se da porta configurada (59999), que é necessária para implantar o AG no cluster Serviceguard.

Definir as regras de balanceamento de carga

As regras de balanceamento de carga configuram como o balanceador de carga encaminha o tráfego para o nó do Serviceguard, que é a réplica primária no cluster. Para esse balanceador de carga, habilite o retorno direto do servidor, pois apenas um dos nós de cluster do Serviceguard pode ser uma réplica primária de cada vez.

  1. No painel Configurações do balanceador de carga , selecione Regras de balanceamento de carga.

  2. No painel Regras de balanceamento de carga , selecione Adicionar.

  3. Configure a regra de balanceamento de carga usando as seguintes configurações:

    Configurações Valor
    Nome Nome que representa as regras de balanceamento de carga. Por exemplo, SQLAGPrimaryReplicaListener.
    Protocolo TCP
    Porto 1433
    Porta do backend 1433. Este valor é ignorado porque esta regra usa IP flutuante.
    Sonda Use o nome da sonda que criou para este balanceador de carga.
    Persistência da sessão Nenhum
    Tempo limite de inatividade (minutos) 4
    IP flutuante Ativado(a)
  4. Selecione OK.

  5. O Azure configura a regra de balanceamento de carga. Agora, o balanceador de carga está configurado para rotear o tráfego para o nó do Serviceguard, que é a instância de réplica primária no cluster.

Anote o endereço IP frontend do balanceador de carga "LbReadWriteIP", que é necessário para implantar o AG no cluster Serviceguard.

Neste ponto, o grupo de recursos tem um balanceador de carga que se conecta a todos os nós do Serviceguard. O balanceador de carga também contém um endereço IP para que os clientes se conectem à instância de réplica primária no cluster, para que qualquer máquina que seja uma réplica primária possa responder a solicitações para o grupo de disponibilidade.

Executar o failover automático e reincorporar o nó ao cluster.

Para o teste de failover automático, você pode desativar a réplica primária (desligar), que replica a indisponibilidade repentina do nó primário. O comportamento esperado é:

  1. O gerenciador de cluster promove uma das réplicas secundárias no grupo de disponibilidade para primária.

  2. A réplica primária com falha ingressa automaticamente no cluster após a reinicialização. O gestor de cluster promove-o a uma réplica secundária.

Para o HPE Serviceguard, consulte a seção Testar a configuração para estar pronto para tolerância a falhas