Aracılığıyla paylaş


Yük devretme kümesi örneğini yapılandırma - iSCSI - Linux üzerinde SQL Server

Şunlar için geçerlidir:Linux üzerinde SQL Server

Bu makalede, Linux üzerinde bir yük devretme kümesi örneği (FCI) için iSCSI depolamanın nasıl yapılandırılır açıklanmaktadır.

iSCSI'yi yapılandırma

iSCSI, sunuculara hedef olarak bilinen bir sunucudan disk sunmak için ağ kullanır. iSCSI hedefine bağlanan sunucular, bir iSCSI başlatıcısının yapılandırılmasını gerektirir. Hedefteki disklere, yalnızca erişebilmesi gereken başlatıcıların bunu yapabilmesi için açık izinler verilir. Hedefin kendisi yüksek oranda kullanılabilir ve güvenilir olmalıdır.

Önemli iSCSI hedef bilgileri

Bu bölüm, kullandığınız kaynak türüne özgü olduğundan iSCSI hedefinin nasıl yapılandırılacağını kapsamasa da, küme düğümleri tarafından kullanılacak disklerin güvenliğinin yapılandırıldığından emin olun.

Linux tabanlı bir iSCSI hedefi kullanılıyorsa, hedef hiçbir zaman FCI düğümlerinde yapılandırılmamalıdır. Performans ve kullanılabilirlik için, iSCSI ağları hem kaynak hem de istemci sunucularında normal ağ trafiği tarafından kullanılan ağlardan ayrı olmalıdır. iSCSI için kullanılan ağlar hızlı olmalıdır. Ağın bazı işlemci bant genişliğini tükettiğine dikkat edin, bu nedenle normal bir sunucu kullanıyorsanız buna göre plan yapın.

Hedefte tamamlandığından emin olunması gereken en önemli şey, oluşturulan disklere uygun izinlerin atanması ve böylece yalnızca FCI'ye katılan sunucuların bunlara erişimi olmasıdır. Microsoft iSCSI hedefinden bir örnek gösterilmektedir; burada linuxnodes1, oluşturulan isimdir ve bu durumda, düğümlerin IP adresleri NewFCIDisk1.vhdx onlara görünecek şekilde atanmıştır.

Başlatıcının ekran görüntüsü.

Talimatlar

Bu bölüm, FCI için düğüm olarak hizmet veren sunucularda bir iSCSI başlatıcısının nasıl yapılandırıldığını kapsar. Yönergeler Red Hat Enterprise Linux (RHEL) ve Ubuntu'da olduğu gibi çalışmalıdır.

