Mengonfigurasi instans kluster failover - iSCSI - SQL Server di Linux
Berlaku untuk: SQL Server - Linux
Artikel ini menjelaskan cara mengonfigurasi penyimpanan iSCSI untuk instans kluster failover (FCI) di Linux.
Mengonfigurasi iSCSI
iSCSI menggunakan jaringan untuk menyajikan disk dari server yang dikenal sebagai target ke server. Server yang terhubung ke target iSCSI mengharuskan inisiator iSCSI dikonfigurasi. Disk pada target diberikan izin eksplisit sehingga hanya inisiator yang seharusnya dapat mengaksesnya yang dapat melakukannya. Target itu sendiri harus sangat tersedia dan dapat diandalkan.
Informasi target iSCSI penting
Meskipun bagian ini tidak mencakup cara mengonfigurasi target iSCSI karena khusus untuk jenis sumber yang Anda gunakan, pastikan bahwa keamanan untuk disk yang akan digunakan oleh node kluster dikonfigurasi.
Target tidak boleh dikonfigurasi pada salah satu simpul FCI jika menggunakan target iSCSI berbasis Linux. Untuk performa dan ketersediaan, jaringan iSCSI harus terpisah dari jaringan yang digunakan oleh lalu lintas jaringan reguler pada sumber dan server klien. Jaringan yang digunakan untuk iSCSI harus cepat. Ingatlah bahwa jaringan memang menggunakan beberapa bandwidth prosesor, jadi rencanakan dengan sesuai jika menggunakan server biasa.
Hal terpenting untuk memastikan selesai pada target adalah bahwa disk yang dibuat diberi izin yang tepat sehingga hanya server yang berpartisipasi dalam FCI yang memiliki akses ke mereka. Contoh ditampilkan di sini dari target Microsoft iSCSI tempat linuxnodes1
nama dibuat, dan dalam hal ini, alamat IP simpul ditetapkan sehingga NewFCIDisk1.vhdx
muncul padanya.
Petunjuk
Bagian ini mencakup cara mengonfigurasi inisiator iSCSI di server yang berfungsi sebagai simpul untuk FCI. Instruksi harus berfungsi apa adanya di Red Hat Enterprise Linux (RHEL) dan Ubuntu.
Untuk informasi selengkapnya tentang inisiator iSCSI untuk distribusi yang didukung, lihat tautan berikut:
Pilih salah satu server yang akan berpartisipasi dalam konfigurasi FCI. Tidak masalah yang mana. iSCSI harus berada di jaringan khusus, jadi konfigurasikan iSCSI untuk mengenali dan menggunakan jaringan tersebut. Jalankan
sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new
di mana<iSCSIIfaceName>
adalah nama unik atau ramah untuk jaringan. Contoh berikut menggunakaniSCSINIC
:sudo iscsiadm -m iface -I iSCSINIC -o new
Berikut adalah output yang diharapkan.
New interface iSCSINIC added
Edit
/var/lib/iscsi/ifaces/iSCSIIfaceName
. Pastikan nilai berikut benar-benar terisi:iface.net_ifacename
adalah nama kartu jaringan seperti yang terlihat di OS.iface.hwaddress
adalah alamat MAC dari nama unik yang akan dibuat untuk antarmuka berikut.iface.ipaddress
iface.subnet_Mask
Lihat contoh berikut:
Temukan target iSCSI.
sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
<iSCSINetName>
adalah nama unik/ramah untuk jaringan,<TargetIPAddress>
adalah alamat IP target iSCSI, dan<TargetPort>
merupakan port target iSCSI.Berikut adalah output yang diharapkan.
10.181.182.1:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target 10.201.202.1:3260,1 iqn.1991-05.com.contoso:dc1-linuxnodes1-target [2002:b4b5:b601::b4b5:b601]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target [2002:8c9:ca01::c8c9:ca01]:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target
Masuk ke target.
sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
<iSCSIIfaceName>
adalah nama unik/ramah untuk jaringan dan<TargetIPAddress>
merupakan alamat IP target iSCSI.Berikut adalah output yang diharapkan.
Logging in to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] (multiple) Login to [iface: iSCSINIC, target: ian.1991-05.com.contoso:dcl-linuxnodesl-tar get, portal: 10.181.182.1,3260] successful.
Periksa untuk melihat bahwa ada koneksi ke target iSCSI.
sudo iscsiadm -m session
Output terlihat mirip dengan contoh berikut:
tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)
Periksa disk yang terpasang iSCSI.
sudo grep "Attached SCSI" /var/log/messages
Buat volume fisik pada disk iSCSI.
sudo pvcreate /dev/<devicename>
<devicename>
adalah nama perangkat dari langkah sebelumnya.Buat grup volume pada disk iSCSI. Disk yang ditetapkan ke grup volume tunggal dipandang sebagai kumpulan atau koleksi.
sudo vgcreate <VolumeGroupName> /dev/devicename
<VolumeGroupName>
adalah nama grup volume dan<devicename>
merupakan nama perangkat dari Langkah 6.Buat dan verifikasi volume logis untuk disk.
sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
<size>
adalah ukuran volume yang akan dibuat, dan dapat ditentukan dengan G (gigabyte), T (terabyte), dll.,<LogicalVolumeName>
adalah nama volume logis, dan<VolumeGroupName>
merupakan nama grup volume dari langkah sebelumnya.Berikut adalah output yang diharapkan.
Logical volume "FCIDataLV1" created.
Contoh berikut membuat volume 25 GB.
Jalankan
sudo lvs
untuk melihat LVM yang dibuat.Format volume logis dengan sistem file yang didukung. Untuk EXT4, gunakan contoh berikut:
sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
<VolumeGroupName>
adalah nama grup volume dari langkah sebelumnya.<LogicalVolumeName>
adalah nama volume logis dari langkah sebelumnya.Untuk database sistem atau apa pun yang disimpan di lokasi data default, ikuti langkah-langkah ini. Jika tidak, lewati ke Langkah 13.
Pastikan bahwa SQL Server dihentikan di server yang sedang Anda kerjakan.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Beralih sepenuhnya menjadi superuser. Anda tidak menerima pengakuan jika berhasil.
sudo -i
Beralih menjadi
mssql
pengguna. Anda tidak menerima pengakuan jika berhasil.su mssql
Buat direktori sementara untuk menyimpan data SQL Server dan file log. Anda tidak menerima pengakuan jika berhasil.
mkdir <TempDir>
<TempDir>
adalah nama folder. Contoh berikut membuat folder bernama /var/opt/mssql/TempDir.mkdir /var/opt/mssql/TempDir
Salin data SQL Server dan file log ke direktori sementara. Anda tidak menerima pengakuan jika berhasil.
cp /var/opt/mssql/data/* <TempDir>
<TempDir>
adalah nama folder dari langkah sebelumnya.Verifikasi bahwa file berada di direktori.
ls <TempDir>
<TempDir>
adalah nama folder dari langkah-langkah sebelumnya.Hapus file dari direktori data SQL Server yang ada. Anda tidak menerima pengakuan jika berhasil.
rm - f /var/opt/mssql/data/*
Verifikasi bahwa file telah dihapus. Gambar berikut menunjukkan contoh seluruh urutan dari c hingga h.
ls /var/opt/mssql/data
Ketik
exit
untuk beralih kembali keroot
pengguna.Pasang volume logis iSCSI di folder data SQL Server. Anda tidak menerima pengakuan jika berhasil.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data
<VolumeGroupName>
adalah nama grup volume dan<LogicalVolumeName>
merupakan nama volume logis yang dibuat. Contoh sintaks berikut cocok dengan grup volume dan volume logis dari perintah sebelumnya.mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
Ubah pemilik pemasangan menjadi
mssql
. Anda tidak menerima pengakuan jika berhasil.chown mssql /var/opt/mssql/data
Ubah kepemilikan grup pemasangan menjadi
mssql
. Anda tidak menerima pengakuan jika berhasil.chgrp mssql /var/opt/mssql/data
Beralih ke
mssql
pengguna. Anda tidak menerima pengakuan jika berhasil.su mssql
Salin file dari direktori
/var/opt/mssql/data
sementara . Anda tidak menerima pengakuan jika berhasil.cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
Verifikasi bahwa file ada di sana.
ls /var/opt/mssql/data
Masukkan
exit
untuk tidak menjadimssql
.Masukkan
exit
untuk tidak menjadiroot
.Mulai SQL Server. Jika semuanya disalin dengan benar dan keamanan diterapkan dengan benar, SQL Server akan ditampilkan sebagai dimulai.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Hentikan SQL Server dan verifikasi bahwa SQL Server telah dimatikan.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Untuk hal-hal selain database sistem, seperti database pengguna atau cadangan, ikuti langkah-langkah ini. Jika hanya menggunakan lokasi default, lewati ke Langkah 14.
Beralih menjadi superuser. Anda tidak menerima pengakuan jika berhasil.
sudo -i
Buat folder yang akan digunakan oleh SQL Server.
mkdir <FolderName>
<FolderName>
adalah nama folder. Jalur lengkap folder perlu ditentukan jika tidak berada di lokasi yang tepat. Contoh berikut membuat folder bernama /var/opt/mssql/userdata.mkdir /var/opt/mssql/userdata
Pasang volume logis iSCSI di folder yang dibuat di langkah sebelumnya. Anda tidak menerima pengakuan jika berhasil.
mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
<VolumeGroupName>
adalah nama grup volume,<LogicalVolumeName>
adalah nama volume logis yang dibuat, dan<FolderName>
merupakan nama folder. Contoh sintaks ditampilkan di sini.mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Ubah kepemilikan folder yang dibuat menjadi
mssql
. Anda tidak menerima pengakuan jika berhasil.chown mssql <FolderName>
<FolderName>
adalah nama folder yang dibuat. Contoh ditunjukkan di sini.chown mssql /var/opt/mssql/userdata
Ubah grup folder yang dibuat menjadi
mssql
. Anda tidak menerima pengakuan jika berhasil.chown mssql <FolderName>
<FolderName>
adalah nama folder yang dibuat. Contoh ditunjukkan di sini.chown mssql /var/opt/mssql/userdata
Ketik
exit
untuk tidak lagi menjadi superuser.Untuk menguji, buat database di folder tersebut. Skrip berikut membuat database, mengalihkan konteks ke database tersebut, memverifikasi bahwa file ada di tingkat OS, lalu menghapus lokasi sementara. Anda dapat menggunakan SSMS atau sqlcmd untuk menjalankan skrip ini.
DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON (NAME = TestDB_Data, FILENAME = '/var/opt/mssql/userdata/TestDB_Data.mdf') LOG ON (NAME = TestDB_Log, FILENAME = '/var/opt/mssql/userdata/TestDB_Log.ldf'); GO USE TestDB; GO
Jalankan perintah berikut di shell untuk melihat file database baru.
sudo ls /var/opt/mssal/userdata
Berikut adalah output yang diharapkan.
lost+found TestDB_Data.mdf TestDB_Log.ldf
Hapus database untuk dibersihkan.
DROP DATABASE TestDB; GO
sudo ls /var/opt/mssal/userdata
Berikut adalah output yang diharapkan.
lost+found
Melepas kaitan berbagi
sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
<VolumeGroupName>
adalah nama grup volume,<LogicalVolumeName>
adalah nama volume logis yang dibuat, dan<FolderName>
merupakan nama folder. Contoh sintaks ditampilkan di sini.sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
Konfigurasikan server sehingga hanya Pacemaker yang dapat mengaktifkan grup volume.
sudo lvmconf --enable-halvm --services -startstopservices
Buat daftar grup volume di server. Apa pun yang tercantum yang bukan disk iSCSI digunakan oleh sistem, seperti untuk disk OS.
sudo vgs
Ubah bagian konfigurasi aktivasi file /etc/lvm/lvm.conf. Konfigurasikan baris berikut:
volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
<ListOfVGsNotUsedByPacemaker>
adalah daftar grup volume dari output Langkah 20 yang tidak digunakan oleh FCI. Letakkan masing-masing dalam tanda kutip dan pisahkan oleh koma. Contoh ditunjukkan di sini.Ketika Linux dimulai, linux memasang sistem file. Untuk memastikan bahwa hanya Pacemaker yang dapat memasang disk iSCSI, bangun kembali gambar sistem file akar.
Jalankan perintah berikut, yang mungkin membutuhkan waktu beberapa saat untuk diselesaikan. Anda tidak mendapatkan pesan kembali jika berhasil.
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
Mulai ulang server.
Di server lain yang akan berpartisipasi dalam FCI, lakukan Langkah 1 - 6. Ini menyajikan target iSCSI ke SQL Server.
Buat daftar grup volume di server. Ini akan menampilkan grup volume yang dibuat sebelumnya.
sudo vgs
Mulai SQL Server dan verifikasi bahwa SQL Server dapat dimulai pada server ini.
sudo systemctl start mssql-server sudo systemctl status mssql-server
Hentikan SQL Server dan verifikasi bahwa SQL Server telah dimatikan.
sudo systemctl stop mssql-server sudo systemctl status mssql-server
Ulangi Langkah 1 - 6 di server lain yang akan berpartisipasi dalam FCI.
Anda sekarang siap untuk mengonfigurasi FCI.