Ketersediaan tinggi untuk NFS pada Azure VM pada SUSE Linux Enterprise Server

Catatan

Sebaiknya sebarkan salah satu layanan NFS pihak pertama Azure: NFS pada volume Azure Files atau NFS ANF untuk menyimpan data bersama dalam sistem SAP yang sangat tersedia. Ketahuilah, bahwa kami membatalkan penekanan arsitektur referensi SAP, menggunakan kluster NFS.

Artikel ini menjelaskan cara menerapkan komputer virtual, mengonfigurasi komputer virtual, memasang kerangka kerja kluster, dan memasang server NFS yang sangat tersedia yang dapat digunakan untuk menyimpan data bersama dari sistem SAP yang sangat tersedia. Panduan ini menjelaskan cara menyiapkan server NFS yang sangat tersedia yang digunakan oleh dua sistem SAP, NW1 dan NW2. Nama-nama sumber daya (misalnya komputer virtual, jaringan virtual) dalam contoh mengasumsikan bahwa Anda telah menggunakan server file SAP templat dengan awalan sumber daya prod.

Catatan

Artikel ini berisi referensi ke istilah yang tidak lagi digunakan Microsoft. Saat istilah dihapus dari perangkat lunak, kami akan menghapusnya dari artikel ini.

Baca terlebih dahulu makalah dan Catatan SAP berikut

Gambaran Umum

Untuk mencapai ketersediaan tinggi, SAP NetWeaver memerlukan server NFS. Server NFS dikonfigurasi dalam kluster terpisah dan dapat digunakan oleh beberapa sistem SAP.

SAP NetWeaver High Availability overview

Server NFS menggunakan nama host virtual khusus dan alamat IP virtual untuk setiap sistem SAP yang menggunakan server NFS ini. Pada Azure, penyeimbang muatan diperlukan untuk menggunakan alamat IP virtual. Konfigurasi yang disajikan menunjukkan penyeimbang beban dengan:

  • Alamat IP frontend 10.0.0.4 untuk NW1
  • Alamat IP frontend 10.0.0.5 untuk NW2
  • Menyelidiki port 61000 untuk NW1
  • Menyelidiki port 61001 untuk NW2

Siapkan server NFS yang sangat tersedia

Sebarkan Linux secara manual melalui portal Microsoft Azure

Dokumen ini mengasumsikan bahwa Anda telah menyebarkan grup sumber daya, Azure Virtual Network, dan subnet.

Sebarkan dua komputer virtual untuk server NFS. Pilih gambar SLES yang sesuai yang didukung dengan sistem SAP Anda. Anda dapat menyebarkan VM di salah satu opsi ketersediaan - set skala, zona ketersediaan, atau set ketersediaan.

Mengonfigurasi load balancer Azure

Ikuti panduan buat load balancer untuk mengonfigurasi load balancer standar untuk ketersediaan tinggi server NFS. Selama konfigurasi load balancer, pertimbangkan poin berikut.

  1. Konfigurasi IP Frontend: Buat dua IP frontend. Pilih jaringan virtual dan subnet yang sama dengan server NFS Anda.
  2. Kumpulan Backend: Buat kumpulan backend dan tambahkan VM server NFS.
  3. Aturan masuk: Buat dua aturan penyeimbangan beban, satu untuk NW1 dan satu lagi untuk NW2. Ikuti langkah yang sama untuk kedua aturan penyeimbangan beban.
    • Alamat IP frontend: Pilih IP frontend
    • Kumpulan backend: Pilih kumpulan backend
    • Periksa "Port ketersediaan tinggi"
    • Protocol: TCP
    • Pemeriksaan Kesehatan: Buat pemeriksaan kesehatan dengan detail di bawah ini (berlaku untuk NW1 dan NW2)
      • Protocol: TCP
      • Port: [misalnya: 61000 untuk NW1, 61001 untuk NW2]
      • Interval: 5
      • Ambang Probe: 2
    • Batas waktu diam (menit): 30
    • Periksa "Aktifkan IP Mengambang"

Catatan

Nomor properti konfigurasi pemeriksaan kesehatanOfProbes, atau dikenal sebagai "Ambang tidak sehat" di Portal, tidak dihormati. Jadi untuk mengontrol jumlah pemeriksaan berturut-turut yang berhasil atau gagal, atur properti "probeThreshold" ke 2. Saat ini tidak dimungkinkan untuk mengatur properti ini menggunakan portal Azure, jadi gunakan perintah Azure CLI atau PowerShell.

Penting