Desteklenen dağıtımlar için iSCSI başlatıcısı hakkında daha fazla bilgi için aşağıdaki bağlantılara bakın:

  1. FCI yapılandırmasına katılacak sunuculardan birini seçin. Hangisi olduğu önemli değil. iSCSI ayrılmış bir ağda olmalıdır, bu nedenle iSCSI'yi bu ağı tanıyacak ve kullanacak şekilde yapılandırın. sudo iscsiadm -m iface -I <iSCSIIfaceName> -o new'ı çalıştırın, burada <iSCSIIfaceName> ağ için benzersiz veya kolay bir isimdir. Aşağıdaki örnekte iSCSINICkullanılır:

    sudo iscsiadm -m iface -I iSCSINIC -o new
    

    Beklenen çıktı budur.

    New interface iSCSINIC added
    
  2. /var/lib/iscsi/ifaces/iSCSIIfaceNamedüzenleyin. Aşağıdaki değerlerin tamamen doldurulduğundan emin olun:

    • iface.net_ifacename, işletim sisteminde görüldüğü gibi ağ kartının adıdır.
    • iface.hwaddress, aşağıdaki arabirim için oluşturulacak benzersiz adın MAC adresidir.
    • iface.ipaddress
    • iface.subnet_Mask

    Aşağıdaki örne bakın:

    Değerlerin tamamen doldurulduğu dosyanın ekran görüntüsü.

  3. iSCSI hedefini bulun.

    sudo iscsiadm -m discovery -t sendtargets -I <iSCSINetName> -p <TargetIPAddress>:<TargetPort>
    

    <iSCSINetName> ağ için benzersiz/kolay addır, <TargetIPAddress> iSCSI hedefinin IP adresidir ve <TargetPort> iSCSI hedefinin bağlantı noktasıdır.

    Beklenen çıktı budur.

    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. Hedefe giriş yapın.

    sudo iscsiadm -m node -I <iSCSIIfaceName> -p TargetIPAddress -l
    

    <iSCSIIfaceName>, ağın benzersiz/kolay adıdır ve <TargetIPAddress> iSCSI hedefinin IP adresidir.

    Beklenen çıktı budur.

    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. iSCSI hedefine bağlantı olup olmadığını denetleyin.

    sudo iscsiadm -m session
    

    Çıktı aşağıdaki örneğe benzer:

    tcp: [1] 10.105.16.7:3260,1 iqn.1991-05.com.contoso:dcl-linuxnodes1-target (non-flash)
    
  6. iSCSI'ya bağlı diskleri denetleyin.

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

    Grep komutunun ekran görüntüsü ve ekli SCSI disklerini gösteren komutun yanıtı.

  7. iSCSI diskinde fiziksel birim oluşturun.

    sudo pvcreate /dev/<devicename>
    

    <devicename>, önceki adımdaki cihazın adıdır.

  8. iSCSI diskinde bir birim grubu oluşturun. Tek bir birim grubuna atanan diskler havuz veya koleksiyon olarak görülür.

    sudo vgcreate <VolumeGroupName> /dev/devicename
    

    <VolumeGroupName> birim grubunun adıdır ve <devicename> 6. Adımdaki cihazın adıdır.

  9. Disk için mantıksal hacmi oluşturun ve doğrulayın.

    sudo lvcreate -Lsize -n <LogicalVolumeName> <VolumeGroupName>
    

    <size> oluşturulacak birimin boyutudur ve G (gigabayt), T (terabayt) vb. ile belirtilebilir, <LogicalVolumeName> mantıksal birimin adıdır ve <VolumeGroupName> önceki adımdaki birim grubunun adıdır.

    Beklenen çıktı budur.

    Logical volume "FCIDataLV1" created.
    

    Aşağıdaki örnek 25 GB'lık bir birim oluşturur.

  10. Oluşturulan LVM'yi görmek için sudo lvs yürütün.

  11. Mantıksal birimi desteklenen bir dosya sistemiyle biçimlendirin. ext4 için aşağıdaki örneği kullanın:

    sudo mkfs.ext4 /dev/<VolumeGroupName>/<LogicalVolumeName>
    

    <VolumeGroupName>, önceki adımdaki birim grubunun adıdır. <LogicalVolumeName>, önceki adımdaki mantıksal birimin adıdır.

  12. Sistem veritabanları veya varsayılan veri konumunda depolanan herhangi bir şey için şu adımları izleyin. Aksi takdirde, 13. Adıma atlayın.

    1. Üzerinde çalıştığınız sunucuda SQL Server'ın durduruldığından emin olun.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
    2. Tamamen süper kullanıcı olacak şekilde geçiş yapın. Başarılı olursa herhangi bir bildirim almazsınız.

      sudo -i
      
    3. mssql kullanıcı olarak geçiş yapın. Başarılı olursa herhangi bir bildirim almazsınız.

      su mssql
      
    4. SQL Server verilerini ve günlük dosyalarını depolamak için geçici bir dizin oluşturun. Başarılı olursa herhangi bir bildirim almazsınız.

      mkdir <TempDir>
      

      <TempDir> klasörün adıdır. Aşağıdaki örnekte /var/opt/mssql/TempDir adlı bir klasör oluşturulur.

      mkdir /var/opt/mssql/TempDir
      
    5. SQL Server verilerini ve günlük dosyalarını geçici dizine kopyalayın. Başarılı olursa herhangi bir bildirim almazsınız.

      cp /var/opt/mssql/data/* <TempDir>
      

      <TempDir>, önceki adımdaki klasörün adıdır.

    6. Dosyaların dizininde olduğunu doğrulayın.

      ls <TempDir>
      

      <TempDir>, önceki adımlardan gelen klasörün adıdır.

    7. Dosyaları mevcut SQL Server veri dizininden silin. Başarılı olursa herhangi bir bildirim almazsınız.

      rm - f /var/opt/mssql/data/*
      
    8. Dosyaların silindiğini doğrulayın. Aşağıdaki görüntüde c ile h arasında tüm sıranın bir örneği gösterilmektedir.

      ls /var/opt/mssql/data
      

      ls komutunun ekran görüntüsü ve komutun yanıtı.

    9. exit kullanıcıya geri dönmek için root yazın.

    10. iSCSI mantıksal birimini SQL Server veri klasörüne bağlayın. Başarılı olursa herhangi bir bildirim almazsınız.

      mount /dev/<VolumeGroupName>/<LogicalVolumeName> /var/opt/mssql/data
      

      <VolumeGroupName> birim grubunun adı, <LogicalVolumeName> ise oluşturulan mantıksal birimin adıdır. Aşağıdaki örnek söz dizimi, önceki komutun birim grubu ve mantıksal birimiyle eşleşir.

      mount /dev/FCIDataVG1/FCIDataLV1 /var/opt/mssql/data
      
    11. Bağlamanın sahibini mssqlolarak değiştirin. Başarılı olursa herhangi bir bildirim almazsınız.

      chown mssql /var/opt/mssql/data
      
    12. Montaj grubunun sahipliğini mssqlolarak değiştirin. Başarılı olursa herhangi bir bildirim almazsınız.

      chgrp mssql /var/opt/mssql/data
      
    13. mssql kullanıcıya geçin. Başarılı olursa herhangi bir bildirim almazsınız.

      su mssql
      
    14. Geçici dizinindeki dosyaları kopyalayın /var/opt/mssql/data. Başarılı olursa herhangi bir bildirim almazsınız.

      cp /var/opt/mssql/TempDir/* /var/opt/mssql/data
      
    15. Dosyaların orada olduğunu doğrulayın.

      ls /var/opt/mssql/data
      
    16. exitolmaması için mssql girin.

    17. exitolmaması için root girin.

    18. SQL Server'ı başlatın. Her şey doğru kopyalandıysa ve güvenlik doğru uygulandıysa, SQL Server başlatılmış olarak gösterilmelidir.

      sudo systemctl start mssql-server
      sudo systemctl status mssql-server
      
    19. SQL Server'ı durdurun ve kapatıldığını doğrulayın.

      sudo systemctl stop mssql-server
      sudo systemctl status mssql-server
      
  13. Kullanıcı veritabanları veya yedeklemeler gibi sistem veritabanları dışındaki şeyler için aşağıdaki adımları izleyin. Yalnızca varsayılan konumu kullanıyorsanız 14. Adım'a atlayın.

    1. Süper kullanıcı olarak geçiş yapın. Başarılı olursa herhangi bir bildirim almazsınız.

      sudo -i
      
    2. SQL Server tarafından kullanılacak bir klasör oluşturun.

      mkdir <FolderName>
      

      <FolderName> klasörün adıdır. Doğru konumda değilse klasörün tam yolunun belirtilmesi gerekir. Aşağıdaki örnek ,var/opt/mssql/userdata adlı bir klasör oluşturur.

      mkdir /var/opt/mssql/userdata
      
    3. Önceki adımda oluşturulan klasöre iSCSI mantıksal birimini bağlayın. Başarılı olursa herhangi bir bildirim almazsınız.

      mount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
      

      <VolumeGroupName> birim grubunun adıdır, <LogicalVolumeName> oluşturulan mantıksal birimin adıdır ve <FolderName> klasörün adıdır. Örnek söz dizimi burada gösterilmiştir.

      mount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
      
    4. Oluşturulan klasörün sahipliğini mssqlolarak değiştirin. Başarılı olursa herhangi bir bildirim almazsınız.

      chown mssql <FolderName>
      

      <FolderName>, oluşturulan klasörün adıdır. Burada bir örnek gösterilmiştir.

      chown mssql /var/opt/mssql/userdata
      
    5. Oluşturulan klasörün grubunu mssqlolarak değiştirin. Başarılı olursa herhangi bir bildirim almazsınız.

      chown mssql <FolderName>
      

      <FolderName>, oluşturulan klasörün adıdır. Burada bir örnek gösterilmiştir.

      chown mssql /var/opt/mssql/userdata
      
    6. Artık süper kullanıcı olmaması için exit yazın.

    7. Test etmek için bu klasörde bir veritabanı oluşturun. Aşağıdaki betik bir veritabanı oluşturur, bağlamı ona değiştirir, dosyaların işletim sistemi düzeyinde mevcut olup olmadığını doğrular ve sonra geçici konumu siler. Bu betiği çalıştırmak için SSMS veya sqlcmd kullanabilirsiniz.

      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
      

      Yeni veritabanı dosyalarını görmek için kabukta aşağıdaki komutu çalıştırın.

      sudo ls /var/opt/mssal/userdata
      

      Beklenen çıktı budur.

      lost+found TestDB_Data.mdf
      TestDB_Log.ldf
      

      Temizlemek için veritabanını silin.

      DROP DATABASE TestDB;
      GO
      
      sudo ls /var/opt/mssal/userdata
      

      Beklenen çıktı budur.

      lost+found
      
    8. Paylaşımı kaldır

      sudo umount /dev/<VolumeGroupName>/<LogicalVolumeName> <FolderName>
      

      <VolumeGroupName> birim grubunun adıdır, <LogicalVolumeName> oluşturulan mantıksal birimin adıdır ve <FolderName> klasörün adıdır. Örnek söz dizimi burada gösterilmiştir.

      sudo umount /dev/FCIDataVG2/FCIDataLV2 /var/opt/mssql/userdata
      
  14. Sunucuyu yalnızca Pacemaker'ın birim grubunu etkinleştirebilmesi için yapılandırın.

    sudo lvmconf --enable-halvm --services -startstopservices
    
  15. Sunucudaki birim gruplarının listesini oluştur. iSCSI diski dışındaki listelenen öğelerin tümü, işletim sistemi diski gibi sistem tarafından kullanılır.

    sudo vgs
    
  16. /etc/lvm/lvm.conf dosyasının etkinleştirme yapılandırma bölümünü değiştirin. Aşağıdaki satırı yapılandırın:

    volume_list = [ <ListOfVGsNotUsedByPacemaker> ]
    

    <ListOfVGsNotUsedByPacemaker>, 20. Adımın çıktısından FCI tarafından kullanılmayan birim gruplarının listesidir. Her birini tırnak içine alın ve virgülle ayırın. Burada bir örnek gösterilmiştir.

    volume_list değerinin bir örneğini gösteren ekran görüntüsü.

  17. Linux başlatıldığında dosya sistemini bağlar. Yalnızca Pacemaker'ın iSCSI diskini bağlayabilmesini sağlamak için kök dosya sistemi görüntüsünü yeniden oluşturun.

    Tamamlanması birkaç dakika sürebilir, aşağıdaki komutu çalıştırın. Başarılı olursa geri ileti alamazsınız.

    sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
    
  18. Sunucuyu yeniden başlatın.

  19. FCI'ya katılacak başka bir sunucuda 1 - 6. Adımları gerçekleştirin. Bu, iSCSI hedefini SQL Server'a sunar.

  20. Sunucudaki birim gruplarının listesini oluştur. Daha önce oluşturulan birim grubunu göstermelidir.

    sudo vgs
    
  21. SQL Server'ı başlatın ve bu sunucuda başlatılabildiğini doğrulayın.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    
  22. SQL Server'ı durdurun ve kapatıldığını doğrulayın.

    sudo systemctl stop mssql-server
    sudo systemctl status mssql-server
    
  23. FCI'ye katılacak diğer tüm sunucularda 1- 6 arası adımları yineleyin.

Artık FCI'yi yapılandırmaya hazırsınız.