Este artigo descreve como criar um cluster de três nós no Linux usando o Pacemaker e adicionar um grupo de disponibilidade criado anteriormente como um recurso no cluster. Para alta disponibilidade, um grupo de disponibilidade no Linux requer três nós - consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.
O SQL Server não está tão integrado ao Pacemaker no Linux quanto ao WSFC (cluster de failover do Windows Server). Uma instância do SQL Server não está ciente do cluster e toda a orquestração é de fora para dentro. O Pacemaker fornece orquestração de recursos de cluster. Além disso, nome da rede virtual é específico para clusterização de failover do Windows Server; não há equivalente no Pacemaker. As vistas de gerenciamento dinâmico de grupos de disponibilidade (DMVs) que consultam informações de cluster retornam linhas vazias nos clusters Pacemaker. Para criar um ouvinte para reconexão transparente após o failover, registre manualmente o nome do ouvinte no DNS com o IP usado para criar o recurso IP virtual.
As seções a seguir percorrem as etapas para configurar um cluster Pacemaker e adicionar um grupo de disponibilidade como recurso no cluster para alta disponibilidade, para cada distribuição Linux suportada.
A camada de clustering é baseada no complemento Red Hat Enterprise Linux (RHEL) HA construído sobre Pacemaker.
Observação
O acesso à documentação completa da Red Hat requer uma assinatura válida.
Para obter mais informações sobre configuração de cluster, opções de agentes de recursos e gerenciamento, visite documentação de referência do RHEL.
Roteiro
As etapas para criar um grupo de disponibilidade em servidores Linux para alta disponibilidade são diferentes das etapas em um cluster de failover do Windows Server. A lista a seguir descreve as etapas de alto nível:
Configurar o SQL Server nos nós de cluster.
Criar o grupo de disponibilidade.
Configure um gerenciador de recursos de cluster, como o Pacemaker. Estas instruções estão neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição Linux específica.
Importante
Os ambientes de produção exigem um agente de vedação para alta disponibilidade. As demonstrações nesta documentação não usam agentes de proteção. As demonstrações são apenas para teste e validação.
Um cluster Linux usa vedação para retornar o cluster a um estado conhecido. A maneira de configurar a vedação depende da distribuição e do ambiente. Atualmente, a esgrima não está disponível em alguns ambientes de nuvem. Para obter mais informações, consulte Políticas de suporte para clusters de alta disponibilidade RHEL - Plataformas de virtualização.
Adicione o grupo de disponibilidade como um recurso no cluster.
Para configurar a alta disponibilidade para o RHEL, habilite a assinatura de alta disponibilidade e configure o Pacemaker.
Habilite a assinatura de alta disponibilidade para RHEL
Cada nó no cluster deve ter uma assinatura apropriada para o RHEL e o Complemento de Alta Disponibilidade. Analise os requisitos em Como instalar pacotes de cluster de alta disponibilidade no Red Hat Enterprise Linux. Siga estas etapas para configurar a assinatura e os repositórios:
Registe o sistema.
sudo subscription-manager register
Forneça o seu nome de utilizador e palavra-passe.
Liste os pools disponíveis para registro.
sudo subscription-manager list --available
Observação
Para RHEL 10, o comando list é o seguinte:
sudo subscription-manager repos --list
Na lista de pools disponíveis, anote o ID do pool para a assinatura de alta disponibilidade.
Atualize o script a seguir. Substitua <pool id> pelo ID do pool para alta disponibilidade da etapa anterior. Execute o script para anexar a assinatura.
sudo subscription-manager attach --pool=<pool id>
Habilite o repositório.
RHEL 7
sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
RHEL 8
sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
RHEL 9
sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
RHEL 10
sudo subscription-manager repos --enable=rhel-10-for-x86_64-highavailability-rpms
Para obter mais informações, consulte Pacemaker - o cluster de alta disponibilidade de código aberto.
Depois de configurar a assinatura, conclua as seguintes etapas para configurar o Pacemaker:
Depois de registrar a assinatura, conclua as seguintes etapas para configurar o Pacemaker:
Em todos os nós do cluster, abra as portas do firewall do Pacemaker. Para abrir essas portas com firewalld, execute o seguinte comando:
sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload
Se o firewall não tiver uma configuração de alta disponibilidade integrada, abra as seguintes portas para o Pacemaker.
- TCP: Portas 2224, 3121, 21064
- UDP: Porta 5405
Instale os pacotes do Pacemaker em todos os nós.
sudo yum install pacemaker pcs fence-agents-all resource-agents
Defina a senha para o usuário padrão que é criado ao instalar os pacotes Pacemaker e Corosync. Use a mesma palavra-passe em todos os nós.
sudo passwd hacluster
Para permitir que os nós voltem ao cluster após a reinicialização, habilite e inicie o serviço pcsd e o Pacemaker. Execute o seguinte comando em todos os nós.
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker
Crie o cluster. Para criar o cluster, execute o seguinte comando num único nó:
RHEL 7
sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
RHEL 8 e versões posteriores
Para o RHEL 8 e versões posteriores, você precisa autenticar os nós separadamente. Insira manualmente o nome de usuário e a senha para hacluster quando solicitado.
sudo pcs host auth <node1> <node2> <node3>
sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
Observação
Se já configuraste anteriormente um cluster nos mesmos nós, precisarás usar a opção --force ao executar pcs cluster setup. Esta opção é equivalente à execução pcs cluster destroy. Para reativar o Pacemaker, execute sudo systemctl enable pacemaker.
Instale o agente de recursos do SQL Server para SQL Server. Execute os seguintes comandos em todos os nós.
sudo yum install mssql-server-ha
Depois que o Pacemaker estiver configurado, use pcs para interagir com o cluster. Execute todos os comandos em um nó do cluster.
Considerações para múltiplas interfaces de rede (NICs)
Ao configurar a alta disponibilidade com servidores que têm várias NICs, siga estas sugestões:
Verifique se o arquivo hosts está configurado para que os endereços IP do servidor para as várias NICs sejam resolvidos para o nome do host do servidor Linux em cada nó.
Ao configurar o cluster usando o Pacemaker, é necessário utilizar o nome do host dos servidores para que o Corosync defina a configuração de todas as placas de rede (NICs). Queremos apenas a comunicação Pacemaker/Corosync através de uma única NIC. Depois que o cluster Pacemaker estiver configurado, modifique a configuração no arquivo corosync.conf e atualize o endereço IP da NIC dedicada que você deseja usar para a comunicação Pacemaker/Corosync.
O <hostname> fornecido no arquivo corosync.conf deve ser o mesmo que a saída dada ao fazer uma pesquisa inversa (ping -a <ip_address>), e deve ser o nome curto configurado no host. Verifique se o arquivo hosts também representa o endereço IP adequado para a resolução de nomes.
As alterações no exemplo de arquivo corosync.conf são destacadas abaixo:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Os fornecedores de cluster Pacemaker exigem bloquear um nó com falha, utilizando um dispositivo de isolamento configurado para uma configuração de cluster suportada. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, a vedação traz o cluster para um estado conhecido novamente.
Um dispositivo de esgrima fornece um agente de esgrima.
Configurando o Pacemaker no Red Hat Enterprise Linux no Azure fornece um exemplo de como criar um dispositivo de esgrima para esse cluster no Azure. Modifique as instruções para o seu ambiente.
A vedação ao nível de recurso garante que não haja corrupção de dados durante uma falha ao configurar um recurso. Por exemplo, pode usar isolamento de nível de recurso para marcar o disco num nó como desatualizado quando a ligação de comunicação falha.
A vedação no nível do nó garante que um nó não execute nenhum recurso. Isso é feito redefinindo o nó. O pacemaker suporta uma grande variedade de dispositivos de esgrima. Os exemplos incluem uma fonte de alimentação ininterrupta ou placas de interface de gerenciamento para servidores.
Para obter informações sobre o cercamento de um nó falhado, consulte os seguintes artigos:
Observação
Como a configuração de vedação no nível do nó depende muito do seu ambiente, desative-a para este tutorial (ela pode ser configurada posteriormente). O script a seguir desativa a cerca ao nível do nó:
sudo pcs property set stonith-enabled=false
A desativação da vedação é apenas para fins de teste. Se você planeja usar o Pacemaker em um ambiente de produção, deve planejar uma implementação de vedação dependendo do seu ambiente e mantê-lo habilitado.
Definir a propriedade do cluster, "cluster-recheck-interval"
cluster-recheck-interval indica o intervalo de sondagem no qual o cluster verifica se há alterações nos parâmetros de recursos, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo vinculado pelo valor failure-timeout e pelo valor cluster-recheck-interval. Por exemplo, se failure-timeout estiver definido como 60 segundos e cluster-recheck-interval estiver definido como 120 segundos, a reinicialização será tentada em um intervalo maior que 60 segundos, mas inferior a 120 segundos. Recomendamos que você defina o tempo limite de falha para 60 segundos e cluster-recheck-interval para um valor maior que 60 segundos. Não é recomendável definir cluster-recheck-interval para um valor pequeno.
Para atualizar o valor da propriedade para 2 minutes, execute:
sudo pcs property set cluster-recheck-interval=2min
Se já tiver um recurso de grupo de disponibilidade gerido por um cluster Pacemaker, o pacote Pacemaker 1.1.18-11.el7 introduziu uma alteração de comportamento para a configuração de cluster start-failure-is-fatal quando o seu valor é false. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária sofrer uma interrupção, é esperado que o cluster faça a comutação para uma das réplicas secundárias disponíveis. Em vez disso, os utilizadores notam que o cluster continua a tentar iniciar a réplica primária que falhou. Se esse primário nunca chegar a estar online (devido a uma interrupção permanente), o cluster nunca fará a conmutação para outra réplica secundária disponível. Devido a essa alteração, uma configuração recomendada anteriormente para definir start-failure-is-fatal não é mais válida e a configuração precisa ser revertida de volta para seu valor padrão de true.
Além disso, o recurso AG deverá ser atualizado de modo a incluir a propriedade failure-timeout.
Para atualizar o valor da propriedade para true, execute:
sudo pcs property set start-failure-is-fatal=true
Para atualizar a propriedade do recurso ag_clusterfailure-timeout para 60s, execute:
pcs resource update ag_cluster meta failure-timeout=60s
Para obter informações sobre as propriedades do cluster Pacemaker, consulte Pacemaker Clusters Properties.
Criar um logon do SQL Server para o Pacemaker
Atenção
Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O seguinte Transact-SQL cria um login. Substitua <password> por sua própria senha complexa.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o utilizador do Pacemaker requer permissões de ALTER, CONTROLe VIEW DEFINITION no grupo de disponibilidade, após a sua criação, mas antes de qualquer nó ser adicionado ao mesmo.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
Substitua <password> por sua própria senha complexa.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Criar recurso de grupo de disponibilidade
Para criar o recurso do grupo de disponibilidade, use pcs resource create comando e defina as propriedades do recurso. O comando a seguir cria um recurso de tipo mestre/subordinado ocf:mssql:ag para o grupo de disponibilidade com nome ag1. Execute o seguinte comando em um nó.
RHEL 7
Use o seguinte create comando:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8 e versões posteriores
Use o seguinte create comando:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
Observação
Quando você cria o recurso, e periodicamente depois, o agente de recursos do Pacemaker define automaticamente o valor de REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT no grupo de disponibilidade com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tiver três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT como 1. Para obter detalhes e opções de configuração adicionais, consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.
Criar recurso IP virtual
Para criar o recurso do endereço IP virtual, execute o seguinte comando em um dos nós. Use um endereço IP estático disponível da rede. Substitua o endereço IP entre <10.128.16.240> por um endereço IP válido.
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
Não há nenhum nome de servidor virtual equivalente no Pacemaker. Para usar uma cadeia de conexão que aponte para um nome de servidor de cadeia de caracteres em vez de um endereço IP, registre o endereço de recurso IP virtual e o nome do servidor virtual desejado no DNS. Para configurações de DR, registre o nome do servidor virtual desejado e o endereço IP com os servidores DNS no site primário e no site de DR.
Adicionar restrição de colocation
Quase todas as decisões em um cluster de marcapasso, como escolher onde um recurso deve ser executado, são feitas comparando pontuações. As pontuações são calculadas por recurso. O gerenciador de recursos de cluster escolhe o nó com a pontuação mais alta para um recurso específico. Se um nó tiver uma pontuação negativa para um recurso, o recurso não poderá ser executado nesse nó.
Em um cluster de marcapasso, você pode manipular as decisões do cluster com restrições. As restrições têm uma pontuação. Se uma restrição tem uma pontuação inferior a INFINITY, o Pacemaker considera-a uma recomendação. É obrigatória uma pontuação de INFINITY.
Para garantir que a réplica primária e os recursos ip virtuais sejam executados no mesmo host, defina uma restrição de colocation com uma pontuação de INFINITY. Para adicionar a restrição de colocation, execute o seguinte comando num nó.
RHEL 7
Quando você cria o recurso ag_cluster no RHEL 7, ele cria o recurso como ag_cluster-master. Use o seguinte comando para o RHEL 7:
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
Quando você cria o recurso ag_cluster no RHEL 8, ele cria o recurso como ag_cluster-clone. Use o seguinte comando:
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
RHEL 9 e versões posteriores
Quando você cria o ag_cluster recurso no RHEL 9 e versões posteriores, ele cria o recurso como ag_cluster-clone. Use o seguinte comando:
sudo pcs constraint colocation add virtualip with promoted ag_cluster-clone INFINITY with-rsc-role=Promoted
Adicionar restrição de ordenação
A restrição de colocação tem uma restrição de ordenação implícita. O sistema move o recurso de IP virtual antes de mover o recurso do grupo de disponibilidade. Por padrão, a sequência de eventos é:
Problemas de usuário pcs resource move para o grupo de disponibilidade primário de node1 para node2.
O recurso IP virtual pára no nó 1.
O recurso IP virtual começa no nó 2.
Observação
Neste ponto, o endereço IP aponta temporariamente para o nó 2, enquanto o nó 2 ainda é um secundário antes do failover.
O grupo de disponibilidade primário no nó 1 é rebaixado para secundário.
O grupo de disponibilidade secundário no nó 2 é promovido a primário.
Para evitar que o endereço IP aponte temporariamente para o nó com o secundário antes da operação de failover, adicione uma restrição de prioridade.
Para adicionar uma restrição de ordenação, execute o seguinte comando em um nó:
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8 e versões posteriores
sudo pcs constraint order promote ag_cluster-clone then start virtualip
Importante
Depois de configurar o cluster e adicionar o grupo de disponibilidade como um recurso de cluster, não é possível usáTransact-SQL para fazer failover dos recursos do grupo de disponibilidade. Os recursos de cluster do SQL Server no Linux não são acoplados tão fortemente ao sistema operacional quanto em um WSFC (Cluster de Failover do Windows Server). O serviço SQL Server não está ciente da presença do cluster. Toda a orquestração é feita através das ferramentas de gerenciamento de cluster. Em RHEL ou Ubuntu, use as ferramentas pcs e em SLES, use as ferramentas crm.
Faça failover manualmente do grupo de disponibilidade com pcs. Não inicie o failover com o Transact-SQL. Para obter instruções, consulte Failover.
Conteúdo relacionado
A camada de agrupamento é baseada na SUSE High Availability Extension (HAE) construída sobre Pacemaker.
Para obter mais informações sobre configuração de cluster, opções do agente de recursos, gerenciamento, práticas recomendadas e recomendações, consulte SUSE Linux Enterprise High Availability Extension.
Roteiro
O procedimento para criar um grupo de disponibilidade para alta disponibilidade difere entre servidores Linux e um cluster de failover do Windows Server. A lista a seguir descreve as etapas de alto nível:
Configurar o SQL Server nos nós de cluster.
Criar o grupo de disponibilidade.
Configure um gerenciador de recursos de cluster, como o Pacemaker. Estas instruções estão neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição Linux específica.
Importante
Os ambientes de produção exigem um agente de vedação para alta disponibilidade. Os exemplos neste artigo não utilizam agentes de delimitação. Destinam-se apenas a testes e validação.
Um cluster Linux usa vedação para retornar o cluster a um estado conhecido. A maneira de configurar a vedação depende da distribuição e do ambiente. Atualmente, a esgrima não está disponível em alguns ambientes de nuvem. Para obter mais informações, consulte SUSE Linux Enterprise High Availability Extension.
Adicionar o grupo de disponibilidade como um recurso no cluster
Pré-requisitos
Para concluir o seguinte cenário de ponta a ponta, você precisa de três máquinas para implantar o cluster de três nós. As etapas a seguir descrevem como configurar esses servidores.
A primeira etapa é configurar o sistema operacional nos nós do cluster. Para este walk-through, utilize SLES 12 SP3 com uma subscrição válida para o complemento HA.
Instale e configure o serviço SQL Server em todos os nós. Para obter instruções detalhadas, consulte Diretrizes de instalação do SQL Server no Linux.
Designe um nó como primário e outros como secundários. Use estes termos ao longo deste guia.
Certifique-se de que os nós que farão parte do cluster possam se comunicar entre si.
O exemplo a seguir mostra /etc/hosts com adições para três nós chamados SLES1, SLES2 e SLES3.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Todos os nós de cluster devem ser capazes de acessar uns aos outros via SSH. Ferramentas como hb_report ou crm_report (para solução de problemas) e Hawk's History Explorer exigem acesso SSH sem palavra-passe entre os nós, caso contrário, só podem recolher dados do nó atual. Caso você use uma porta SSH não padrão, use a opção -X (consulte man página). Por exemplo, se a porta SSH for 3479, use o código crm_report com:
sudo crm_report -X "-p 3479" [...]
Para obter mais informações, consulte o Guia de Administração do SLES, seção - Miscellaneous.
Criar um logon do SQL Server para o Pacemaker
Atenção
Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O seguinte Transact-SQL cria um login. Substitua <password> por sua própria senha complexa.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o utilizador do Pacemaker requer permissões de ALTER, CONTROLe VIEW DEFINITION no grupo de disponibilidade, após a sua criação, mas antes de qualquer nó ser adicionado ao mesmo.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
Substitua <password> por sua própria senha complexa.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Em servidores Linux, configure o grupo de disponibilidade e, em seguida, configure os recursos do cluster. Para configurar o grupo de disponibilidade, consulte Configurar o grupo de disponibilidade do SQL Server para alta disponibilidade no Linux
Instalar a extensão de alta disponibilidade
Para referência, consulte Instalação do SUSE Linux Enterprise Server e Extensão de alta disponibilidade.
Instale o pacote do agente de recursos do SQL Server em ambos os nós.
sudo zypper install mssql-server-ha
Configurar o primeiro nó
Consulte as instruções do SLES de instalação .
Entre como root na máquina física ou virtual que você deseja usar como nó de cluster.
Inicie o script de bootstrap executando:
sudo ha-cluster-init
Se o NTP não tiver sido configurado para iniciar no momento da inicialização, uma mensagem será exibida.
Se você decidir continuar de qualquer maneira, o script gera automaticamente chaves para acesso SSH e a ferramenta de sincronização Csync2 e inicia os serviços necessários para ambos.
Para configurar a camada de comunicação de cluster (Corosync):
Insira um endereço de rede ao qual se vincular. Por padrão, o script propõe o endereço de rede de eth0. Como alternativa, insira um endereço de rede diferente, por exemplo, o endereço de bond0.
Insira um endereço de multicast. O script propõe um endereço aleatório que você pode usar como padrão.
Insira uma porta multicast. O script propõe 5405 como padrão.
Para configurar SBD (), insira um caminho persistente para a partição do dispositivo de bloco que quer utilizar para SBD. O caminho deve ser consistente em todos os nós do cluster.
Finalmente, o script iniciará o serviço Pacemaker para ativar o cluster de um único nó online e habilitar a interface de gerenciamento Web Hawk2. O URL a ser usado para Hawk2 é exibido na tela.
Para obter detalhes sobre o processo de configuração, verifique /var/log/sleha-bootstrap.log. Agora você tem um cluster de um nó em execução. Verifique o estado do cluster com o comando crm status.
sudo crm status
Você também pode ver a configuração do cluster com crm configure show xml ou crm configure show.
O procedimento de bootstrap cria um usuário Linux chamado hacluster com a senha linux. Substitua a senha padrão por uma segura o mais rápido possível:
sudo passwd hacluster
Adicionar nós ao cluster existente
Se você tiver um cluster em execução com um ou mais nós, adicione mais nós de cluster com o script de bootstrap ha-cluster-join. O script só precisa de acesso a um nó de cluster existente e concluirá a configuração básica na máquina atual automaticamente. Use as seguintes etapas:
Se você configurou os nós de cluster existentes com o módulo de cluster YaST, verifique se os seguintes pré-requisitos foram atendidos antes de executar ha-cluster-join:
O usuário root nos nós existentes tem chaves SSH no lugar para login sem senha.
Csync2 é configurado nos nós existentes. Para obter mais informações, consulte Configurando o Csync2 com o YaST.
Entre como root na máquina física ou virtual que deve juntar-se ao cluster.
Inicie o script de bootstrap executando:
sudo ha-cluster-join
Se o NTP não tiver sido configurado para iniciar no momento da inicialização, uma mensagem será exibida.
Se você decidir continuar mesmo assim, será solicitado o endereço IP de um nó existente. Digite o endereço IP.
Se você ainda não configurou um acesso SSH sem senha entre ambas as máquinas, também será solicitada a senha raiz do nó existente.
Depois de efetuar login no nó especificado, o script copia a configuração do Corosync, configura SSH e Csync2e coloca a máquina atual online como novo nó de cluster. Além disso, inicia o serviço necessário para o sistema Hawk. Se você configurou o armazenamento compartilhado com o OCFS2, ele também cria automaticamente o diretório de ponto de montagem para o sistema de arquivos OCFS2.
Repita as etapas anteriores para todas as máquinas que você deseja adicionar ao cluster.
Para mais detalhes sobre o processo, consulte /var/log/ha-cluster-bootstrap.log.
Verifique o status do cluster com sudo crm status. Se tiver acrescentado com sucesso um segundo nó, a saída é semelhante à seguinte:
sudo crm status
Você vê uma saída semelhante ao exemplo a seguir.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Observação
admin_addr é o recurso de cluster IP virtual que é configurado durante a configuração inicial do cluster de um nó.
Depois de adicionar todos os nós, verifique se é necessário ajustar a política de não quórum nas opções de cluster global. Isso é especialmente importante para clusters de dois nós.
Definir a propriedade do cluster, "cluster-recheck-interval"
cluster-recheck-interval indica o intervalo de sondagem no qual o cluster verifica se há alterações nos parâmetros de recursos, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo vinculado pelo valor failure-timeout e pelo valor cluster-recheck-interval. Por exemplo, se failure-timeout estiver definido como 60 segundos e cluster-recheck-interval estiver definido como 120 segundos, a reinicialização será tentada em um intervalo maior que 60 segundos, mas inferior a 120 segundos. Recomendamos que você defina o tempo limite de falha para 60 segundos e cluster-recheck-interval para um valor maior que 60 segundos. Não é recomendável definir cluster-recheck-interval para um valor pequeno.
Para atualizar o valor da propriedade para 2 minutes, execute:
crm configure property cluster-recheck-interval=2min
Se já tiver um recurso de grupo de disponibilidade gerido por um cluster Pacemaker, o pacote Pacemaker 1.1.18-11.el7 introduziu uma alteração de comportamento para a configuração de cluster start-failure-is-fatal quando o seu valor é false. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária sofrer uma interrupção, é esperado que o cluster faça a comutação para uma das réplicas secundárias disponíveis. Em vez disso, os utilizadores notam que o cluster continua a tentar iniciar a réplica primária que falhou. Se esse primário nunca chegar a estar online (devido a uma interrupção permanente), o cluster nunca fará a conmutação para outra réplica secundária disponível. Devido a essa alteração, uma configuração recomendada anteriormente para definir start-failure-is-fatal não é mais válida e a configuração precisa ser revertida de volta para seu valor padrão de true.
Além disso, o recurso AG deverá ser atualizado de modo a incluir a propriedade failure-timeout.
Para atualizar o valor da propriedade para true, execute:
crm configure property start-failure-is-fatal=true
Atualize a propriedade do recurso AG existente de failure-timeout para 60s (substitua ag1 pelo nome do recurso do grupo de disponibilidade) e execute:
crm configure edit ag1
No editor de texto, adicione meta failure-timeout=60s depois de qualquer params e antes de qualquer ops.
Para obter mais informações sobre as propriedades do cluster Pacemaker, consulte Configurando recursos de cluster.
Considerações para múltiplas interfaces de rede (NICs)
Ao configurar a alta disponibilidade com servidores que têm várias NICs, siga estas sugestões:
Verifique se o arquivo hosts está configurado para que os endereços IP do servidor para as várias NICs sejam resolvidos para o nome do host do servidor Linux em cada nó.
Ao configurar o cluster usando o Pacemaker, é necessário utilizar o nome do host dos servidores para que o Corosync defina a configuração de todas as placas de rede (NICs). Queremos apenas a comunicação Pacemaker/Corosync através de uma única NIC. Depois que o cluster Pacemaker estiver configurado, modifique a configuração no arquivo corosync.conf e atualize o endereço IP da NIC dedicada que você deseja usar para a comunicação Pacemaker/Corosync.
O <hostname> fornecido no arquivo corosync.conf deve ser o mesmo que a saída dada ao fazer uma pesquisa inversa (ping -a <ip_address>), e deve ser o nome curto configurado no host. Verifique se o arquivo hosts também representa o endereço IP adequado para a resolução de nomes.
As alterações no exemplo de arquivo corosync.conf são destacadas abaixo:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Os fornecedores de cluster Pacemaker exigem bloquear um nó com falha, utilizando um dispositivo de isolamento configurado para uma configuração de cluster suportada. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, a vedação traz o cluster para um estado conhecido novamente.
O isolamento de nível de recurso garante principalmente que não haja corrupção de dados durante uma interrupção, mediante a configuração de um recurso. Você pode usar a compartimentação no nível de recursos, por exemplo, com DRBD (Distributed Replicated Block Device) para marcar o disco em um nó como obsoleto quando o link de comunicação fica inativo.
A vedação no nível do nó garante que um nó não execute nenhum recurso. Isso é feito redefinindo o nó, e a implementação do Pacemaker é conhecida como STONITH. O Pacemaker suporta uma grande variedade de dispositivos de vedação, como uma fonte de alimentação ininterrupta ou placas de interface de gerenciamento para servidores.
Para mais informações, consulte:
No momento da inicialização do cluster, a vedação é desabilitada se nenhuma configuração for detetada. Ele pode ser ativado mais tarde executando o seguinte comando:
sudo crm configure property stonith-enabled=true
Importante
A desativação da vedação é apenas para fins de teste. Se você planeja usar o Pacemaker em um ambiente de produção, deve planejar uma implementação de vedação dependendo do seu ambiente e mantê-lo habilitado. A SUSE não fornece agentes de vedação para ambientes de nuvem (incluindo o Azure) ou Hyper-V. Consequentemente, o fornecedor do cluster não oferece suporte para a execução de clusters de produção nesses ambientes. Estamos trabalhando em uma solução para essa lacuna que estará disponível em versões futuras.
Consulte o Guia de Administração do SLES.
Ativar Pacemaker
Ative o Pacemaker para que ele seja iniciado automaticamente.
Execute o seguinte comando em cada nó do cluster.
systemctl enable pacemaker
Criar recurso de grupo de disponibilidade
O comando a seguir cria e configura o recurso do grupo de disponibilidade para três réplicas do grupo de disponibilidade [ag1]. As operações de monitoramento e os tempos limite devem ser especificados explicitamente no SLES com base no fato de que os tempos limite dependem altamente da carga de trabalho e precisam ser cuidadosamente ajustados para cada implantação.
Execute o comando em um dos nós do cluster:
Execute crm configure para abrir o prompt crm:
sudo crm configure
No prompt crm, execute o seguinte comando para configurar as propriedades do recurso.
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
Observação
Quando você cria o recurso, e periodicamente depois, o agente de recursos do Pacemaker define automaticamente o valor de REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT no grupo de disponibilidade com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tiver três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT como 1. Para obter detalhes e opções de configuração adicionais, consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.
Criar recurso IP virtual
Se você não criou o recurso IP virtual quando executou ha-cluster-init, você pode criar esse recurso agora. O comando a seguir cria um recurso IP virtual. Substitua <0.0.0.0> por um endereço disponível da sua rede e <24> pelo número de bits na máscara de sub-rede CIDR. Execute em um nó.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<0.0.0.0> \
cidr_netmask=<24>
Adicionar restrição de colocation
Quase todas as decisões em um cluster de marcapasso, como escolher onde um recurso deve ser executado, são feitas comparando pontuações. As pontuações são calculadas por recurso e o gerenciador de recursos de cluster escolhe o nó com a pontuação mais alta para um recurso específico. (Se um nó tiver uma pontuação negativa para um recurso, o recurso não poderá ser executado nesse nó.) Podemos manipular as decisões do cluster com restrições. As restrições têm uma pontuação. Se uma restrição tiver uma pontuação inferior a INFINITY, é apenas uma recomendação. Uma pontuação de INFINITY significa que é uma obrigação. Queremos garantir que o principal do grupo de disponibilidade e o recurso ip virtual sejam executados no mesmo host, por isso definimos uma restrição de colocation com uma pontuação de INFINITY.
Para definir a restrição de colocation para que o IP virtual seja executado no mesmo nó que o nó primário, execute o seguinte comando em um nó:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
Adicionar restrição de ordenação
A restrição de colocação tem uma restrição de ordenação implícita. O sistema move o recurso de IP virtual antes de mover o recurso do grupo de disponibilidade. Por padrão, a sequência de eventos é:
- Problemas de usuário
resource migrate para o grupo de disponibilidade primário de node1 para node2.
- O recurso IP virtual pára no nó 1.
- O recurso IP virtual começa no nó 2. Neste ponto, o endereço IP aponta temporariamente para o nó 2, enquanto o nó 2 ainda é um secundário antes do failover.
- O mestre do grupo de disponibilidade no nó 1 é rebaixado.
- O grupo de disponibilidade no nó 2 é promovido a mestre.
Para evitar que o endereço IP aponte temporariamente para o nó com o secundário pré-failover, adicione uma restrição de ordenação com o seguinte comando num nó:
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
Importante
Depois de configurar o cluster e adicionar o grupo de disponibilidade como um recurso de cluster, não é possível usáTransact-SQL para fazer failover dos recursos do grupo de disponibilidade. Os recursos de cluster do SQL Server no Linux não são acoplados tão fortemente ao sistema operacional quanto em um WSFC (Cluster de Failover do Windows Server). O serviço SQL Server não está ciente da presença do cluster. Toda a orquestração é feita através das ferramentas de gerenciamento de cluster. Em SLES, use crm.
Faça failover manualmente do grupo de disponibilidade com crm. Não inicie o failover com o Transact-SQL. Para obter mais informações, consulte Failover.
Para mais informações, consulte:
Conteúdo relacionado
Roteiro
As etapas para criar um grupo de disponibilidade em servidores Linux para alta disponibilidade são diferentes das etapas em um cluster de failover do Windows Server. A lista a seguir descreve as etapas de alto nível:
Diretrizes de instalação do SQL Server no Linux.
Configure o grupo de disponibilidade do SQL Server para alta disponibilidade no Linux.
Configure um gerenciador de recursos de cluster, como o Pacemaker. Estas instruções estão neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição Linux específica.
Importante
Os ambientes de produção exigem um agente de vedação para alta disponibilidade. Os exemplos neste artigo não utilizam agentes de delimitação. Destinam-se apenas a testes e validação.
Um cluster Linux usa vedação para retornar o cluster a um estado conhecido. A maneira de configurar a vedação depende da distribuição e do ambiente. Atualmente, a esgrima não está disponível em alguns ambientes de nuvem.
A vedação é normalmente implementada no sistema operacional e depende do ambiente. Encontre instruções para cercas na documentação do distribuidor do sistema operacional.
Adicione o grupo de disponibilidade como um recurso no cluster.
Em todos os nós, abra as portas do firewall. Abra a porta do serviço de alta disponibilidade do Pacemaker, da instância do SQL Server e do ponto de extremidade do grupo de disponibilidade. A porta TCP padrão para o servidor que executa o SQL Server é 1433.
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
Como alternativa, você pode desativar o firewall, mas isso não é recomendado em um ambiente de produção:
sudo ufw disable
Instale pacotes Pacemaker. Em todos os nós, execute os seguintes comandos para o Ubuntu 20.04. Para obter mais informações sobre como instalar em versões anteriores, consulte Ubuntu HA - MS SQL Server no Azure.
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
Defina a senha para o usuário padrão que é criado ao instalar os pacotes Pacemaker e Corosync. Use a mesma palavra-passe em todos os nós.
sudo passwd hacluster
Criar o cluster
Antes de criar um cluster, você deve criar uma chave de autenticação no servidor primário e copiá-la para os outros servidores que participam do AG.
Use o seguinte script para criar uma chave de autenticação no servidor primário:
sudo corosync-keygen
Você pode usar scp para copiar a chave gerada para outros servidores:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Para criar o cluster, edite o arquivo /etc/corosync/corosync.conf no servidor primário:
sudo vim /etc/corosync/corosync.conf
O arquivo corosync.conf deve ser semelhante ao exemplo a seguir:
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
Substitua o arquivo corosync.conf em outros nós:
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
Reinicie os serviços pacemaker e corosync:
sudo systemctl restart pacemaker corosync
Confirme o status do cluster e verifique a configuração:
sudo crm status
Considerações para múltiplas interfaces de rede (NICs)
Ao configurar a alta disponibilidade com servidores que têm várias NICs, siga estas sugestões:
Verifique se o arquivo hosts está configurado para que os endereços IP do servidor para as várias NICs sejam resolvidos para o nome do host do servidor Linux em cada nó.
Ao configurar o cluster usando o Pacemaker, é necessário utilizar o nome do host dos servidores para que o Corosync defina a configuração de todas as placas de rede (NICs). Queremos apenas a comunicação Pacemaker/Corosync através de uma única NIC. Depois que o cluster Pacemaker estiver configurado, modifique a configuração no arquivo corosync.conf e atualize o endereço IP da NIC dedicada que você deseja usar para a comunicação Pacemaker/Corosync.
O <hostname> fornecido no arquivo corosync.conf deve ser o mesmo que a saída dada ao fazer uma pesquisa inversa (ping -a <ip_address>), e deve ser o nome curto configurado no host. Verifique se o arquivo hosts também representa o endereço IP adequado para a resolução de nomes.
As alterações no exemplo de arquivo corosync.conf são destacadas abaixo:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Os fornecedores de cluster Pacemaker exigem bloquear um nó com falha, utilizando um dispositivo de isolamento configurado para uma configuração de cluster suportada. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, a vedação traz o cluster para um estado conhecido novamente.
A contenção ao nível de recursos assegura que não haja corrupção de dados em caso de interrupção. Você pode usar a compartimentação no nível de recursos, por exemplo, com DRBD (Distributed Replicated Block Device) para marcar o disco em um nó como obsoleto quando o link de comunicação fica inativo.
A vedação no nível do nó garante que um nó não execute nenhum recurso. Isso é feito redefinindo o nó, e a implementação do Pacemaker é conhecida como STONITH. O Pacemaker suporta uma grande variedade de dispositivos de vedação, por exemplo, uma fonte de alimentação ininterrupta ou placas de interface de gestão para servidores.
Para obter mais informações, consulte Pacemaker Clusters from Scratch e Fencing and Stonith.
Como a configuração de vedação no nível do nó depende muito do seu ambiente, nós a desabilitamos para este tutorial (ela pode ser configurada posteriormente). Execute o seguinte script no nó primário:
sudo crm configure property stonith-enabled=false
Neste exemplo, desativar a vedação é apenas para fins de teste. Se você planeja usar o Pacemaker em um ambiente de produção, deve planejar uma implementação de vedação dependendo do seu ambiente e mantê-lo habilitado. Entre em contato com o fornecedor do sistema operacional para obter informações sobre agentes de fence para qualquer distribuição específica.
Definir a propriedade do cluster, "cluster-recheck-interval"
A propriedade cluster-recheck-interval indica o intervalo de sondagem no qual o cluster verifica se há alterações nos parâmetros de recursos, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo vinculado pelo valor failure-timeout e pelo valor cluster-recheck-interval. Por exemplo, se failure-timeout estiver definido como 60 segundos e cluster-recheck-interval estiver definido como 120 segundos, a reinicialização será tentada em um intervalo maior que 60 segundos, mas inferior a 120 segundos. Você deve definir failure-timeout como 60 segundos e cluster-recheck-interval para um valor maior que 60 segundos. Não é recomendável definir cluster-recheck-interval para um valor menor.
Para atualizar o valor da propriedade para 2 minutes, execute:
sudo crm configure property cluster-recheck-interval=2min
Se já tiver um recurso de grupo de disponibilidade gerido por um cluster Pacemaker, o pacote Pacemaker 1.1.18-11.el7 introduziu uma alteração de comportamento para a configuração de cluster start-failure-is-fatal quando o seu valor é false. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária sofrer uma interrupção, é esperado que o cluster faça a comutação para uma das réplicas secundárias disponíveis. Em vez disso, os utilizadores notam que o cluster continua a tentar iniciar a réplica primária que falhou. Se esse primário nunca chegar a estar online (devido a uma interrupção permanente), o cluster nunca fará a conmutação para outra réplica secundária disponível. Devido a essa alteração, uma configuração recomendada anteriormente para definir start-failure-is-fatal não é mais válida e a configuração precisa ser revertida de volta para seu valor padrão de true.
Além disso, o recurso AG deverá ser atualizado de modo a incluir a propriedade failure-timeout.
Para atualizar o valor da propriedade para true, execute:
sudo crm configure property start-failure-is-fatal=true
Atualize a propriedade do recurso AG existente de failure-timeout para 60s (substitua ag1 pelo nome do recurso do grupo de disponibilidade) e execute:
sudo crm configure meta failure-timeout=60s
Instalar o agente de recursos do SQL Server para integração com o Pacemaker
Execute os seguintes comandos em todos os nós.
sudo apt-get install mssql-server-ha
Criar um logon do SQL Server para o Pacemaker
Atenção
Sua senha deve seguir a política de senha de padrão do SQL Server. Por padrão, a senha deve ter pelo menos oito caracteres e conter caracteres de três dos quatro conjuntos a seguir: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As palavras-passe podem ter até 128 caracteres. Use senhas tão longas e complexas quanto possível.
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O seguinte Transact-SQL cria um login. Substitua <password> por sua própria senha complexa.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o utilizador do Pacemaker requer permissões de ALTER, CONTROLe VIEW DEFINITION no grupo de disponibilidade, após a sua criação, mas antes de qualquer nó ser adicionado ao mesmo.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
Substitua <password> por sua própria senha complexa.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Criar recurso de grupo de disponibilidade
Para criar o recurso do grupo de disponibilidade, use o comando sudo crm configure para definir as propriedades do recurso. O exemplo a seguir cria um recurso do tipo primário/réplica ocf:mssql:ag para um grupo de disponibilidade chamado ag1.
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
Observação
Quando você cria o recurso, e periodicamente depois, o agente de recursos do Pacemaker define automaticamente o valor de REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT no grupo de disponibilidade com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tiver três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT como 1. Para obter detalhes e opções de configuração adicionais, consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.
Criar recurso IP virtual
Para criar o recurso do endereço IP virtual, execute o seguinte comando em um dos nós. Use um endereço IP estático disponível da rede. Antes de executar o script, substitua os valores entre < ... > por um endereço IP válido.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Não há nenhum nome de servidor virtual equivalente no Pacemaker. Para usar uma cadeia de conexão que aponte para um nome de servidor de cadeia de caracteres e não use o endereço IP, registre o endereço de recurso IP e o nome do servidor virtual desejado no DNS. Para configurações de DR, registre o nome do servidor virtual desejado e o endereço IP com os servidores DNS no site primário e no site de DR.
Adicionar restrição de colocation
Quase todas as decisões em um cluster de marcapasso, como escolher onde um recurso deve ser executado, são feitas comparando pontuações. As pontuações são calculadas por recurso e o gerenciador de recursos de cluster escolhe o nó com a pontuação mais alta para um recurso específico. (Se um nó tiver uma pontuação negativa para um recurso, o recurso não poderá ser executado nesse nó.)
Use restrições para configurar as decisões do cluster. As restrições têm uma pontuação. Se uma restrição tiver uma pontuação inferior a INFINITY, é apenas uma recomendação. Uma pontuação de INFINITY significa que é obrigatório.
Para garantir que a réplica primária e o recurso ip virtual estejam no mesmo host, defina uma restrição de colocation com uma pontuação de INFINITY. Para adicionar a restrição de colocation, execute o seguinte comando num nó.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
Adicionar restrição de ordenação
A restrição de colocação tem uma restrição de ordenação implícita. O sistema move o recurso de IP virtual antes de mover o recurso do grupo de disponibilidade. Por padrão, a sequência de eventos é:
Problemas de usuário pcs resource move para o grupo de disponibilidade primário de node1 para node2.
O recurso IP virtual para em node1.
O recurso IP virtual começa em node2.
Neste ponto, o endereço IP aponta temporariamente para node2 enquanto node2 ainda é um secundário pré-failover.
O grupo de disponibilidade primário no node1 é rebaixado para secundário.
O grupo de disponibilidade secundário no node2 é elevado a primário.
Para evitar que o endereço IP aponte temporariamente para o nó com o secundário antes da operação de failover, adicione uma restrição de prioridade.
Para adicionar uma restrição de ordenação, execute o seguinte comando em um nó:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
Depois de configurar o cluster e adicionar o grupo de disponibilidade como um recurso de cluster, não é possível usáTransact-SQL para fazer failover dos recursos do grupo de disponibilidade. Os recursos de cluster do SQL Server no Linux não são acoplados tão fortemente ao sistema operacional quanto em um WSFC (Cluster de Failover do Windows Server). O serviço SQL Server não está ciente da presença do cluster. Toda a orquestração é feita através das ferramentas de gerenciamento de cluster.
Conteúdo relacionado