Floating IP tidak didukung pada konfigurasi IP sekunder NIC dalam skenario load-balancing. Untuk detailnya, lihat Azure Load balancer Batasan. Jika Anda memerlukan alamat IP tambahan untuk VM, sebarkan NIC kedua.

Catatan

Ketika VM tanpa alamat IP publik ditempatkan di kumpulan backend internal (tanpa alamat IP publik) penyeimbang beban Azure Standar, tidak akan ada konektivitas internet keluar, kecuali ada konfigurasi tambahan untuk memungkinkan perutean ke titik akhir publik. Untuk detail tentang cara mencapai konektivitas keluar lihat Publik titik akhir konektivitas untuk Virtual Machines menggunakan Azure Standard Load Balancer dalam SAP ketersediaan tinggi skenario.

Penting

  • Jangan aktifkan stempel waktu TCP pada Azure VM yang ditempatkan di belakang Azure Load Balancer. Mengaktifkan tanda waktu TCP akan menyebabkan pemeriksaan kesehatan gagal. Set net.ipv4.tcp_timestamps parameter ke 0. Untuk detailnya, lihat Pemeriksaan kesehatan Load Balancer.
  • Untuk mencegah saptune mengubah nilai yang diatur net.ipv4.tcp_timestamps secara manual dari 0 kembali ke 1, Anda harus memperbarui versi saptune ke 3.1.1 atau yang lebih tinggi. Untuk detail selengkapnya, lihat saptune 3.1.1 – Apakah Saya Perlu Memperbarui?.

Buat kluster Pacemaker

Ikuti langkah-langkah dalam Menyiapkan Pacemaker di SUSE Linux Enterprise Server pada Azure untuk membuat kluster Pacemaker dasar untuk server NFS ini.

Konfigurasikan server NFS

