Share via


Criar ou configurar um ouvinte de grupo de disponibilidade (SQL Server)

Este tópico descreve como criar ou configurar um único ouvinte de grupo de disponibilidade para um Grupo de Disponibilidade AlwaysOn usando o SQL Server Management Studio, o Transact-SQL ou o PowerShell no SQL Server 2012.

Observação importanteImportante

Para criar o primeiro ouvinte de grupo de disponibilidade de um grupo de disponibilidade, é altamente recomendável ter o SQL Server Management Studio, o Transact-SQL ou o SQL Server PowerShell. Evite criar um ouvinte diretamente no cluster WSFC, exceto se necessário, por exemplo, para criar um ouvinte adicional.

  • Antes de começar:

    Já existe um ouvinte para esse grupo de disponibilidade?

    Limitações e restrições

    Recomendações

    Pré-requisitos

    Requisitos para o nome DNS de um ouvinte de grupo de disponibilidade

    Permissões do Windows

    Permissões do SQL Server

  • Para criar ou configurar um ouvinte de grupo de disponibilidade, usando:

    SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Solução de problemas

    Falha ao criar um ouvinte do grupo de disponibilidade devido a cotas do Active Directory

  • Acompanhamento: após criar um ouvinte do grupo de disponibilidade

    Palavra-chave MultiSubnetFailover e recursos associados

    Configuração RegisterAllProvidersIP

    Configuração HostRecordTTL

    Exemplo de script PowerShell para desabilitar RegisterAllProvidersIP e reduzir o TTL

    Recomendações de acompanhamento

    Criar um ouvinte adicional para um grupo de disponibilidade (opcional)

Antes de começar

Já existe um ouvinte para esse grupo de disponibilidade?

Para determinar se um ouvinte já existe para o grupo de disponibilidade

ObservaçãoObservação

Se já houver um ouvinte e você desejar criar um ouvinte adicional, consulte Para criar um ouvinte adicional para um grupo de disponibilidade (opcional) posteriormente neste tópico.

Limitações e restrições

  • Só é possível criar um ouvinte por grupo de disponibilidade via SQL Server. Geralmente, cada grupo de disponibilidade exige somente um ouvinte. No entanto, alguns cenários de cliente exigem vários ouvintes para um grupo de disponibilidade. Depois de criar um ouvinte pelo SQL Server, você pode usar o Windows PowerShell para clusters de failover ou o Gerenciador de Cluster de Failover do WSFC para criar ouvintes adicionais. Para obter mais informações, consulte Para criar um ouvinte adicional para um grupo de disponibilidade (opcional), posteriormente neste tópico.

Recomendações

O uso de um endereço IP estático é recomendável, embora não obrigatório, para várias configurações de sub-rede.

Pré-requisitos

  • Você deve estar conectado à instância de servidor que hospeda a réplica primária.

  • Se estiver configurando um ouvinte de grupo de disponibilidade em várias sub-redes e estiver planejando usar endereços IP estáticos, você precisará obter os endereços IP estáticos de cada sub-rede que hospeda uma réplica de disponibilidade para o grupo de disponibilidade para o qual está criando o ouvinte. Normalmente, você precisará solicitar os endereços IP estáticos aos administradores de rede.

Observação importanteImportante

Antes de criar seu primeiro ouvinte, é altamente recomendável que você leia Conectividade de cliente AlwaysOn (SQL Server).

Requisitos para o nome DNS de um ouvinte de grupo de disponibilidade

Cada ouvinte de grupo de disponibilidade exige um nome de host DNS que é exclusivo no domínio e no NetBIOS. O nome DNS é um valor da cadeia de caracteres. Este nome pode conter somente caracteres alfanuméricos, traços (-) e hífens (_), em qualquer ordem. Os nomes de host DNS diferenciam maiúsculas de minúsculas. O comprimento máximo é 63 caracteres; no entanto, no SQL Server Management Studio, o comprimento máximo que você pode especificar é 15 caracteres.

Nós recomendamos que você especifique uma cadeia de caracteres significativa. Por exemplo, para um grupo de disponibilidade denominado AG1, um nome de host de DNS significativo seria ag1-listener.

