Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Artikel ini menjelaskan cara mengonfigurasi Koordinator Transaksi Terdistribusi Microsoft (MSDTC) di Linux.
MSDTC di Linux didukung pada SQL Server 2017 (14.x) Pembaruan Kumulatif 16 dan versi yang lebih baru.
Gambaran Umum
Anda mengaktifkan transaksi terdistribusi di SQL Server di Linux dengan memperkenalkan fungsionalitas pemeta titik akhir MSDTC dan panggilan prosedur jarak jauh (RPC) dalam SQL Server. Secara default, proses pemetaan titik akhir RPC mendengarkan pada port 135 untuk permintaan RPC masuk dan menyediakan informasi komponen terdaftar untuk permintaan jarak jauh. Permintaan jarak jauh dapat menggunakan informasi yang dikembalikan oleh pemeta titik akhir untuk berkomunikasi dengan komponen RPC terdaftar, seperti layanan MSDTC.
Proses memerlukan hak istimewa superuser untuk menghubungkan ke port terkenal (nomor port kurang dari 1024) pada sistem operasi Linux. Untuk menghindari memulai SQL Server dengan hak istimewa root dalam proses pemetaan titik akhir RPC, administrator sistem harus menggunakan iptables untuk membuat Terjemahan Alamat Jaringan sehingga lalu lintas pada port 135 dapat diarahkan ke proses pemetaan titik akhir RPC instans SQL Server.
MSDTC menggunakan dua parameter konfigurasi untuk utilitas mssql-conf :
| pengaturan mssql-conf | Deskripsi |
|---|---|
network.rpcport |
Port TCP yang diikat oleh proses pemeta titik akhir RPC. |
distributedtransaction.servertcpport |
Port yang digunakan oleh server MSDTC untuk mendengarkan. Jika tidak diatur, layanan MSDTC menggunakan port sementara acak setiap kali layanan dijalankan ulang, dan pengecualian firewall perlu dikustomisasi ulang agar layanan MSDTC tetap dapat berkomunikasi. |
Untuk informasi selengkapnya tentang pengaturan ini dan pengaturan MSDTC terkait lainnya, lihat Mengonfigurasi SQL Server di Linux dengan alat mssql-conf.
Standar transaksi yang didukung
Konfigurasi MSDTC berikut didukung:
| Standar transaksi | Sumber data | pengandar ODBC | Driver JDBC |
|---|---|---|---|
| Transaksi OLE-TX | SQL Server di Linux | Ya | Tidak |
| Transaksi terdistribusi XA | Sumber data SQL Server, ODBC lainnya, dan JDBC yang mendukung XA | Ya (memerlukan versi 17.3 atau yang lebih baru) | Ya |
| Transaksi terdistribusi pada server tertaut | SQL Server | Ya | Tidak |
Untuk informasi selengkapnya, lihat Memahami Transaksi XA.
Langkah-langkah konfigurasi MSDTC
Selesaikan tiga langkah berikut untuk mengonfigurasi komunikasi dan fungsionalitas MSDTC untuk SQL Server.
- Konfigurasikan
network.rpcportdandistributedtransaction.servertcpportdengan mssql-conf. - Konfigurasikan firewall untuk mengizinkan komunikasi pada
distributedtransaction.servertcpportdan port 135. - Konfigurasikan perutean server Linux sehingga komunikasi RPC pada port 135 dialihkan ke instans
network.rpcportSQL Server.
Bagian berikut ini memberikan instruksi terperinci untuk setiap langkah.
Mengonfigurasi port RPC dan MSDTC
Konfigurasikan network.rpcport dan distributedtransaction.servertcpport dengan mssql-conf. Langkah ini khusus untuk SQL Server dan umum di semua distribusi yang didukung.
Gunakan mssql-conf untuk mengatur
network.rpcportnilai. Contoh berikut mengaturnya ke 13500.sudo /opt/mssql/bin/mssql-conf set network.rpcport 13500Atur nilai
distributedtransaction.servertcpport. Contoh berikut mengaturnya ke 51999.sudo /opt/mssql/bin/mssql-conf set distributedtransaction.servertcpport 51999Mulai ulang SQL Server.
sudo systemctl restart mssql-server
Mengonfigurasi firewall
Konfigurasikan firewall untuk mengizinkan komunikasi pada servertcpport dan port 135. Langkah ini memungkinkan proses pemetaan titik akhir RPC dan proses MSDTC untuk berkomunikasi secara eksternal ke manajer transaksi dan koordinator lainnya. Prosedur aktual bervariasi tergantung pada distribusi Linux dan firewall Anda.
Contoh berikut menunjukkan cara membuat aturan ini di 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
Penting untuk mengonfigurasi firewall sebelum mengonfigurasi pengaturan port di bagian berikutnya. Memperbarui firewall dapat menghapus aturan perutean port dalam beberapa kasus.
Mengonfigurasi perutean port
Konfigurasikan tabel perutean server Linux sehingga komunikasi RPC pada port 135 dialihkan ke instans network.rpcportSQL Server. Mekanisme konfigurasi untuk penerusan port mungkin berbeda pada distribusi yang berbeda. Bagian berikut memberikan panduan untuk Ubuntu, SUSE Enterprise Linux (SLES), dan Red Hat Enterprise Linux (RHEL).
Ubuntu dan SLES tidak menggunakan layanan firewalld, sehingga aturan iptables adalah mekanisme yang efisien untuk melakukan perutean port. Aturan iptable mungkin tidak bertahan selama restart, sehingga perintah berikut juga memberikan instruksi untuk memulihkan aturan setelah restart.
Buat aturan perutean untuk port 135. Dalam contoh berikut, port 135 diarahkan ke port RPC, 13500, yang ditentukan di bagian sebelumnya. Ganti
<ipaddress>dengan alamat IP server Anda.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 RpcEndPointMapperParameter
--comment RpcEndPointMapperdalam perintah sebelumnya membantu Anda mengelola aturan ini di perintah selanjutnya.Lihat aturan perutean yang Anda buat dengan perintah berikut:
sudo iptables -S -t nat | grep "RpcEndPointMapper"Simpan aturan pengarah ke file di komputer Anda.
sudo iptables-save > /etc/iptables.confUntuk memuat ulang aturan setelah menghidupkan ulang, tambahkan perintah berikut ke
/etc/rc.local(untuk Ubuntu) atau ke/etc/init.d/after.local(untuk SLES):iptables-restore < /etc/iptables.confCatatan
Anda harus memiliki hak istimewa pengguna super (sudo) untuk mengedit
rc.localfile atauafter.local.
iptables-save dan iptables-restore perintah, bersama dengan rc.local/after.local konfigurasi startup, menyediakan mekanisme dasar untuk menyimpan dan memulihkan entri iptables. Bergantung pada distribusi Linux Anda, mungkin ada opsi yang lebih canggih atau otomatis yang tersedia. Misalnya, alternatif Ubuntu adalah iptables-persistent paket untuk membuat entri persisten.
Langkah-langkah sebelumnya mengasumsikan alamat IP tetap. Jika alamat IP untuk instans SQL Server Anda berubah (karena intervensi manual atau DHCP), Anda harus menghapus dan membuat ulang aturan perutean jika Anda membuatnya dengan iptable. Jika Anda perlu membuat ulang atau menghapus aturan perutean yang ada, gunakan perintah berikut untuk menghapus aturan lama RpcEndPointMapper :
sudo iptables -S -t nat | grep "RpcEndPointMapper" | sed 's/^-A //' | while read rule; do iptables -t nat -D $rule; done
Verifikasi
Pada titik ini, SQL Server harus dapat berpartisipasi dalam transaksi terdistribusi. Untuk memverifikasi bahwa SQL Server mendengarkan, jalankan perintah netstat . Jika Anda menggunakan RHEL, Anda mungkin harus terlebih dahulu menginstal paket net-tools :
sudo netstat -tulpn | grep sqlservr
Anda harus melihat output yang mirip dengan berikut ini:
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
Namun, setelah menghidupkan ulang, SQL Server tidak mulai mendengarkan servertcpport hingga transaksi terdistribusi pertama. Dalam hal ini, Anda tidak akan melihat SQL Server mendengarkan port 51999 dalam contoh ini hingga transaksi terdistribusi pertama.
Mengonfigurasi autentikasi pada komunikasi RPC untuk MSDTC
MSDTC untuk SQL Server di Linux tidak menggunakan autentikasi pada komunikasi RPC secara default. Namun, ketika komputer host bergabung ke domain Direktori Aktif, Anda dapat mengonfigurasi MSDTC untuk menggunakan komunikasi RPC terautentikasi dengan menggunakan pengaturan mssql-conf berikut:
| Pengaturan | Deskripsi |
|---|---|
distributedtransaction.allowonlysecurerpccalls |
Konfigurasikan panggilan RPC yang aman hanya untuk transaksi terdistribusi. Nilai defaultnya adalah 0. |
distributedtransaction.fallbacktounsecurerpcifnecessary |
Konfigurasikan panggilan RPC keamanan hanya untuk transaksi terdistribusi. Nilai defaultnya adalah 0. |
distributedtransaction.turnoffrpcsecurity |
Mengaktifkan atau menonaktifkan keamanan RPC untuk transaksi terdistribusi. Nilai defaultnya adalah 0. |
Dukungan dan kompatibilitas
Active Directory
Microsoft merekomendasikan penggunaan MSDTC dengan RPC diaktifkan jika SQL Server terdaftar dalam konfigurasi Direktori Aktif. Jika Anda mengonfigurasi SQL Server untuk menggunakan autentikasi Active Directory, MSDTC menggunakan keamanan RPC autentikasi timbal balik secara default.
Windows dan Linux
Jika klien pada sistem operasi Windows perlu mendaftar ke dalam transaksi terdistribusi dengan SQL Server di Linux, klien harus memiliki versi minimum sistem operasi Windows berikut:
| Sistem operasi | Versi minimum | Build Sistem Operasi |
|---|---|---|
| Windows Server | 1903 | 18362.30.190401-1528 |
| Windows 10 | 1903 | 18362.267 |