Item berikut diawali dengan [A] - berlaku untuk semua simpul, [1] - hanya berlaku untuk simpul 1 atau [2] - hanya berlaku untuk simpul 2.

  1. [A] Mengatur resolusi nama host

    Anda dapat menggunakan server DNS atau memodifikasi /etc/hosts pada semua simpul. Contoh ini menunjukkan cara menggunakan file /etc/hosts. Ganti alamat IP dan nama host dalam perintah berikut

    sudo vi /etc/hosts
    

    Sisipkan baris berikut ke /etc/hosts. Ubah alamat IP dan nama host agar sesuai dengan lingkungan Anda

    # IP address of the load balancer frontend configuration for NFS
    
    10.0.0.4 nw1-nfs
    10.0.0.5 nw2-nfs
    
  2. [A] Aktifkan server NFS

    Buat entri ekspor NFS root

    sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports'
    
    sudo mkdir /srv/nfs/
    
  3. [A] Pasang komponen drbd

    sudo zypper install drbd drbd-kmp-default drbd-utils
    
  4. [A] Buat partisi untuk perangkat drbd

    Daftarkan semua disk data yang tersedia

    sudo ls /dev/disk/azure/scsi1/
    
    # Example output
    # lun0  lun1
    

    Buat partisi untuk setiap disk data

    sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0'
    sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
    
  5. [A] Buat konfigurasi LVM

    Cantumkan semua partisi yang tersedia

    ls /dev/disk/azure/scsi1/lun*-part*
    
    # Example output
    # /dev/disk/azure/scsi1/lun0-part1  /dev/disk/azure/scsi1/lun1-part1
    

    Buat volume LVM untuk setiap partisi

    sudo pvcreate /dev/disk/azure/scsi1/lun0-part1
    sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1
    sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS
    
    sudo pvcreate /dev/disk/azure/scsi1/lun1-part1
    sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1
    sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
    
  6. [A] Konfigurasikan drbd

    sudo vi /etc/drbd.conf
    

    Pastikan bahwa file drbd.conf berisi dua baris berikut

    include "drbd.d/global_common.conf";
    include "drbd.d/*.res";
    

    Ubah konfigurasi drbd global

    sudo vi /etc/drbd.d/global_common.conf
    

    Tambahkan entri berikut ke bagian penghandel dan net.

    global {
         usage-count no;
    }
    common {
         handlers {
              fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
              after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh";
              split-brain "/usr/lib/drbd/notify-split-brain.sh root";
              pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
         }
         startup {
              wfc-timeout 0;
         }
         options {
         }
         disk {
              md-flushes yes;
              disk-flushes yes;
              c-plan-ahead 1;
              c-min-rate 100M;
              c-fill-target 20M;
              c-max-rate 4G;
         }
         net {
              after-sb-0pri discard-younger-primary;
              after-sb-1pri discard-secondary;
              after-sb-2pri call-pri-lost-after-sb;
              protocol     C;
              tcp-cork yes;
              max-buffers 20000;
              max-epoch-size 20000;
              sndbuf-size 0;
              rcvbuf-size 0;
         }
    }
    
  7. [A] Buat perangkat drbd NFS

    sudo vi /etc/drbd.d/NW1-nfs.res
    

    Masukkan konfigurasi untuk perangkat drbd baru dan keluar

    resource NW1-nfs {
         protocol     C;
         disk {
              on-io-error       detach;
         }
         net {
             fencing  resource-and-stonith;  
         }
         on prod-nfs-0 {
              address   10.0.0.6:7790;
              device    /dev/drbd0;
              disk      /dev/vg-NW1-NFS/NW1;
              meta-disk internal;
         }
         on prod-nfs-1 {
              address   10.0.0.7:7790;
              device    /dev/drbd0;
              disk      /dev/vg-NW1-NFS/NW1;
              meta-disk internal;
         }
    }
    
    sudo vi /etc/drbd.d/NW2-nfs.res
    

    Masukkan konfigurasi untuk perangkat drbd baru dan keluar

    resource NW2-nfs {
         protocol     C;
         disk {
              on-io-error       detach;
         }
         net {
             fencing  resource-and-stonith;  
         }
         on prod-nfs-0 {
              address   10.0.0.6:7791;
              device    /dev/drbd1;
              disk      /dev/vg-NW2-NFS/NW2;
              meta-disk internal;
         }
         on prod-nfs-1 {
              address   10.0.0.7:7791;
              device    /dev/drbd1;
              disk      /dev/vg-NW2-NFS/NW2;
              meta-disk internal;
         }
    }
    

    Buat perangkat drbd dan mulai

    sudo drbdadm create-md NW1-nfs
    sudo drbdadm create-md NW2-nfs
    sudo drbdadm up NW1-nfs
    sudo drbdadm up NW2-nfs
    
  8. [1] Lewati sinkronisasi awal

    sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs
    sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
    
  9. [1] Set simpul utama

    sudo drbdadm primary --force NW1-nfs
    sudo drbdadm primary --force NW2-nfs
    
  10. [1] Tunggu hingga perangkat drbd baru disinkronkan

    sudo drbdsetup wait-sync-resource NW1-nfs
    sudo drbdsetup wait-sync-resource NW2-nfs
    
  11. [1] Buat sistem file pada perangkat drbd

    sudo mkfs.xfs /dev/drbd0
    sudo mkdir /srv/nfs/NW1
    sudo chattr +i /srv/nfs/NW1
    sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1
    sudo mkdir /srv/nfs/NW1/sidsys
    sudo mkdir /srv/nfs/NW1/sapmntsid
    sudo mkdir /srv/nfs/NW1/trans
    sudo mkdir /srv/nfs/NW1/ASCS
    sudo mkdir /srv/nfs/NW1/ASCSERS
    sudo mkdir /srv/nfs/NW1/SCS
    sudo mkdir /srv/nfs/NW1/SCSERS
    sudo umount /srv/nfs/NW1
    
    sudo mkfs.xfs /dev/drbd1
    sudo mkdir /srv/nfs/NW2
    sudo chattr +i /srv/nfs/NW2
    sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2
    sudo mkdir /srv/nfs/NW2/sidsys
    sudo mkdir /srv/nfs/NW2/sapmntsid
    sudo mkdir /srv/nfs/NW2/trans
    sudo mkdir /srv/nfs/NW2/ASCS
    sudo mkdir /srv/nfs/NW2/ASCSERS
    sudo mkdir /srv/nfs/NW2/SCS
    sudo mkdir /srv/nfs/NW2/SCSERS
    sudo umount /srv/nfs/NW2
    
  12. [A] Siapkan deteksi split-brain drbd

    Ketika menggunakan drbd untuk menyinkronkan data dari satu host ke host lain, sesuatu yang biasa disebut split-brain dapat terjadi. Split-brain adalah skenario di mana kedua simpul kluster mempromosikan perangkat drbd menjadi yang utama dan tidak sinkron. Situasi ini mungkin jarang terjadi, tetapi Anda masih ingin menangani dan menyelesaikan split-brain secepat mungkin. Oleh karena itu, penting untuk mendapat pemberitahuan ketika terjadi split-brain.

    Baca dokumentasi drbd resmi tentang cara mengatur pemberitahuan split-brain.

    Pemulihan otomatis dari skenario split-brain mungkin dapat terjadi. Untuk informasi selengkapnya, baca Otomatis split-brain pemulihan kebijakan

