Este artigo descreve como criar um cluster de três nós no Linux usando o Pacemaker e como adicionar um grupo de disponibilidade criado anteriormente como um recurso no cluster. Para alta disponibilidade, um grupo de disponibilidade em Linux exige três nós – consulte Alta disponibilidade e proteção de dados para configurações de grupo de disponibilidade.
O SQL Server não é tão totalmente integrado ao Pacemaker no Linux quanto ao WSFC (clustering de failover do Windows Server). Uma instância do SQL Server não reconhece o cluster, e toda a orquestração é feita de fora para dentro. O Pacemaker fornece orquestração de recursos de cluster. Além disso, o nome da rede virtual é específico do clustering de failover do Windows Server. Não há um equivalente no Pacemaker. As DMVs (exibições de gerenciamento dinâmico) do grupo de disponibilidade que consultam as informações do cluster retornam linhas vazias em clusters do Pacemaker. Para criar um ouvinte de reconexão transparente após o failover, registre manualmente o nome do ouvinte em DNS com o IP usado para criar o recurso de IP virtual.
As seções a seguir descrevem as etapas necessárias para configurar um cluster do Pacemaker e adicionar um grupo de disponibilidade como um recurso no cluster para alta disponibilidade a cada distribuição do Linux com suporte.
A camada de clustering baseia-se no complemento de HA do RHEL (Red Hat Enterprise Linux) criado com base no Pacemaker.
Observação
O acesso à documentação completa do Red Hat exige uma assinatura válida.
Para saber mais sobre configuração de cluster, opções de agentes de recursos e gerenciamento, acesse a 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.
Configurar um gerenciador de recursos de cluster, como o Pacemaker. Essas instruções estão contidas neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição específica do Linux.
Importante
Os ambientes de produção exigem um agente de isolamento para alta disponibilidade. As demonstrações desta documentação não usam agentes de isolamento. As demonstrações se destinam apenas a teste e validação.
Um cluster do Linux usa o isolamento para retornar o cluster a um estado conhecido. A maneira de configurar o isolamento depende da distribuição e do ambiente. Atualmente, o isolamento não está disponível em alguns ambientes de nuvem. Para saber mais, confira Políticas de suporte para clusters de alta disponibilidade do RHEL – plataformas de virtualização.
Adicione o grupo de disponibilidade como um recurso no cluster.
Para configurar a alta disponibilidade do RHEL, habilite a assinatura de alta disponibilidade e configure o Pacemaker.
Habilitar a assinatura de alta disponibilidade para RHEL
Cada nó no cluster deve ter uma assinatura apropriada para RHEL e o complemento de alta disponibilidade. Examine os requisitos em Como instalar pacotes de cluster de alta disponibilidade no Red Hat Enterprise Linux. Siga estas etapas para configurar a assinatura e repositórios:
Registre o sistema.
sudo subscription-manager register
Forneça seu nome de usuário e senha.
Liste os pools disponíveis para registro.
sudo subscription-manager list --available
Na lista de pools disponíveis, observe a ID do pool para a assinatura de alta disponibilidade.
Atualize o seguinte script. Substitua <pool id>
pela 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
Para saber mais, confira Pacemaker – O cluster de alta disponibilidade e software livre.
Após configurar a assinatura, conclua as seguintes etapas para configurar o Pacemaker:
Após registrar a assinatura, conclua as etapas a seguir para configurar o Pacemaker:
Em todos os nós de cluster, abra as portas do firewall do Pacemaker. Para abrir essas portas com o 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 interna, abra as portas do Pacemaker a seguir.
- TCP: Portas 2224, 3121 e 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 do usuário padrão criado ao instalar pacotes do Pacemaker e do Corosync. Use a mesma senha em todos os nós.
sudo passwd hacluster
Para que os nós reingressem no 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:
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
Para o RHEL 8, você precisa autenticar os nós separadamente. Insira manualmente o nome de usuário e a senha do 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 você tiver configurado um cluster anteriormente nos mesmos nós, será necessário usar a opção --force
ao executar pcs cluster setup
. Essa opção é equivalente a executar o pcs cluster destroy
. Para reabilitar o Pacemaker, execute o sudo systemctl enable pacemaker
.
Instalar o agente do recurso SQL Server para o SQL Server. Execute os seguintes comandos em todos os nós.
sudo yum install mssql-server-ha
Após configurar o Pacemaker, use pcs
para interagir com o cluster. Execute todos os comandos em um nó do cluster.
Considerações sobre NICs (adaptadores de rede) múltiplas
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 do Linux em cada nó.
Durante a configuração do cluster por meio do Pacemaker, o uso do nome do host dos servidores configura o Corosync para definir a configuração para todas as NICs. Queremos apenas a comunicação entre o Pacemaker e o Corosync em uma só NIC. Depois que o cluster do Pacemaker for 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 entre o Pacemaker e o Corosync.
O <hostname>
especificado no arquivo corosync.conf
deve ser o mesmo que a saída fornecida 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 realçadas 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 do Pacemaker exigem o isolamento de um nó com falha usando um dispositivo de isolamento definido para uma configuração de cluster compatível. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, o isolamento traz o cluster para um estado conhecido novamente.
Um dispositivo de isolamento fornece um agente de isolamento. A configuração do Pacemaker no Red Hat Enterprise Linux no Azure fornece um exemplo de como criar um dispositivo de isolamento para esse cluster no Azure. Modifique as instruções de seu ambiente.
O isolamento do recurso garante que não haja dados corrompidos em uma interrupção ao configurar um recurso. Por exemplo, você poderá usar o isolamento no nível do recurso para marcar o disco em um nó como desatualizado quando o link de comunicação ficar inativo.
O isolamento no nível do nó garante que um nó não execute nenhum recurso. Isso é feito redefinindo o nó. O Pacemaker dá suporte a uma grande variedade de dispositivos de isolamento. Os exemplos incluem no-break ou cartões de interface de gerenciamento para servidores.
Para obter mais informações sobre o isolamento de um nó com falha, confira os seguintes artigos:
Observação
Como a configuração de isolamento no nível do nó depende muito do seu ambiente, desabilite-a para este tutorial (ela pode ser configurada posteriormente). O script a seguir desabilita o isolamento no nível do nó:
sudo pcs property set stonith-enabled=false
A ação de desabilitar o isolamento é somente para fins de teste. Caso pretenda usar o Pacemaker em um ambiente de produção, você deve planejar uma implementação do isolamento, dependendo do seu ambiente, e mantê-lo habilitado.
Defina a propriedade de cluster cluster-recheck-interval
cluster-recheck-interval
indica o intervalo de sondagem segundo o qual o cluster verifica se há alterações nos parâmetros do recurso, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo associado ao valor failure-timeout
e ao valor cluster-recheck-interval
. Por exemplo, se failure-timeout
for definido como 60 segundos e cluster-recheck-interval
for definido como 120 segundos, será realizada uma tentativa de reinicialização em um intervalo superior a 60 segundos, mas inferior a 120 segundos. Recomendamos que você defina o tempo limite de falha como 60 segundos e cluster-recheck-interval
com um valor superior a 60 segundos. Não é recomendável definir cluster-recheck-interval
com um valor menor.
Para atualizar o valor da propriedade para 2 minutes
, execute:
sudo pcs property set cluster-recheck-interval=2min
Se você já tem um recurso de grupo de disponibilidade gerenciado por um cluster do Pacemaker, o pacote do Pacemaker 1.1.18-11.el7 apresenta uma alteração de comportamento para a configuração de cluster start-failure-is-fatal
quando o valor dela é false
. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária apresentar uma interrupção, o cluster deverá fazer failover para uma das réplicas secundárias disponíveis. Em vez disso, os usuários observarão que o cluster continuará tentando iniciar a réplica primária com falha. Se a primária nunca ficar online (devido a uma interrupção permanente), o cluster nunca fará failover para outra réplica secundária disponível. Devido a essa alteração, a configuração recomendada anteriormente para definir start-failure-is-fatal
não é mais válida, e a configuração precisa ser revertida para o valor padrão de true
.
Além disso, o recurso do AG precisa ser atualizado para 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 failure-timeout
do recurso ag_cluster
para 60s
, execute:
pcs resource update ag_cluster meta failure-timeout=60s
Para saber mais sobre as propriedades de cluster do Pacemaker, confira Propriedades de clusters do Pacemaker.
Criar um logon do SQL Server para o Pacemaker
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O Transact-SQL a seguir cria um logon:
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o usuário do Pacemaker precisará das permissões ALTER
, CONTROL
e VIEW DEFINITION
no grupo de disponibilidade, após ele ser criado mas antes que os nós sejam adicionados a ele.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 do grupo de disponibilidade
Para criar o recurso do grupo de disponibilidade, use o comando pcs resource create
e defina as propriedades do recurso. O comando a seguir cria um recurso do tipo mestre/subordinado ocf:mssql:ag
para o grupo de disponibilidade com o nome ag1
.
RHEL 7
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8
Com a disponibilidade do RHEL 8, a sintaxe create foi alterada. Se você usar o RHEL 8, a terminologia master
foi alterada para promotable
. Use o seguinte comando create em vez do comando acima:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
Observação
Ao criar o recurso e, depois, periodicamente, o agente de recurso do Pacemaker define automaticamente o valor do REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tem três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
como 1
. Para obter detalhes e mais opções de configuração, consulte Alta disponibilidade e proteção de dados para as configurações de grupo de disponibilidade.
Criar recurso de IP virtual
Para criar o recurso de endereço IP virtual, execute o comando a seguir em um nó. 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á nome do servidor virtual equivalente no Pacemaker. Para usar uma cadeia de conexão que aponte para um nome do servidor de cadeia de caracteres, em vez de um endereço IP, registre o endereço de recurso do IP virtual e o nome do servidor virtual desejado no DNS. Para configurações de DR, registre o nome do servidor virtual e o endereço IP desejados com os servidores DNS nos sites primário e de DR.
Adicionar restrição de colocalização
Quase todas as decisões em um cluster do Pacemaker, como escolher o local em que um recurso deve ser executado, são feitas pela comparação de 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 do Pacemaker, você pode 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 menor que INFINITY
, o Pacemaker a considerará uma recomendação. A opção de INFINITY
é obrigatória.
Para verificar se a réplica primária e o recurso de IP virtual são executados no mesmo host, defina uma restrição de colocalização com pontuação igual a INFINITY. Para adicionar a restrição de colocalização, execute o comando a seguir em um nó.
RHEL 7
Quando você cria o recurso ag_cluster
no RHEL 7, ele o cria 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 o cria como ag_cluster-clone
. Use o seguinte comando para o RHEL 8:
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
Adicionar restrição de ordenação
A restrição de colocalização tem uma restrição de ordenação implícita. Ela move o recurso de IP virtual antes de mover o recurso de grupo de disponibilidade. Por padrão, a sequência de eventos é:
O usuário emite pcs resource move
ao grupo de disponibilidade primário do node1 para o node2.
O recurso de IP virtual é interrompido no nó 1.
O recurso de IP virtual é iniciado 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 de pré-failover.
O grupo de disponibilidade primário no nó 1 é rebaixado para secundário.
O grupo de disponibilidade secundário no nó 2 é promovido para primário.
Para impedir que o endereço IP aponte temporariamente para o nó com o secundário de pré-failover, adicione uma restrição de ordenação.
Para adicionar uma restrição de ordenação, execute o comando a seguir em um nó:
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8
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, você não poderá usar o Transact-SQL para fazer failover dos recursos de grupo de disponibilidade. Os recursos de cluster do SQL Server em Linux não são acoplados tão firmemente com o sistema operacional como são em um WSFC (cluster de failover do Windows Server). O serviço SQL Server não reconhece a presença do cluster. Toda a orquestração é feita por meio das ferramentas de gerenciamento de cluster. No RHEL ou no Ubuntu, use pcs
e, no 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, confira Failover.
Conteúdo relacionado
A camada de clustering baseia-se no HAE (Extensão de Alta Disponibilidade) do SUSE criado com base no Pacemaker.
Para obter mais informações sobre configuração de cluster, opções do agente de recursos, gerenciamento, melhores práticas e recomendações, confira Extensão de alta disponibilidade do SUSE Linux Enterprise.
Roteiro
O procedimento para criação de um grupo de disponibilidade para alta disponibilidade é distinto em servidores Linux e 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.
Configurar um gerenciador de recursos de cluster, como o Pacemaker. Essas instruções estão contidas neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição específica do Linux.
Importante
Os ambientes de produção exigem um agente de isolamento para alta disponibilidade. Os exemplos neste artigo não usam agentes de isolamento. Eles se destinam apenas a teste e validação.
Um cluster do Linux usa o isolamento para retornar o cluster a um estado conhecido. A maneira de configurar o isolamento depende da distribuição e do ambiente. Atualmente, o isolamento não está disponível em alguns ambientes de nuvem. Para obter mais informações, confira Extensão de alta disponibilidade do SUSE Linux Enterprise Server.
Adicionar o grupo de disponibilidade como um recurso no cluster
Pré-requisitos
Para concluir o cenário de ponta a ponta a seguir, você precisará de três computadores 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 de cluster. Nesta etapa, use o SLES 12 SP3 com uma assinatura válida para executar o complemento de HA.
Instalar e configurar o serviço SQL Server em todos os nós. Para obter instruções detalhadas, confira Diretrizes de instalação para o SQL Server no Linux.
Designe um nó como primário e outros nós como secundários. Use esses termos em todo este guia.
Verifique se os nós que farão parte do cluster podem 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 precisam conseguir acessar um ao outro via SSH. Ferramentas como hb_report
ou crm_report
(para solução de problemas) e Gerenciador de Histórico do Hawk exigem acesso SSH sem senha entre os nós, caso contrário, elas só podem coletar dados do nó atual. Caso você use uma porta SSH não padrão, use a opção -X (confira a página man
). Por exemplo, se a porta SSH for 3479, invoque um crm_report
com:
sudo crm_report -X "-p 3479" [...]
Para obter mais informações, confira a seção Diversos – Guia de Administração do SLES.
Criar um logon do SQL Server para o Pacemaker
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O Transact-SQL a seguir cria um logon:
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o usuário do Pacemaker precisará das permissões ALTER
, CONTROL
e VIEW DEFINITION
no grupo de disponibilidade, após ele ser criado mas antes que os nós sejam adicionados a ele.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 de cluster. Para configurar o grupo de disponibilidade, confira Configurar um grupo de disponibilidade Always On do SQL Server para alta disponibilidade no Linux
Instalar a extensão de Alta Disponibilidade
Para usar como referência, confira Como instalar o SUSE Linux Enterprise Server e a 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ó
Veja as Instruções de instalação do SLES.
Entre como root
no computador físico ou na máquina virtual que deseja usar como o nó de cluster.
Inicie o script de inicialização executando:
sudo ha-cluster-init
Se o NTP não tiver sido configurado para ser iniciado no momento da inicialização, uma mensagem será exibida.
Se você decidir continuar mesmo assim, o script vai gerar chaves para o acesso SSH automaticamente e a ferramenta de sincronização Csync2 e iniciará os serviços necessários para ambos.
Para configurar a camada de comunicação do cluster (Corosync):
Insira um endereço de rede para associação. Por padrão, o script propõe o endereço de rede eth0. Como alternativa, insira outro endereço de rede, por exemplo, o endereço bond0.
Insira um endereço multicast. O script propõe um endereço aleatório que pode ser usado como padrão.
Insira uma porta multicast. O script propõe 5405 como o padrão.
Para configurar SBD ()
, insira um caminho persistente para a partição do dispositivo de bloqueio que você deseja usar para o SBD. O caminho precisa ser consistente em todos os nós no cluster.
Por fim, o script iniciará o serviço Pacemaker para colocar o cluster de um nó online e habilitará a interface de gerenciamento da Web Hawk2. A URL a ser usada para o Hawk2 é exibida na tela.
Para obter detalhes sobre o processo de instalação, confira /var/log/sleha-bootstrap.log
. Agora você tem um cluster de um nó em execução. Verifique o status do cluster com crm status:
sudo crm status
Você também poderá ver a configuração do cluster com crm configure show xml
ou crm configure show
.
O procedimento de inicialização cria um usuário do Linux chamado hacluster com a senha linux. Substitua a senha padrão por uma segura assim que 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 inicialização ha-cluster-join. O script precisa apenas ter acesso a um nó de cluster existente e concluirá a configuração básica no computador atual automaticamente. Use as seguintes etapas:
Se você tiver configurado os nós de cluster existentes com o módulo de cluster YaST
, verifique se os seguintes pré-requisitos são atendidos antes de executar ha-cluster-join
:
- O usuário raiz nos nós existentes tem chaves SSH em vigor para o logon sem senha.
Csync2
está configurado nos nós existentes. Para obter mais informações, confira Como configurar o Csync2 com o YaST.
Entre como root
no computador físico ou na máquina virtual que deverá ingressar no cluster.
Inicie o script de inicialização executando:
sudo ha-cluster-join
Se o NTP não tiver sido configurado para ser iniciado no momento da inicialização, uma mensagem será exibida.
Caso decida continuar mesmo assim, você precisará inserir o endereço IP de um nó existente. Insira o endereço IP.
Caso ainda não tenha configurado um acesso SSH sem senha entre os dois computadores, você também precisará fornecer a senha raiz do nó existente.
Depois que você fizer logon no nó especificado, o script copiará a configuração do Corosync, configurará o SSH e Csync2
e colocará o computador atual online como o novo nó de cluster. Além disso, ele iniciará o serviço necessário para o Hawk. Se você tiver configurado o armazenamento compartilhado com OCFS2
, ele também criará automaticamente o diretório de ponto de montagem para o sistema de arquivos do OCFS2
.
Repita as etapas anteriores para todos os computadores que deseja adicionar ao cluster.
Para obter detalhes sobre o processo, confira /var/log/ha-cluster-bootstrap.log
.
Verifique o status do cluster com sudo crm status
. Se você tiver adicionado um segundo nó, a saída será semelhante ao seguinte:
sudo crm status
Você verá 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 de IP virtual que é definido durante a configuração inicial do cluster de um nó.
Depois de adicionar todos os nós, verifique se você precisa ajustar a no-quorum-policy nas opções globais de cluster. Isso é especialmente importante para clusters de dois nós.
Defina a propriedade de cluster cluster-recheck-interval
cluster-recheck-interval
indica o intervalo de sondagem segundo o qual o cluster verifica se há alterações nos parâmetros do recurso, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo associado ao valor failure-timeout
e ao valor cluster-recheck-interval
. Por exemplo, se failure-timeout
for definido como 60 segundos e cluster-recheck-interval
for definido como 120 segundos, será realizada uma tentativa de reinicialização em um intervalo superior a 60 segundos, mas inferior a 120 segundos. Recomendamos que você defina o tempo limite de falha como 60 segundos e cluster-recheck-interval
com um valor superior a 60 segundos. Não é recomendável definir cluster-recheck-interval
com um valor menor.
Para atualizar o valor da propriedade para 2 minutes
, execute:
crm configure property cluster-recheck-interval=2min
Se você já tem um recurso de grupo de disponibilidade gerenciado por um cluster do Pacemaker, o pacote do Pacemaker 1.1.18-11.el7 apresenta uma alteração de comportamento para a configuração de cluster start-failure-is-fatal
quando o valor dela é false
. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária apresentar uma interrupção, o cluster deverá fazer failover para uma das réplicas secundárias disponíveis. Em vez disso, os usuários observarão que o cluster continuará tentando iniciar a réplica primária com falha. Se a primária nunca ficar online (devido a uma interrupção permanente), o cluster nunca fará failover para outra réplica secundária disponível. Devido a essa alteração, a configuração recomendada anteriormente para definir start-failure-is-fatal
não é mais válida, e a configuração precisa ser revertida para o valor padrão de true
.
Além disso, o recurso do AG precisa ser atualizado para 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 do AG existente failure-timeout
para a execução de 60s
(substitua ag1
pelo nome do recurso de grupo de disponibilidade):
crm configure edit ag1
No editor de texto, adicione meta failure-timeout=60s
depois de qualquer param
e antes de qualquer op
.
Para obter mais informações sobre as propriedades de cluster do Pacemaker, confira Como configurar recursos de cluster.
Considerações sobre NICs (adaptadores de rede) múltiplas
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 do Linux em cada nó.
Durante a configuração do cluster por meio do Pacemaker, o uso do nome do host dos servidores configura o Corosync para definir a configuração para todas as NICs. Queremos apenas a comunicação entre o Pacemaker e o Corosync em uma só NIC. Depois que o cluster do Pacemaker for 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 entre o Pacemaker e o Corosync.
O <hostname>
especificado no arquivo corosync.conf
deve ser o mesmo que a saída fornecida 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 realçadas 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 do Pacemaker exigem o isolamento de um nó com falha usando um dispositivo de isolamento definido para uma configuração de cluster compatível. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, o isolamento traz o cluster para um estado conhecido novamente.
O isolamento de recurso garante, principalmente, que não haja dados corrompidos durante uma interrupção ao configurar um recurso. Você pode usar o isolamento no nível do recurso, por exemplo, com o DRBD (Dispositivo de Bloco Replicado Distribuído) para marcar o disco em um nó como desatualizado quando o link de comunicação ficar inativo.
O isolamento no nível do nó garante que um nó não execute nenhum recurso. Isso é feito pela redefinição do nó, e a implementação do Pacemaker é chamada STONITH. O Pacemaker dá suporte a uma grande variedade de dispositivos de isolamento, como no-break ou adaptadores de rede de gerenciamento para servidores.
Para obter mais informações, consulte:
No momento da inicialização do cluster, o isolamento será desabilitado se nenhuma configuração for detectada. Ele poderá ser habilitado mais tarde pela execução do seguinte comando:
sudo crm configure property stonith-enabled=true
Importante
A ação de desabilitar o isolamento é somente para fins de teste. Caso pretenda usar o Pacemaker em um ambiente de produção, você deve planejar uma implementação do isolamento, dependendo do seu ambiente, e mantê-lo habilitado. O SUSE não fornece agentes de isolamento para nenhum ambiente de nuvem (incluindo o Azure) ou o Hyper-V. Consequentemente, o fornecedor de cluster não é compatível com 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.
Veja o Guia de administração do SLES.
Habilitar o Pacemaker
Habilite o Pacemaker para que ele seja iniciado automaticamente.
Execute o comando a seguir em cada nó do cluster.
systemctl enable pacemaker
Criar recurso do grupo de disponibilidade
O comando a seguir cria e configura o recurso de grupo de disponibilidade para três réplicas do grupo de disponibilidade [ag1]. As operações e os tempos limite do monitor precisam ser especificados explicitamente no SLES com base no fato de que os tempos limite são altamente dependentes da carga de trabalho e precisam ser ajustados cuidadosamente para cada implantação.
Execute o comando em um dos nós do cluster:
Execute crm configure
para abrir o prompt do CRM:
sudo crm configure
No prompt do CRM, execute o comando a seguir 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
Ao criar o recurso e, depois, periodicamente, o agente de recurso do Pacemaker define automaticamente o valor do REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tem três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
como 1
. Para obter detalhes e mais opções de configuração, consulte Alta disponibilidade e proteção de dados para as configurações de grupo de disponibilidade.
Criar recurso de IP virtual
Caso não tenha criado o recurso de IP virtual quando executou ha-cluster-init
, crie esse recurso agora. O comando a seguir cria um recurso de IP virtual. Substitua <**0.0.0.0**>
por um endereço disponível na rede e <**24**>
pelo número de bits na máscara de sub-rede CIDR. Execução em um nó.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<**0.0.0.0**> \
cidr_netmask=<**24**>
Adicionar restrição de colocalização
Quase todas as decisões em um cluster do Pacemaker, como escolher o local em que um recurso deve ser executado, são feitas pela comparação de 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 menor que INFINITY, ela será apenas uma recomendação. Uma pontuação INFINITY significa que ela é obrigatória. Queremos garantir que o primário do grupo de disponibilidade e o recurso de IP virtual sejam executados no mesmo host e, portanto, definimos uma restrição de colocalização com uma pontuação igual a INFINITY.
Para definir a restrição de colocação para o IP virtual ser executado no mesmo 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 colocalização tem uma restrição de ordenação implícita. Ela move o recurso de IP virtual antes de mover o recurso de grupo de disponibilidade. Por padrão, a sequência de eventos é:
- O usuário emite
resource migrate
ao grupo de disponibilidade primário do node1 para o node2.
- O recurso de IP virtual é interrompido no nó 1.
- O recurso de IP virtual é iniciado no nó 2. Neste ponto, o endereço IP aponta temporariamente para o nó 2, enquanto o nó 2 ainda é um secundário de pré-failover.
- O mestre do grupo de disponibilidade no nó 1 é rebaixado.
- O grupo de disponibilidade no nó 2 é promovido a mestre.
Para impedir que o endereço IP aponte temporariamente para o nó com o secundário de pré-failover, adicione uma restrição de ordenação.
Para adicionar uma restrição de ordenação, execute o comando a seguir em um 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, você não poderá usar o Transact-SQL para fazer failover dos recursos de grupo de disponibilidade. Os recursos de cluster do SQL Server em Linux não são acoplados tão firmemente com o sistema operacional como são em um WSFC (cluster de failover do Windows Server). O serviço SQL Server não reconhece a presença do cluster. Toda a orquestração é feita por meio das ferramentas de gerenciamento de cluster. No 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, confira Failover.
Para saber mais, veja:
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 para o SQL Server no Linux.
Configurar o grupo de disponibilidade Always On do SQL Server para alta disponibilidade no Linux.
Configurar um gerenciador de recursos de cluster, como o Pacemaker. Essas instruções estão contidas neste artigo.
A maneira de configurar um gerenciador de recursos de cluster depende da distribuição específica do Linux.
Importante
Os ambientes de produção exigem um agente de isolamento para alta disponibilidade. Os exemplos neste artigo não usam agentes de isolamento. Eles se destinam apenas a teste e validação.
Um cluster do Linux usa o isolamento para retornar o cluster a um estado conhecido. A maneira de configurar o isolamento depende da distribuição e do ambiente. Atualmente, o isolamento não está disponível em alguns ambientes de nuvem.
O isolamento normalmente é implementado no sistema operacional e depende do ambiente. Encontre instruções sobre isolamento 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 para o serviço de alta disponibilidade do Pacemaker, a instância do SQL Server e o 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 desabilitar o firewall, mas isso não é recomendado em um ambiente de produção:
sudo ufw disable
Instale os pacotes do Pacemaker. Em todos os nós, execute os comandos para Ubuntu 20.04. Para obter mais informações sobre como instalar em versões anteriores, confira HA do Ubuntu – 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 do usuário padrão criado ao instalar pacotes do Pacemaker e do Corosync. Use a mesma senha 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 script a seguir 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 seguinte exemplo:
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 corosync.conf
arquivo 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 sobre NICs (adaptadores de rede) múltiplas
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 do Linux em cada nó.
Durante a configuração do cluster por meio do Pacemaker, o uso do nome do host dos servidores configura o Corosync para definir a configuração para todas as NICs. Queremos apenas a comunicação entre o Pacemaker e o Corosync em uma só NIC. Depois que o cluster do Pacemaker for 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 entre o Pacemaker e o Corosync.
O <hostname>
especificado no arquivo corosync.conf
deve ser o mesmo que a saída fornecida 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 realçadas 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 do Pacemaker exigem o isolamento de um nó com falha usando um dispositivo de isolamento definido para uma configuração de cluster compatível. Quando o gerenciador de recursos de cluster não pode determinar o estado de um nó ou de um recurso em um nó, o isolamento traz o cluster para um estado conhecido novamente.
O isolamento de nível do recurso garante que não ocorra corrupção de dados se houver uma interrupção. Você pode usar o isolamento no nível do recurso, por exemplo, com o DRBD (Dispositivo de Bloco Replicado Distribuído) para marcar o disco em um nó como desatualizado quando o link de comunicação ficar inativo.
O isolamento no nível do nó garante que um nó não execute nenhum recurso. Isso é feito pela redefinição do nó, e a implementação do Pacemaker é chamada STONITH. O Pacemaker é compatível com uma grande variedade de dispositivos de isolamento, como no-break ou cartões de interface de gerenciamento para servidores.
Para obter mais informações, confira Clusters do Pacemaker do zero e Isolamento e STONITH.
Como a configuração de isolamento no nível do nó depende muito do seu ambiente, nós a desabilitamos para este tutorial (ela pode ser configurada posteriormente). Execute o script a seguir no nó primário:
sudo crm configure property stonith-enabled=false
Neste exemplo, a ação de desabilitar o isolamento é somente para fins de teste. Caso pretenda usar o Pacemaker em um ambiente de produção, você deve planejar uma implementação do isolamento, dependendo do seu ambiente, e mantê-lo habilitado. Contate o fornecedor do sistema operacional para obter informações sobre os agentes de isolamento em qualquer distribuição específica.
Defina a propriedade de cluster cluster-recheck-interval
A propriedade cluster-recheck-interval
indica o intervalo de sondagem segundo o qual o cluster verifica se há alterações nos parâmetros de recurso, restrições ou outras opções de cluster. Se uma réplica ficar inativa, o cluster tentará reiniciar a réplica em um intervalo associado ao valor failure-timeout
e ao valor cluster-recheck-interval
. Por exemplo, se failure-timeout
for definido como 60 segundos e cluster-recheck-interval
for definido como 120 segundos, será realizada uma tentativa de reinicialização em um intervalo superior a 60 segundos, mas inferior a 120 segundos. Você deve definir failure-timeout
como 60 segundos e cluster-recheck-interval
como um valor maior que 60 segundos. Não é recomendável definir cluster-recheck-interval
como um valor menor.
Para atualizar o valor da propriedade para 2 minutes
, execute:
sudo crm configure property cluster-recheck-interval=2min
Se você já tem um recurso de grupo de disponibilidade gerenciado por um cluster do Pacemaker, o pacote do Pacemaker 1.1.18-11.el7 apresenta uma alteração de comportamento para a configuração de cluster start-failure-is-fatal
quando o valor dela é false
. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária apresentar uma interrupção, o cluster deverá fazer failover para uma das réplicas secundárias disponíveis. Em vez disso, os usuários observarão que o cluster continuará tentando iniciar a réplica primária com falha. Se a primária nunca ficar online (devido a uma interrupção permanente), o cluster nunca fará failover para outra réplica secundária disponível. Devido a essa alteração, a configuração recomendada anteriormente para definir start-failure-is-fatal
não é mais válida, e a configuração precisa ser revertida para o valor padrão de true
.
Além disso, o recurso do AG precisa ser atualizado para 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 do AG existente failure-timeout
para a execução de 60s
(substitua ag1
pelo nome do recurso de grupo de disponibilidade):
sudo crm configure meta failure-timeout=60s
Instale 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
Em todas as instâncias do SQL Server, crie um logon de servidor para o Pacemaker.
O Transact-SQL a seguir cria um logon:
USE [master]
GO
CREATE LOGIN [pacemakerLogin] with PASSWORD= N'ComplexP@$$w0rd!';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
No momento da criação do grupo de disponibilidade, o usuário do Pacemaker precisará das permissões ALTER
, CONTROL
e VIEW DEFINITION
no grupo de disponibilidade, após ele ser criado mas antes que os nós sejam adicionados a ele.
Em todas as instâncias do SQL Server, salve as credenciais para o logon do SQL Server.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo 'ComplexP@$$w0rd!' >> ~/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 do grupo de disponibilidade
Para criar o recurso do grupo de disponibilidade, use o comando sudo crm configure
e defina 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 com o nome 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
Ao criar o recurso e, depois, periodicamente, o agente de recurso do Pacemaker define automaticamente o valor do REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
com base na configuração do grupo de disponibilidade. Por exemplo, se o grupo de disponibilidade tem três réplicas síncronas, o agente definirá REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
como 1
. Para obter detalhes e mais opções de configuração, consulte Alta disponibilidade e proteção de dados para as configurações de grupo de disponibilidade.
Criar recurso de IP virtual
Para criar o recurso de endereço IP virtual, execute o comando a seguir em um nó. 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á nome do 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 usar o endereço IP, registre o endereço de recurso do IP e o nome do servidor virtual desejado no DNS. Para configurações de DR, registre o nome do servidor virtual e o endereço IP desejados com os servidores DNS nos sites primário e de DR.
Adicionar restrição de colocalização
Quase todas as decisões em um cluster do Pacemaker, como escolher o local em que um recurso deve ser executado, são feitas pela comparação de 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 menor que INFINITY, ela será apenas uma recomendação. Uma pontuação igual a INFINITY significa que ela é obrigatória.
Para garantir que a réplica primária e o recurso de IP virtual estejam no mesmo host, defina uma restrição de colocalização com pontuação igual a INFINITY. Para adicionar a restrição de colocalização, execute o comando a seguir em um nó.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
Adicionar restrição de ordenação
A restrição de colocalização tem uma restrição de ordenação implícita. Ela move o recurso de IP virtual antes de mover o recurso de grupo de disponibilidade. Por padrão, a sequência de eventos é:
O usuário emite pcs resource move
ao grupo de disponibilidade primário do node1
para o node2
.
O recurso de IP virtual é interrompido no node1
.
O recurso de IP virtual é iniciado no node2
.
Neste ponto, o endereço IP aponta temporariamente para o node2
, enquanto o node2
ainda é um secundário de pré-failover.
O grupo de disponibilidade primário no node1
é rebaixado para secundário.
O grupo de disponibilidade secundário no node2
é promovido para primário.
Para impedir que o endereço IP aponte temporariamente para o nó com o secundário de pré-failover, adicione uma restrição de ordenação.
Para adicionar uma restrição de ordenação, execute o comando a seguir 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, você não poderá usar o Transact-SQL para fazer failover dos recursos de grupo de disponibilidade. Os recursos de cluster do SQL Server em Linux não são acoplados tão firmemente com o sistema operacional como são em um WSFC (cluster de failover do Windows Server). O serviço SQL Server não reconhece a presença do cluster. Toda a orquestração é feita por meio das ferramentas de gerenciamento de cluster.
Conteúdo relacionado