Bagikan melalui


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.

Cuplikan layar inisiator.

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:

  1. 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 menggunakan iSCSINIC:

    sudo iscsiadm -m iface -I iSCSINIC -o new
    

    Berikut adalah output yang diharapkan.

    New interface iSCSINIC added
    
  2. 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:

    Cuplikan layar file dengan nilai yang benar-benar terisi.

  3. 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
    
  4. 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.
    
  5. 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)
    
  6. Periksa disk yang terpasang iSCSI.

    sudo grep "Attached SCSI" /var/log/messages
    

    Cuplikan layar perintah grep dan respons terhadap perintah yang menunjukkan disk SCSI yang terpasang.

  7. Buat volume fisik pada disk iSCSI.

    sudo pvcreate /dev/<devicename>
    

    <devicename> adalah nama perangkat dari langkah sebelumnya.

  8. 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.

  9. 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.

  10. Jalankan sudo lvs untuk melihat LVM yang dibuat.

  11. 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.

  12. Untuk database sistem atau apa pun yang disimpan di lokasi data default, ikuti langkah-langkah ini. Jika tidak, lewati ke Langkah 13.

    1. Pastikan bahwa SQL Server dihentikan di server yang sedang Anda kerjakan.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Beralih sepenuhnya menjadi superuser. Anda tidak menerima pengakuan jika berhasil.

      sudo -i
      
    3. Beralih menjadi mssql pengguna. Anda tidak menerima pengakuan jika berhasil.

      su mssql
      
    4. 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
      
    5. 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.

    6. Verifikasi bahwa file berada di direktori.

      ls <TempDir>
      

      <TempDir> adalah nama folder dari langkah-langkah sebelumnya.

    7. Hapus file dari direktori data SQL Server yang ada. Anda tidak menerima pengakuan jika berhasil.

      rm - f /var/opt/mssql/data/*
      
    8. Verifikasi bahwa file telah dihapus. Gambar berikut menunjukkan contoh seluruh urutan dari c hingga h.

      ls /var/opt/mssql/data
      

      Cuplikan layar perintah ls dan respons terhadap perintah .

    9. Ketik exit untuk beralih kembali ke root pengguna.

    10. 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
      
    11. Ubah pemilik pemasangan menjadi mssql. Anda tidak menerima pengakuan jika berhasil.

      chown mssql /var/opt/mssql/data
      
    12. Ubah kepemilikan grup pemasangan menjadi mssql. Anda tidak menerima pengakuan jika berhasil.

      chgrp mssql /var/opt/mssql/data
      
    13. Beralih ke mssql pengguna. Anda tidak menerima pengakuan jika berhasil.

      su mssql
      
    14. Salin file dari direktori /var/opt/mssql/datasementara . Anda tidak menerima pengakuan jika berhasil.

      cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
      
    15. Verifikasi bahwa file ada di sana.

      ls /var/opt/mssql/data
      
    16. Masukkan exit untuk tidak menjadi mssql.

    17. Masukkan exit untuk tidak menjadi root.

    18. 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
      
    19. Hentikan SQL Server dan verifikasi bahwa SQL Server telah dimatikan.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
  13. Untuk hal-hal selain database sistem, seperti database pengguna atau cadangan, ikuti langkah-langkah ini. Jika hanya menggunakan lokasi default, lewati ke Langkah 14.

    1. Beralih menjadi superuser. Anda tidak menerima pengakuan jika berhasil.

      sudo -i
      
    2. 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
      
    3. 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
      
    4. 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
      
    5. 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
      
    6. Ketik exit untuk tidak lagi menjadi superuser.

    7. 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
      
    8. 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
      
  14. Konfigurasikan server sehingga hanya Pacemaker yang dapat mengaktifkan grup volume.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  15. Buat daftar grup volume di server. Apa pun yang tercantum yang bukan disk iSCSI digunakan oleh sistem, seperti untuk disk OS.

    sudo vgs
    
  16. 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.

    Cuplikan layar memperlihatkan contoh nilai volume_list.

  17. 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)
    
  18. Mulai ulang server.

  19. Di server lain yang akan berpartisipasi dalam FCI, lakukan Langkah 1 - 6. Ini menyajikan target iSCSI ke SQL Server.

  20. Buat daftar grup volume di server. Ini akan menampilkan grup volume yang dibuat sebelumnya.

    sudo vgs
    
  21. Mulai SQL Server dan verifikasi bahwa SQL Server dapat dimulai pada server ini.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  22. Hentikan SQL Server dan verifikasi bahwa SQL Server telah dimatikan.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  23. Ulangi Langkah 1 - 6 di server lain yang akan berpartisipasi dalam FCI.

Anda sekarang siap untuk mengonfigurasi FCI.