Passo-a-Passo: Instalação de uma instância SQL Server 2012 em cluster – Parte 4

Chegamos a última parte desta série de artigos. Para fechar com chave de ouro, vamos falar sobre Distributed Transaction Coordinator, ou simplesmente DTC. Vou tentar passar uma explicação simples e, em seguida, demonstrar como se preparar o DTC para uma instância em Cluster.

O que é o MS DTC?
O MS DTC é um serviço do SO, que vem instalado automaticamente e corre sob a conta de serviço “Network Service”. A sua função é assegurar que as transacções distribuídas são consistentes, mesmo que haja uma falha.

Estas transacções distrinbuidas, podem ser inicializaras quando uma transacção está lidando com múltiplos computadores via rede OU quando a transacção esta lidando com múltiplos processos no mesmo computador.

Todos os participantes desta transacção distribuída trabalham em sincroniza com os outros participantes (computadores) envolvidos a transacção, sempre a espera de efectuar um commit ou abortar o trabalho. Por esta razão, temos que garantir que todos os intervenientes podem se comunicar pela rede.

Preciso configurar o MS DTC no meu ambiente?
A resposta a esta questão, é a padrão para o SQL Server: Depende.
Você precisa entender se o sistema em questão irá ou não lidar com transacções distribuídas.
Se você tem mais do que uma instância no mesmo computador, você não irá precisar do DTC. De outra forma, se você tiver um cluster de dois nós com instâncias correndo em nós diferentes e comunicando entre si, o MS DTC será utilizado.

Outra possibilidade, é você ter o SSIS instalado, além da componente de engine. Neste caso, o MS DTC poderá ser necessário também.

Para mais informação, verifique este link:  http://msdn.microsoft.com/en-us/library/ms189910#MSDTC

Como confirgurar o MS DTC em cluster?
Desde o Windows Server 2008, a instalação de mais do que uma instância do MS DTC é permitida em um servidor/cluster. Então para uma instância de SQL Server em cluster, é uma boa pratica ter uma Role exclusiva para o MS DTC e uma dedicada para cada Role contendo o SQL Server.

Como documentado pela Microsoft, o SQL Sevrer segue o seguinte caminho para escolher o MS DTC a ser utilizado:

  • Utiliza o MS DTC instalado no grupo local, senão
    • Utiliza a instância mapeada do MS DTC, senão
      • Utiliza a instância MS DTC padrão do cluster, senão
        • Utiliza o MS DTC local da máquina aonde o serviço esta a correr.

Para configurar o MS DTC em cluster, precisamos de um disco (que não precisa ser exclusivo) e um hostname.

Para configurar um role exclusiva para o MS DTC, siga os passos:

  1. Clique com o botão direito sobre Roles e escolha a opção “Configure Role”.

    Screen Shot 2014-01-02 at 14.18.43

  2. Uma nova janela irá abrir. Clique em “next”.

    Screen Shot 2014-01-02 at 14.18.52

  3. Escolha a opção “Distributed Transaction Coordinator (DTC)”. Clique em  “Next”.

    Screen Shot 2014-01-02 at 14.19.11

  4. Preencha o hostname no campo “Name” e o IP na coluna “Networks. Clique em “Next”.

    Screen Shot 2014-01-02 at 14.20.33

  5. Escolha o disco a ser utilizado. Clique em “Next”.

    Screen Shot 2014-01-02 at 15.14.42

  6. Reveja as configurações e clique em “Next”.

    Screen Shot 2014-01-02 at 15.14.57

  7. A instalação irá correr, e no fim será apresentado um relatório. Clique em “Finish”.

    Screen Shot 2014-01-02 at 15.15.11

  8. Agora você poderá ver uma nova Role criada, com os recursos seleccionados e o serviço do MS DTC.

Para adicionar um instância do MS DTC na Role do SQL Server, siga os passos:

  1. Clique com o botão direito na Rola do SQL Server, clique em: “Add Resource”->”More Resources” -> “Distributed Transaction Coordinator” (como na imagem).

    Screen Shot 2014-01-02 at 15.30.50

  2. O recurso será criado na Role, agora será necessário configura-lo. Clique com o botão direito sobre “New Distributed Transaction Coordinator” e clique em “Properties”.

    Screen Shot 2014-01-02 at 15.31.20

  3. Conforme referido anteriormente, o DTC precisa de um hostname e um disco. Nas dependências, seleccione estes dois recursos e clique em OK.

    Screen Shot 2014-01-02 at 15.32.44

  4. Agora vamos iniciar o recurso.

    Screen Shot 2014-01-02 at 15.32.55

Como preparar a rede para transacções distribuídas?
Nota: Em ambientes de cluster, você deverá efectuar estes passos apenas uma vez.

  1. Em “Server Manager” clique em “Tools”->”Component Services” ou simplesmente execute o comando “dcomcnfg”.

    Screen Shot 2014-01-02 at 15.33.55

  2. Expanda a árvore, clique com o botão direito na instância de MS DTC desejada e escolha a opção “Properties”.

    Screen Shot 2014-01-03 at 11.46.28

  3. Na tab “Security” seleccione “Network DTC Acess” assim como “Allow Inbound” e “Allow Outbound”, como mostrado na imagem. Clique em OK.

    Screen Shot 2014-01-03 at 11.49.02

  • Descrevendo, por alto cada uma das opções…
    • Network DTC Access“: Activa/Desactiva o acesso a rede.
    • Allow inbound“:  Permite a execução de uma transacção distribuída, iniciada em outra máquina, na máquina na qual esta opção esta activa.
    • Allow outbound“:  Permite que uma transacção distribuída iniciada localmente seja executada em uma outra máquina.
    • Enable XA transactions” e “Enable SNA LU 6.2 Transactions“: Activa/Desactiva estas especificações particulares de transações distribuídas.

Resolvendo problemas com o MS DTC
Existe uma tool chamada DTC Ping que pode nos ajudar a verificar se o DTC está funcionando correctamente em todos os computadores que deverão estar envolvidos em uma transacção.

Siga este link para efectuar o Download: http://www.microsoft.com/en-us/download/details.aspx?id=2868

Recomendo a leitura do seguinte artigo, para aprender como utilizar esta tool, assim como resolver possíveis error: Troubleshooting MSDTC issues with the DTCPing tool.

Outra optima tool é a DTC Tester. Aonde podemos simular transacções distribuídas utilizando o SQL Server:

Screen Shot 2014-01-03 at 14.15.25
Para fazer download siga este link: http://support.microsoft.com/kb/293799 .

Fim
Chegamos ao fim desta série. Existem muitas coisas para se falar sobre best practices e configurações particulares do SQL Server. Certamente iremos abordar estes assuntos nos próximos posts!

Obrigado pela leitura!!

    Posted in Arquivo, Cluster.

    Leave a Reply