Observação importanteImportante

O NetBIOS reconhece somente os primeiros 15 caracteres no dns_name. Se você tiver dois clusters do WSFC que sejam controlados pelo mesmo Active Directory e tentar criar ouvintes de grupo de disponibilidade nos dois clusters usando nomes com mais de 15 caracteres e um prefixo idêntico de 15 caracteres, você obterá um erro relatando que o recurso Nome de Rede virtual não pôde ser colocado online. Para obter informações sobre regras da nomenclatura de prefixos para nomes DNS, consulte Atribuindo nomes de domínio.

Permissões do Windows

Permissões

Link

O nome do objeto de cluster (CNO) do cluster do WSFC que está hospedando o grupo de disponibilidade deve ter a permissão Create Computer objects.

No Active Directory, um CNO não tem explicitamente, por padrão, a permissão Create Computer objects e pode criar dez objetos de computador virtual (VCOs). Depois que os dez VCOs forem criados, a criação de VCOs adicionais apresentará falha. Você pode evitar isso concedendo explicitamente a permissão ao CNO do cluster do WSFC. Observe que os VCOs dos grupos de disponibilidade que você excluiu não são excluídos automaticamente no Active Directory e são incluídos no limite padrão de dez VCOs, a menos que sejam excluídos manualmente.

ObservaçãoObservação

Em algumas organizações, a política de segurança proíbe a concessão da permissão Create Computer objects às contas de usuário individuais.

Se sua organização exigir que você pré-prepare a conta de computador para um nome de rede virtual de ouvinte, você precisará de associação no grupo Account Operator ou da assistência de seu administrador de domínio.

DicaDica

Geralmente, é mais simples não pré-preparar a conta de computador para um nome de rede virtual de ouvinte. Se possível, deixe a conta ser criada e configurada automaticamente ao executar o Assistente de Alta Disponibilidade do WSFC.

Etapas para pré-preparar uma conta para um serviço ou aplicativo clusterizado no Guia Passo a Passo do Cluster de Failover: Configurando Contas no Active Directory

Ícone de seta usado com o link Voltar ao Início[Início]

Permissões do SQL Server

Tarefa

Permissões

Para criar um ouvinte de grupo de disponibilidade

Requer a associação na função de servidor fixa sysadmin e a permissão de servidor CREATE AVAILABILITY GROUP, a permissão CONTROL AVAILABILITY GROUP, a permissão ALTER ANY AVAILABILITY GROUP ou a permissão CONTROL SERVER.

Para modificar um ouvinte de grupo de disponibilidade existente

Requer a permissão ALTER AVAILABILITY GROUP no grupo de disponibilidade, a permissão CONTROL AVAILABILITY GROUP, a permissão ALTER ANY AVAILABILITY GROUP ou a permissão CONTROL SERVER.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando o SQL Server Management Studio

DicaDica

O Assistente de Novo Grupo de Disponibilidade dá suporte à criação do ouvinte para um novo grupo de disponibilidade.

Para criar ou configurar um ouvinte de grupo de disponibilidade

  1. No Pesquisador de Objetos, conecte-se à instância do servidor que hospeda a réplica primária do grupo de disponibilidade e clique no nome do servidor para expandir a árvore de servidores.

  2. Expanda os nós Alta Disponibilidade AlwaysOn e Grupos de Disponibilidade.

  3. Clique no grupo de disponibilidade cujo ouvinte você deseja configurar e escolha uma das alternativas a seguir:

    • Para criar um ouvinte, clique com o botão direito do mouse no nó Ouvintes do Grupo de Disponibilidade e selecione o comando Novo Ouvinte. Isso abre a caixa de diálogo Novo Ouvinte do Grupo de Disponibilidade. Para obter mais informações, consulte Adicionar Ouvinte do Grupo de Disponibilidade (caixa de diálogo), posteriormente neste tópico.

    • Para alterar o número da porta de um ouvinte existente, expanda o nó Ouvintes do Grupo de Disponibilidade, clique com o botão direito do mouse no ouvinte e selecione o comando Propriedades. Digite o novo número da porta no campo Porta e clique em OK.