Konfigurasikan Kerangka Kerja Kluster

  1. [1] Tambahkan perangkat drbd NFS untuk sistem SAP NW1 ke konfigurasi kluster

    Penting

    Pengujian terbaru mengungkapkan situasi di mana netcat berhenti merespons permintaan karena backlog dan keterbatasannya dalam menangani satu koneksi saja. Sumber daya netcat berhenti mendengarkan permintaan Azure Load Balancer dan IP floating menjadi tidak tersedia.
    Untuk kluster Pacemaker yang ada, kami pernah menyarankan untuk mengganti netcat dengan socat. Saat ini kami menyarankan untuk menggunakan agen sumber daya azure-lb yang merupakan bagian dari agen sumber daya paket dengan persyaratan versi paket berikut:

    • Untuk SLES 12 SP4/SP5, versi setidaknya harus resource-agents-4.3.018.a7fb5035-3.30.1.
    • Untuk SLES 15/15 SP1, versi harus setidaknya agen sumber daya-4.3.0184.6ee15eb2-4.13.1.

    Perhatikan bahwa perubahan akan memerlukan waktu henti singkat.
    Untuk kluster Pacemaker yang ada, jika konfigurasi sudah diubah untuk menggunakan socat seperti yang dijelaskan di Azure Load-Balancer Deteksi Pengerasan, tidak ada persyaratan untuk segera beralih ke agen sumber daya azure-lb.

    sudo crm configure rsc_defaults resource-stickiness="200"
    
    # Enable maintenance mode
    sudo crm configure property maintenance-mode=true
    
    sudo crm configure primitive drbd_NW1_nfs \
      ocf:linbit:drbd \
      params drbd_resource="NW1-nfs" \
      op monitor interval="15" role="Master" \
      op monitor interval="30" role="Slave"
    
    sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \
      meta master-max="1" master-node-max="1" clone-max="2" \
      clone-node-max="1" notify="true" interleave="true"
    
    sudo crm configure primitive fs_NW1_sapmnt \
      ocf:heartbeat:Filesystem \
      params device=/dev/drbd0 \
      directory=/srv/nfs/NW1  \
      fstype=xfs \
      op monitor interval="10s"
    
    sudo crm configure primitive nfsserver systemd:nfs-server \
      op monitor interval="30s"
    sudo crm configure clone cl-nfsserver nfsserver
    
    sudo crm configure primitive exportfs_NW1 \
      ocf:heartbeat:exportfs \
      params directory="/srv/nfs/NW1" \
      options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s"
    
    sudo crm configure primitive vip_NW1_nfs IPaddr2 \
      params ip=10.0.0.4 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW1_nfs \
      fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs
    
    sudo crm configure order o-NW1_drbd_before_nfs inf: \
      ms-drbd_NW1_nfs:promote g-NW1_nfs:start
    
    sudo crm configure colocation col-NW1_nfs_on_drbd inf: \
      g-NW1_nfs ms-drbd_NW1_nfs:Master
    
  2. [1] Tambahkan perangkat drbd NFS untuk sistem SAP NW2 ke konfigurasi kluster

    # Enable maintenance mode
    sudo crm configure property maintenance-mode=true
    
    sudo crm configure primitive drbd_NW2_nfs \
      ocf:linbit:drbd \
      params drbd_resource="NW2-nfs" \
      op monitor interval="15" role="Master" \
      op monitor interval="30" role="Slave"
    
    sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \
      meta master-max="1" master-node-max="1" clone-max="2" \
      clone-node-max="1" notify="true" interleave="true"
    
    sudo crm configure primitive fs_NW2_sapmnt \
      ocf:heartbeat:Filesystem \
      params device=/dev/drbd1 \
      directory=/srv/nfs/NW2  \
      fstype=xfs \
      op monitor interval="10s"
    
    sudo crm configure primitive exportfs_NW2 \
      ocf:heartbeat:exportfs \
      params directory="/srv/nfs/NW2" \
      options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s"
    
    sudo crm configure primitive vip_NW2_nfs IPaddr2 \
      params ip=10.0.0.5 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW2_nfs \
      fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs
    
    sudo crm configure order o-NW2_drbd_before_nfs inf: \
      ms-drbd_NW2_nfs:promote g-NW2_nfs:start
    
    sudo crm configure colocation col-NW2_nfs_on_drbd inf: \
      g-NW2_nfs ms-drbd_NW2_nfs:Master
    

    crossmnt opsi dalam exportfs sumber daya kluster hadir dalam dokumentasi kami untuk kompatibilitas mundur dengan versi SLES yang lebih lama.

  3. [1] Nonaktifkan mode pemeliharaan

    sudo crm configure property maintenance-mode=false
    

Langkah berikutnya