Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server – Linux
Tento článek popisuje, jak nakonfigurovat Microsoft Distributed Transaction Coordinator (MSDTC) v Linuxu.
MSDTC v Linuxu se podporuje v kumulativní aktualizaci 16 a novějších verzích SQL Serveru 2017 (14.x).
Přehled
Distribuované transakce na SQL Serveru v Linuxu povolíte zavedením funkčnosti MSDTC a mapperu koncového bodu pro vzdálené volání procedur (RPC) v rámci SQL Serveru. Ve výchozím nastavení proces mapování koncového bodu RPC naslouchá na portu 135 příchozím požadavkům RPC a poskytuje informace o registrovaných součástech vzdáleným požadavkům. Vzdálené požadavky mohou použít informace vrácené mapovačem koncových bodů ke komunikaci s registrovanými komponentami RPC, jako jsou služby MSDTC.
Proces vyžaduje, aby oprávnění superuživatele byla vázána na dobře známé porty (čísla portů menší než 1024) v Linuxu. Aby se zabránilo spuštění SQL Serveru s kořenovými oprávněními pro proces mapování koncových bodů RPC, musí správci systému použít iptables k vytvoření překladu síťových adres pro směrování provozu na portu 135 do procesu mapování koncového bodu RPC instance SQL Serveru.
MSDTC používá pro nástroj mssql-conf dva parametry konfigurace:
| Nastavení mssql-conf | Popis |
|---|---|
network.rpcport |
Port TCP, ke kterému mapovač koncového bodu RPC vytvoří vazbu. |
distributedtransaction.servertcpport |
Port, na který server MSDTC naslouchá. Pokud není nastavená, služba MSDTC používá náhodný dočasný port při restartování služby a výjimky brány firewall je potřeba překonfigurovat, aby služba MSDTC pokračovala ve komunikaci. |
Další informace o těchto nastaveních a dalších souvisejících nastavení MSDTC naleznete v tématu Konfigurace SQL Serveru v Linuxu pomocí nástroje mssql-conf.
Podporované standardy transakcí
Podporují se následující konfigurace MSDTC:
| Standard transakcí | Zdroje dat | ovladač ODBC | Ovladač JDBC |
|---|---|---|---|
| OLE-TX transakce | SQL Server on Linux | Ano | Ne |
| XA distribuované transakce | SQL Server, další zdroje dat ODBC a JDBC, které podporují XA | Ano (vyžaduje verzi 17.3 nebo novější) | Ano |
| distribuované transakce na propojeném serveru | SQL Server | Ano | Ne |
Další informace naleznete v tématu Principy transakcí XA.
Kroky konfigurace MSDTC
Provedením následujících tří kroků nakonfigurujte komunikaci a funkce MSDTC pro SQL Server.
- Konfigurujte
network.rpcportadistributedtransaction.servertcpportpomocí mssql-conf. - Nakonfigurujte bránu firewall tak, aby umožňovala komunikaci na
distributedtransaction.servertcpporta portu 135. - Nakonfigurujte směrování serveru s Linuxem tak, aby byla komunikace RPC na portu 135 přesměrována na instanci
network.rpcportSQL Serveru .
Následující části obsahují podrobné pokyny pro každý krok.
Konfigurace portů RPC a MSDTC
Konfigurujte network.rpcport a distributedtransaction.servertcpport pomocí mssql-conf. Tento krok je specifický pro SQL Server a společný napříč všemi podporovanými distribucemi.
K nastavení hodnoty použijte
network.rpcportmssql-conf. Následující příklad ho nastaví na 13500.sudo /opt/mssql/bin/mssql-conf set network.rpcport 13500Nastavte hodnotu
distributedtransaction.servertcpport. Následující příklad ho nastaví na 51999.sudo /opt/mssql/bin/mssql-conf set distributedtransaction.servertcpport 51999Restartujte SQL Server.
sudo systemctl restart mssql-server
Nakonfigurujte bránu firewall
Nakonfigurujte bránu firewall tak, aby umožňovala komunikaci na servertcpport a portu 135. Tento krok umožňuje proces mapování koncových bodů RPC a proces MSDTC komunikovat externě s jinými správci transakcí a koordinátory. Skutečný postup se liší v závislosti na vaší linuxové distribuci a bráně firewall.
Následující příklad ukazuje, jak vytvořit tato pravidla pro Ubuntu.
sudo ufw allow from any to any port 51999 proto tcp
sudo ufw allow from any to any port 135 proto tcp
sudo ufw allow from any to any port 13500 proto tcp
Před konfigurací směrování portů v další části je důležité nakonfigurovat bránu firewall. Aktualizace brány firewall může v některých případech vymazat pravidla směrování portů.
Konfigurace směrování portů
Nakonfigurujte směrovací tabulku linuxového serveru tak, aby komunikace RPC na portu 135 byla přesměrována na instanci network.rpcportSQL Serveru . Konfigurační mechanismus přesměrování portů se může lišit v různých distribucích. Následující části obsahují pokyny pro Ubuntu, SUSE Enterprise Linux (SLES) a Red Hat Enterprise Linux (RHEL).
Ubuntu a SLES nepoužívají službu firewalld, takže pravidla iptables jsou efektivním mechanismem pro směrování portů. Pravidla iptables nemusí během restartování trvat, takže následující příkazy také poskytují pokyny k obnovení pravidel po restartování.
Vytvořte pravidla směrování pro port 135. V následujícím příkladu se port 135 směruje na port RPC 13500 definovaný v předchozí části. Nahraďte
<ipaddress>IP adresou vašeho serveru.sudo iptables -t nat -A PREROUTING -d <ip> -p tcp --dport 135 -m addrtype --dst-type LOCAL \ -j DNAT --to-destination <ip>:13500 -m comment --comment RpcEndPointMapper sudo iptables -t nat -A OUTPUT -d <ip> -p tcp --dport 135 -m addrtype --dst-type LOCAL \ -j DNAT --to-destination <ip>:13500 -m comment --comment RpcEndPointMapperParametr
--comment RpcEndPointMapperv předchozích příkazech vám pomůže spravovat tato pravidla v pozdějších příkazech.Zobrazte pravidla směrování, která jste vytvořili, pomocí následujícího příkazu:
sudo iptables -S -t nat | grep "RpcEndPointMapper"Uložte pravidla směrování do souboru na svém počítači.
sudo iptables-save > /etc/iptables.confPokud chcete pravidla po restartování znovu načíst, přidejte do
/etc/rc.local(pro Ubuntu) nebo do/etc/init.d/after.local(pro SLES) následující příkaz:iptables-restore < /etc/iptables.confPoznámka
Abyste mohli upravovat soubory
rc.localneboafter.local, musíte mít oprávnění superuživatele (sudo).
Příkazy iptables-save a iptables-restore příkazy společně src.local/after.localkonfigurací spuštění poskytují základní mechanismus pro ukládání a obnovení položek iptables. V závislosti na vaší linuxové distribuci můžou být k dispozici pokročilejší nebo automatizované možnosti. Alternativou ubuntu je například balíček iptables-persistent k trvalému zadávání položek.
Předchozí kroky předpokládají pevnou IP adresu. Pokud se IP adresa vaší instance SQL Serveru změní (kvůli ručnímu zásahu nebo dhcp), musíte odebrat a znovu vytvořit pravidla směrování, pokud jste je vytvořili pomocí iptables. Pokud potřebujete znovu vytvořit nebo odstranit existující pravidla směrování, pomocí následujícího příkazu odeberte stará RpcEndPointMapper pravidla:
sudo iptables -S -t nat | grep "RpcEndPointMapper" | sed 's/^-A //' | while read rule; do iptables -t nat -D $rule; done
Ověřit
V tuto chvíli by měl být SQL Server schopný účastnit se distribuovaných transakcí. Pokud chcete ověřit, že SQL Server naslouchá, spusťte příkaz netstat . Pokud používáte RHEL, možná budete muset nejdřív nainstalovat balíček net-tools :
sudo netstat -tulpn | grep sqlservr
Měl by se zobrazit výstup podobný následujícímu příkladu:
tcp 0 0 0.0.0.0:1433 0.0.0.0:* LISTEN 13911/sqlservr
tcp 0 0 127.0.0.1:1434 0.0.0.0:* LISTEN 13911/sqlservr
tcp 0 0 0.0.0.0:13500 0.0.0.0:* LISTEN 13911/sqlservr
tcp 0 0 0.0.0.0:51999 0.0.0.0:* LISTEN 13911/sqlservr
tcp6 0 0 :::1433 :::* LISTEN 13911/sqlservr
tcp6 0 0 ::1:1434 :::* LISTEN 13911/sqlservr
tcp6 0 0 :::13500 :::* LISTEN 13911/sqlservr
tcp6 0 0 :::51999 :::* LISTEN 13911/sqlservr
Po restartování však SQL Server nezačne aktivně naslouchat na servertcpport, dokud neproběhne první distribuovaná transakce. V tomto případě byste neviděli SQL Server naslouchat na portu 51999, dokud nedojde k první distribuované transakci.
Konfigurace ověřování při komunikaci RPC pro MSDTC
MSDTC pro SQL Server v Linuxu ve výchozím nastavení nepoužívá ověřování při komunikaci RPC. Pokud je však hostitelský počítač připojený k doméně služby Active Directory, můžete nakonfigurovat msDTC tak, aby používal ověřenou komunikaci RPC pomocí následujících nastavení mssql-conf :
| Nastavení | Popis |
|---|---|
distributedtransaction.allowonlysecurerpccalls |
Konfigurujte pouze zabezpečené volání RPC pro distribuované transakce. Výchozí hodnota je 0. |
distributedtransaction.fallbacktounsecurerpcifnecessary |
Nakonfigurujte volání RPC týkající se pouze zabezpečení pro distribuované transakce. Výchozí hodnota je 0. |
distributedtransaction.turnoffrpcsecurity |
Povolte nebo zakažte zabezpečení RPC pro distribuované transakce. Výchozí hodnota je 0. |
Možnosti podpory a kompatibilita
služba Active Directory
Microsoft doporučuje používat MSDTC s povoleným RPC, pokud je SQL Server zaregistrovaný v konfiguraci služby Active Directory. Pokud nakonfigurujete SQL Server tak, aby používal ověřování služby Active Directory, MSDTC ve výchozím nastavení používá zabezpečení RPC vzájemného ověřování.
Windows a Linux
Pokud klient používající operační systém Windows potřebuje vstoupit do distribuované transakce se SQL Serverem na Linuxu, musí mít následující minimální verzi operačního systému Windows:
| Operační systém | Minimální verze | Sestavení operačního systému |
|---|---|---|
| Windows Server | 1903 | 18362.30.190401-1528 |
| Windows 10 | 1903 | 18362.267 |