MSDTC: Nastavení

V předchozích článcích jsem popisoval princip komunikace a diagnostické nástroje. Nyní nastal čas popsat si vlastní nastavení.

Pro testovací účely mám založené dva samostatné servery, které nejsou v doméně. Server01 má IP adresu 10.0.0.55 a Server02 je dostupný přes IP 10.0.0.56. SQL Server běží na Server02 a připojit se na něj lze přes 10.0.0.56\SQL2016_01.

NetBIOS name

Pro správné fungování je třeba, aby servery byly dostupné přes NetBIOS name. Pro ověření nám může posloužit obyčejný ping.

ping server02

Není-li server02 znám, obvykle ping zahlásí chybu

Ping request could not find host server03. Please check the name and try again.

Na tomto místě se hodí připomenout, jakým způsobem Windows postupují při NetBIOS name resolvingu

  1. NetBIOS name cache
  2. WINS server
  3. B-node broadcast
  4. LMHOSTS file
  5. HOSTS file
  6. DNS server

Nejprve se použije NetBIOS cache, v případě že záznam není nalezen, postupuje se v hledání dál až k DNS serveru. V naší testovací síti se nenalézá žádný DNS ani WINS server, editoval jsem tedy hosts soubor, který naleznete ve složce C:\Windows\System32\drivers\etc

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost
10.0.0.56    server02

Tento obsah hosts souboru je uložen na serveru server01. Obdobně je nutné editovat i hosts soubor na serveru server01.

Po editaci hosts souborů je potřeba z obou serverů zkusit ping na svůj protějšek.

Pinging server02 [10.0.0.56] with 32 bytes of data:
Reply from 10.0.0.56: bytes=32 time=3ms TTL=128
Reply from 10.0.0.56: bytes=32 time=1ms TTL=128
Reply from 10.0.0.56: bytes=32 time=1ms TTL=128
Reply from 10.0.0.56: bytes=32 time<1ms TTL=128

Ping statistics for 10.0.0.56:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 3ms, Average = 1ms

Rozsah portů

MSDTC obvykle využívá poměrně široký rozsah dynamicky otevíraných portů (1024 – 65535). Nevadilo by to v případě, že servery jsou v jedné doméně a mezi servery neleží nějaký externí firewall. Z bezpečnostního hlediska není tedy příliš vhodné otevírat na firewallu všechny porty, proto je potřeba omezit MSDTC v otevírání portů.

DTC Settings 1

Otevřeme si Component Services (Administrative Tools -> Component Services), zvolíme vlastnosti My Computer, záložka Default Protocols. Po stitsku tlačítka Add si vybereme Connection-oriented TCP/IP a zvolíme si rozsah portů, který nám bude vyhovovat. Minimální počet portů v rozsahu by měl být 20 nicméně záleží na infrastruktuře a vytíženosti serverů. Osobně bych zvolil nejméně 100 portů ve vybraném rozsahu.
Toto nastavení je potřeba provést na všech dotčených serverech.

Registry RPC

Nastavení RPC se ukládá v registrech pod klíčem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc

Firewall

Další důležitou součástí je nastavení firewallu. Nastavení je potřeba provést na všech dotčených serverech.

Inboud Rules

Nejprve je potřeba přidat zvolený rozsah portů mezi povolené příchozí. V našem případě se jedná o 5000-5100.

DTC Settings 3

Dále stačí povolit přednastavená pravidla, které vidíte na obrázku.

Služba MSDTC

V přehledu služeb stačí zkontrolovat, že služba Distributed Transaction Coordinator skutečně běží.

To je vše ohledně nastavení MSDTC, snad jsem na nic nezapomněl. Tímto příspěvkem končí i „miniseriál“ o MSDTC.