Ícone de seta usado com o link Voltar ao Início[Início]

  • Nome DNS do Ouvinte
    Especifica o nome de host DNS do ouvinte de grupo de disponibilidade. O nome DNS é uma cadeia de caracteres que deve ser exclusivo no domínio e no NetBIOS. Este nome pode conter somente caracteres alfanuméricos, traços (-) e hífens (_), em qualquer ordem. Os nomes de host DNS diferenciam maiúsculas de minúsculas. O tamanho máximo é de 15 caracteres.

    Para obter mais informações, consulte Requisitos para o nome DNS de um ouvinte de grupo de disponibilidade, posteriormente neste tópico.

  • Porta
    A porta TPC usada pelo ouvinte.

  • Modo de Rede
    Indica o protocolo TCP usado pelo ouvinte, pode ser:

    • DHCP
      O ouvinte usará um endereço IP dinâmico que é atribuído por um servidor que executa o Protocolo DHCP. O DHCP está limitado a uma única sub-rede.

      Observação importanteImportante

      Nós não recomendamos o DHCP em ambiente de produção. Se houver um tempo de inatividade e a concessão do IP do DHCP expirar, a hora adicional deverá registrar o novo endereço IP da rede DHCP que está associado ao nome DNS do ouvinte e afetará a conectividade do cliente. No entanto, o DHCP é bom para configurar seu ambiente de desenvolvimento e teste para verificar as funções básicas de grupos de disponibilidade e para integração com seus aplicativos.

    • IP Estático
      O ouvinte usará um ou mais endereços IP estáticos. Os endereços IP adicional são opcionais. Para criar um ouvinte do grupo de disponibilidade em várias sub-redes, você deve especificar para cada sub-rede um endereço IP estático na configuração do ouvinte. Entre em contato com seu administrador de rede para obter esses endereços IP estáticos.

      Se você selecionar IP Estático, uma grade de sub-rede será exibida abaixo do campo Modo de Rede. Essa grade exibe informações sobre cada sub-rede que pode ser acessada por este ouvinte de grupo de disponibilidade. Essa grade estará vazia até que você adicione um endereço IP estático clicando em Adicionar.

      As colunas são apresentadas assim:

      • Sub-rede
        Exibe o identificador de cada sub-rede que você adiciona ao ouvinte do grupo de disponibilidade.

      • Endereço IP
        Exibe o endereço IP de uma determinada sub-rede. Para uma determinada sub-rede, o endereço IP é um endereço IPv4 ou um endereço IPv6.

  • Adicionar
    Clique para adicionar um endereço IP estático a uma sub-rede selecionada ou a outra sub-rede para este ouvinte. Essa ação abre a caixa de diálogo Adicionar Endereço IP. Para obter mais informações, consulte o tópico da ajuda Caixa de diálogo Adicionar Endereço IP (SQL Server Management Studio).

  • Remover
    Clique para remover a sub-rede selecionada deste ouvinte.

  • OK
    Clique para criar o ouvinte do grupo de disponibilidade especificado.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando Transact-SQL

Para criar ou configurar um ouvinte de grupo de disponibilidade

  1. Conecte-se à instância de servidor que hospeda a réplica primária.

  2. Use a opção LISTENER da instrução CREATE AVAILABILITY GROUP ou a opção ADD LISTENER da instrução ALTER AVAILABILITY GROUP.

    O exemplo a seguir adiciona um ouvinte de grupo de disponibilidade a um grupo de disponibilidade existente denominado MyAg2. Um nome DNS exclusivo, MyAg2ListenerIvP6, é especificado para esse ouvinte. As duas réplicas estão em sub-redes diferentes e, portanto, como recomendado, o ouvinte usa endereços IP estáticos. Para cada uma das duas réplicas de disponibilidade, a cláusula WITH IP especifica um endereço IP estático 2001:4898:f0:f00f::cf3c and 2001:4898:e0:f213::4ce2, que usa o formato IPv6. Este exemplo também especifica o uso do argumento PORT opcional para especificar a porta 60173 como a porta do ouvinte.

    ALTER AVAILABILITY GROUP MyAg2 
          ADD LISTENER ‘MyAg2ListenerIvP6’ ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173 ); 
    GO
    

