Os servidores Exchange não acham demais DCs no próprio site.
Autor: Eduardo Tavares de Almeida
Recentemente tivemos alguns casos onde os servidores Exchange não conseguiam utilizar os controladores de domínios dos sites locais.
Quando o log de diagnóstico para o Topology está habilitado em pelo menos o mínimo, o evento 2080 será gravado no log de aplicação e informará os DCs que o Exchange Server está utilizando.
Caso não esteja habilitado, você poderá habilitar executando o comando no Exchange 2007 e 2010:
Set-EventlogLevel “MSExchange ADAccess\Topology” -Level Minimum
Para o Exchange 2007
Set-EventlogLevel “MSExchange ADAccess\Topology” -Level Low
O evento 2080 traz informações de diversos testes como descrito no KB316300. O conteúdo do evento esperado seria algo parecido com esse abaixo que mostra nesse caso, 3 DCs respondendo como DC e Global Catalog:
Tipo de Evento: Informações
Origem do Evento: MSExchangeDSAccess
Categoria do Evento: Topology
ID do evento: 2080
Descrição:
Process MAD.EXE (PID=1808). DSAccess has discovered the following servers with the following characteristics:
(Server name | Roles | Reachability | Synchronized | GC capable | PDC | SACL right | Critical Data | Netlogon | OS Version)
In-site:
domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1
domaincontroller2.company.com CDG 7 7 1 0 1 1 7 1
Out-of-site:
domaincontroller3.company.com CDG 7 7 1 0 1 1 7 1
Porém nos chamados do suporte, vimos o teste de controlador de domínio com duas formas diferentes.
O primeiro caso aparecia assim:
In-site:
domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1
domaincontroller2.company.com --G 7 7 1 0 1 1 7 1
Out-of-site:
Domaincontroller3.company.com --G 7 7 1 0 1 1 7 1
O segundo cenário só aparecia um servidor:
In-site:
domaincontroller1.company.com CDG 7 7 1 0 0 1 7 1
Out-of-site:
No primeiro caso vemos que ele consegue utilizar o domaincontroller1, mas não o domaincontroller2 ou domaincontroller3 como DC, apesar de passar em quase todos os testes.
No segundo caso, ele não chegava nem a achar os demais DCs, só utilizando o domaincontroller1.
Em ambos os casos, se o DC domaincontroller1 parasse, os serviços do Exchange pararia pois não conseguiria utilizar os demais DCs e GCs.
O comando abaixo deveria mostrar se existe algum DC estático no Exchange e para nossa surpresa não listava nenhum DC.
Get-ExchangeServer ExchangeServername |fl name, StaticDomainControllers, StaticGlobalCatalogs, StaticConfigDomainController
Verificamos as condições dos DCs e estavam com Sysvol compartilhado e replicando normalmente. A replicação vimos com o comando repadmin /showreps.
Utilizando a ferramenta LDP.exe que vem junto com o Support Tools, abrimos uma conexão com do servidor Exchange para o DC e vimos que ele conectava com sucesso e isSynchonzed e isGlobalCatalogReady estavam corretas.
Para tentar, abra o ldp.exe vá em connections e digite o nome do servidor. Os testes podem ser feitos conectando na porta 389 para DC e 3268 para a função de GC. No canto direito procure os dois atributos isSynchonzed e isGlobalCatalogReady que deve estar em TRUE
Usamos a ferramenta nltest para trazer a lista dos DCs no mesmo site e os dois servidores apareciam corretamente.
nltest /dsgetdc: /site:<local site name>
Verificando o artigo KB250570, existe uma forma de configurar DCs manualmente na chave de registro abaixo e em ambos os casos eles estavam configurado o que explica porque não estávamos usando e nem achando os demais.
------------------
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchange ADAccess\Profiles\Default\UserDC1]
"HostName"="domaincontroller1.company.com"
"IsGC"=dword:00000001
------------------
Exportamos a chave para backup e apagamos a “UserDC1”. Aguardamos alguns minutos e os servidores passaram a utilizar todos os DCs locais com sucesso.
Mas fiquei curioso porque o comando Get-ExchangeServer não retornava nenhum DC estático. Como vimos acima, essa configuração fica no registro do servidor não no AD. Dessa forma teríamos que consultar o Active Directory Topology para trazer essas informações, mas o time de produto achou que iria consumir muito desempenho e adicionaram o parâmetro -status. Então, se quisermos consultar os DCs e GCs locais, podemos executar o comando:
Get-ExchangeServer ExchangeServername |fl name, StaticDomainControllers, StaticGlobalCatalogs, StaticConfigDomainController -Status
Mais referências em:
ID do Evento 2080 de MSExchangeDSAccess
No suitable domain controllers in the local site
Directory service server detection and DSAccess usage
Get-ExchangeServer | FL won’t return Static Domain Controllers