Usando o PowerShell

Para criar ou configurar um ouvinte de grupo de disponibilidade

  1. Altere o diretório (cd) para a instância do servidor que hospeda a réplica primária.

  2. Para criar ou modificar um ouvinte de grupo de disponibilidade, use um dos cmdlets a seguir:

    • New-SqlAvailabilityGroupListener
      Cria um novo ouvinte de grupo de disponibilidade e conecta-o a um grupo de disponibilidade existente.

      Por exemplo, o comando New-SqlAvailabilityGroupListener a seguir cria ou ouvinte de grupo de disponibilidade denominado MyListener para o grupo de disponibilidade MyAg. Este ouvinte usará o endereço IPv4 passado para o parâmetro -StaticIp como seu endereço IP virtual.

      New-SqlAvailabilityGroupListener -Name MyListener ` 
      -StaticIp '192.168.3.1/255.255.252.0' ` 
      -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg
      
    • Set-SqlAvailabilityGroupListener
      Modifica a configuração de porta em um ouvinte de grupo de disponibilidade existente.

      Por exemplo, o comando Set-SqlAvailabilityGroupListener a seguir define o número da porta para o ouvinte de grupo de disponibilidade denominado MyListener to 1535. Esta porta é usada para ouvir conexões para o ouvinte.

      Set-SqlAvailabilityGroupListener -Port 1535 ` 
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\MyListener
      
    • Add-SqlAGListenerstaticIp
      Adiciona um endereço IP estático à configuração de um ouvinte de grupo de disponibilidade existente. O endereço IP poderá ser um endereço IPv4 com sub-rede ou um endereço IPv6.

      Por exemplo, o comando Add-SqlAGListenerstaticIp a seguir adiciona um endereço IPv4 estático ao ouvinte do grupo de disponibilidade MyListener no grupo de disponibilidade MyAg. Este endereço IPv6 serve como o endereço IP virtual do ouvinte na sub-rede 255.255.252.0. Se o grupo de disponibilidade abranger diversas sub-redes, você deverá adicionar um endereço IP estático para cada sub-rede para o ouvinte.

      $path = "SQLSERVER:\SQL\PrimaryServer\InstanceName\AvailabilityGroups\MyAg\AGListeners\ MyListener" ` 
      Add-SqlAGListenerstaticIp -Path $path ` 
      -StaticIp "2001:0db8:85a3:0000:0000:8a2e:0370:7334" 
      
    ObservaçãoObservação

    Para exibir a sintaxe de um cmdlet, use o cmdlet Get-Help no ambiente do SQL Server PowerShell. Para obter mais informações, consulte Obter Ajuda do SQL Server PowerShell.

Para configurar e usar o provedor do SQL Server PowerShell

Ícone de seta usado com o link Voltar ao Início[Início]

Solução de problemas

Falha ao criar um ouvinte do grupo de disponibilidade devido a cotas do Active Directory

Pode haver falha na criação de um novo ouvinte de grupo de disponibilidade porque você atingiu uma cota do Active Directory para a conta da máquina do nó de cluster participante. Para obter mais informações, consulte os artigos a seguir.

Ícone de seta usado com o link Voltar ao Início[Início]

Acompanhamento: após criar um ouvinte do grupo de disponibilidade

Palavra-chave MultiSubnetFailover e recursos associados

MultiSubnetFailover é uma nova palavra-chave de cadeia de conexão usada para habilitar o failover mais rápido com os Grupos de Disponibilidade AlwaysOn e as Instâncias de Cluster de Failover AlwaysOn no SQL Server 2012. Os três sub-recursos a seguir são habilitados quando MultiSubnetFailover=True está definido na cadeia de conexão:

  • Um failover de várias sub-redes mais rápido para um ouvinte de várias sub-redes para um Grupo de Disponibilidade AlwaysOn ou instâncias de cluster de failover.

  • Um failover de sub-rede única mais rápido para um ouvinte de sub-rede única para um Grupo de Disponibilidade AlwaysOn ou instâncias de cluster de failover.

    • Esse recurso é usado ao conectar-se a um ouvinte que tem um IP único em uma única sub-rede. Isso realiza tentativas de conexão de TCP mais agressivas para acelerar os failovers de sub-rede única.
  • A resolução de instância nomeada para uma instância de cluster de failover AlwaysOn de várias sub-redes.

    • Isso é para adicionar o suporte à resolução de instância nomeada para uma instância de cluster de failover AlwaysOn com diversos pontos de extremidade de sub-rede.

Não há suporte para MultiSubnetFailover=True no .NET Framework 3.5 ou OLEDB

Problema: se seu Grupo de Disponibilidade ou Instância de Cluster de Failover tiver um nome de ouvinte (conhecido como o nome da rede ou o Ponto de Acesso para Cliente no Gerenciador de Cluster do WSFC) que dependa dos diversos endereços IP de diferentes sub-redes, e você estiver usando o ADO.NET com .NET Framework 3.5SP1 ou SQL Native Client 11.0 OLEDB, possivelmente 50% das suas solicitações de conexão de cliente para o ouvinte do grupo de disponibilidade atingirão um tempo limite de conexão.

Soluções alternativas: é recomendável que você execute uma das tarefas a seguir.

  • Se você não tiver a permissão para manipular recursos de cluster, altere o tempo limite da conexão para 30 segundos (esse valor resulta em um período de tempo limite TCP de 20 segundos mais um buffer de 10 segundos).

    Prós: se ocorrer um failover de sub-rede cruzado, o tempo de recuperação do cliente será rápido.

    Contras: metade das conexões de cliente demorarão mais de 20 segundos.

  • Se você tiver permissão para manipular os recursos de cluster, a abordagem mais recomendada é definir o nome de rede do ouvinte do grupo de disponibilidade como RegisterAllProvidersIP=0. Para obter mais informações, consulte "Configuração RegisterAllProvidersIP” mais adiante nesta seção.

    Prós: você não precisa aumentar o valor de tempo limite de conexão de cliente.

    Contras: se ocorrer um failover entre sub-redes, o tempo de recuperação do cliente poderá ser de 15 minutos ou mais, dependendo da configuração HostRecordTTL e da configuração da agenda de replicação de DNS/AD entre sites.

Configuração RegisterAllProvidersIP

Quando você usa o SQL Server Management Studio, o Transact-SQL ou o PowerShell para criar um ouvinte de grupo de disponibilidade, o Ponto de Acesso para Cliente é criado no WSFC com a propriedade RegisterAllProvidersIP definida como 1 (true). O efeito de esse valor de propriedade depende da cadeia de conexão do cliente, da seguinte maneira:

  • Cadeias de conexão que definem MultiSubnetFailover como true

    Grupos de Disponibilidade AlwaysOn define a propriedade RegisterAllProvidersIP como 1 para reduzir o tempo de reconexão após um failover para clientes cujas cadeias de conexão de cliente especificam MultiSubnetFailover = True, como recomendado. Observe que para aproveitar as vantagens do recurso de várias sub-redes do ouvinte, seus clientes podem exigir um provedor de dados que dê suporte à palavra-chave MultiSubnetFailover. Para obter informações sobre o suporte a driver no failover de várias sub-redes, consulte Conectividade de cliente AlwaysOn (SQL Server).

    Para obter informações sobre clustering de várias sub-redes, consulte Clustering de várias sub-redes do SQL Server (SQL Server).

    DicaDica

    Quando RegisterAllProvidersIP = 1, se você executar o Assistente para Validar Configuração do WSFC no cluster WSFC, o assistente gerará a seguinte mensagem de aviso:

    "A propriedade RegisterAllProviderIP para nome de rede 'Nome:<nome_de_rede>' é definido como 1. Para a configuração do cluster atual, este valor deve ser definido como 0."

    Ignore esta mensagem.

  • Cadeias de conexão que não definem MultiSubnetFailover como true

    Quando RegisterAllProvidersIP = 1 todos os clientes cujas cadeias de conexão não usarem MultiSubnetFailover = True experimentarão conexões de alta latência. Isso ocorre porque esses clientes tentam conexões com todos os IPs em sequência. Em contrapartida, se RegisterAllProvidersIP for alterado para 0, o endereço IP ativo será registrado no Ponto de Acesso para Cliente no cluster WSFC, reduzindo a latência para clientes herdados. Portanto, se você tiver clientes herdados que precisem se conectar a um ouvinte de grupo de disponibilidade e não possa usar a propriedade MultiSubnetFailover, recomendamos alterar RegisterAllProvidersIP para 0.

    Observação importanteImportante

    Quando você cria um ouvinte de grupo de disponibilidade no cluster WSFC (GUI do Gerenciador de Cluster de Failover), RegisterAllProvidersIP será 0 (false) por padrão.

Configuração HostRecordTTL

Por padrão, os clientes armazenam em cache registros DNS do cluster por 20 minutos. Reduzindo a configuração HostRecordTTL, a vida útil (TTL), para o registro armazenado em cache, os clientes herdados poderão se reconectar com mais rapidez. No entanto, a redução da configuração HostRecordTTL também pode resultar em maior tráfego para os servidores DN.

Exemplo de script PowerShell para desabilitar RegisterAllProvidersIP e reduzir o TTL

O exemplo do PowerShell a seguir demonstra como configurar os parâmetros de cluster RegisterAllProvidersIP e HostRecordTTL para o recurso de ouvinte. O registro DNS será armazenado em cache por 5 minutos, e não pelos 20 minutos padrão. A modificação dos dois parâmetros de cluster pode reduzir o tempo de conexão ao endereço IP correto após um failover para clientes herdados que não podem usar o parâmetro MultiSubnetFailover. Substitua yourListenerName pelo nome do ouvinte que você está alterando.

Import-Module FailoverClusters
Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0 
Get-ClusterResource yourListenerName|Set-ClusterParameter HostRecordTTL 300
Stop-ClusterResource yourListenerName
Start-ClusterResource yourListenerName

Para obter mais informações sobre os tempos de recuperação durante um failover, consulte Latência de recuperação do cliente durante failover.

Recomendações de acompanhamento

Após criar um ouvinte de grupo de disponibilidade:

  • Peça ao administrador da rede para reservar o endereço IP do ouvinte para seu uso exclusivo.

  • Informe o nome do host DNS do ouvinte aos desenvolvedores de aplicativos para uso em cadeias de conexão ao pedir conexões cliente com esse grupo de disponibilidade.

  • Incentive os desenvolvedores a atualizar as cadeias de conexão do cliente para especificar MultiSubnetFailover = True, se possível. Para obter informações sobre o suporte a driver no failover de várias sub-redes, consulte Conectividade de cliente AlwaysOn (SQL Server)

Ícone de seta usado com o link Voltar ao Início[Início]

Criar um ouvinte adicional para um grupo de disponibilidade (opcional)

Depois de criar um ouvinte pelo SQL Server, você poderá adicionar um ouvinte adicional, da seguinte maneira:

  1. Crie o ouvinte usando uma das ferramentas a seguir:

  2. Inicie a escuta do SQL Server no novo ouvinte. Após criar um ouvinte adicional, conecte a instância do SQL Server que hospeda a réplica principal do grupo de disponibilidade e use SQL Server Management Studio, Transact-SQL ou PowerShell para modificar a porta do ouvinte.

Para obter mais informações, consulte Como criar vários ouvintes para o mesmo grupo de disponibilidade (um blog da equipe do SQL Server AlwaysOn).

Tarefas relacionadas

Conteúdo relacionado

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Conceitos

Visão geral de grupos de disponibilidade AlwaysOn (SQL Server)

Ouvintes de grupo de disponibilidade, conectividade de cliente e failover de aplicativo (SQL Server)

Clustering de várias sub-redes do SQL Server (SQL Server)