توفر عالي لـ NFS على الأجهزة الظاهرية لـ Azure على SUSE Linux Enterprise Server

إشعار

نوصي بنشر إحدى خدمات NFS التابعة لجهة Azure الأولى: NFS على ملفات Azure أو وحدات تخزين NFS ANF لتخزين البيانات المشتركة في نظام SAP عالي التوفر. كن على علم، أننا نزيل التأكيد على البنيات المرجعية ل SAP، باستخدام مجموعات NFS.

توضح هذه المقالة كيفية توزيع الأجهزة الظاهرية وتكوين الأجهزة الظاهرية وتثبيت إطار عمل نظام المجموعة وتثبيت خادم NFS ذي قابلية الوصول العالية يمكن استخدامه لتخزين البيانات المشتركة لنظام SAP ذي قابلية الوصول العالية. يوضح هذا الدليل كيفية إعداد خادم NFS ذي قابلية الوصول العالية الذي يستخدمه نظاما SAP، وهما NW1 وNW2. تفترض أسماء الموارد (على سبيل المثال الأجهزة الظاهرية والشبكات الظاهرية) في المثال أنك استخدمت قالب خادم ملفات SAP مع بادئة الموارد prod.

إشعار

تحتوي هذه المقالة على مراجع للمصطلحات التي لم تعد Microsoft تستخدمها. عند إزالة هذين المصطلحين من البرنامج، ستتم إزالتهما من هذه المقالة.

اقرأ ملاحظات وأوراق SAP التالية أولًا

نظرة عامة

لتحقيق قابلية الوصول العالية، يتطلب SAP NetWeaver خادم NFS. تم تكوين خادم NFS في مجموعة منفصلة ويمكن استخدامه من قِبَل أنظمة SAP متعددة.

نظرة عامة حول توفر SAP NetWeaver العالي

يستخدم خادم NFS اسم مضيف ظاهري مخصص وعناوين IP الظاهرية لكل نظام SAP يستخدم خادم NFS هذا. على Azure، يتطلب موازن تحميل لاستخدام عنوان IP ظاهري. يعرض التكوين المقدم موازنة التحميل مع:

  • عنوان IP أمامي 10.0.0.4 لـ NW1
  • عنوان IP أمامي 10.0.0.5 لـ NW2
  • منفذ فحص 61000 لـ NW1
  • منفذ فحص 61001 لـ NW2

إعداد خادم NFS ذي قابلية وصول عالية

توزيع Linux يدوياً عبر مدخل Azure

يفترض هذا المستند أنك قمت بالفعل بنشر مجموعة موارد وشبكة Azure الظاهرية والشبكة الفرعية.

نشر جهازين ظاهريين لخوادم NFS. اختر صورة SLES مناسبة مدعومة مع نظام SAP الخاص بك. يمكنك نشر الجهاز الظاهري في أي من خيارات التوفر - مجموعة التحجيم أو منطقة التوفر أو مجموعة التوفر.

تكوين موازن تحميل Azure

اتبع دليل إنشاء موازن التحميل لتكوين موازن تحميل قياسي لقابلية وصول عالية لخادم NFS. أثناء تكوين موازن التحميل، ضع في اعتبارك النقاط التالية.

  1. تكوين IP للواجهة الأمامية: إنشاء عنواني IP للواجهة الأمامية. حدد نفس الشبكة الظاهرية والشبكة الفرعية مثل خادم NFS الخاص بك.
  2. تجمع الواجهة الخلفية: إنشاء تجمع الخلفية وإضافة الأجهزة الظاهرية لخادم NFS.
  3. القواعد الواردة: إنشاء قاعدتين لموازنة التحميل، واحدة ل NW1 وأخرى ل NW2. اتبع نفس الخطوات لكل من قواعد موازنة التحميل.
    • عنوان IP للواجهة الأمامية: حدد IP للواجهة الأمامية
    • تجمع الواجهة الخلفية: حدد تجمع الواجهة الخلفية
    • تحقق من "منافذ قابلية وصول عالية"
    • Protocol: TCP
    • Health Probe: إنشاء مسبار صحي بالتفاصيل أدناه (ينطبق على كل من NW1 وNW2)
      • Protocol: TCP
      • المنفذ: [على سبيل المثال: 61000 ل NW1، 61001 ل NW2]
      • الفاصل الزمني: 5
      • عتبة الفحص: 2
    • مهلة الخمول (بالدقائق): 30
    • تحقق من "تمكين IP العائم"

إشعار

لا يتم احترام خاصية تكوين التحقيق الصحي numberOfProbes، والمعروفة باسم "عتبة غير سليمة" في المدخل. لذلك للتحكم في عدد التحقيقات المتتالية الناجحة أو الفاشلة، قم بتعيين الخاصية "probeThreshold" إلى 2. لا يمكن حاليا تعيين هذه الخاصية باستخدام مدخل Microsoft Azure، لذا استخدم إما الأمر Azure CLI أو PowerShell .

إشعار

عندما يتم وضع الأجهزة الظاهرية دون عناوين IP عامة في المجموعة الخلفية لموازن تحميل Azure القياسي الداخلي (دون عنوان IP عام)، فلن يكون هناك اتصال بالإنترنت الصادر، ما لم يتم إجراء تكوين إضافي للسماح بالتوجيه إلى نقاط النهاية العامة. للحصول على تفاصيل حول كيفية تحقيق الاتصال الصادر راجع اتصال نقطة النهاية العامة للأجهزة الظاهرية باستخدام موازن تحميل Azure قياسي في سيناريوهات SAP ذات قابلية الوصول العالية.

هام

  • لا تمكِّن طوابع TCP الزمنية على أجهزة Azure الظاهرية خلف Azure Load Balancer. سيؤدي تمكين طوابع TCP الزمنية إلى فشل فحوصات السلامة. عين net.ipv4.tcp_timestamps المعلمة إلى0 لمزيد من التفاصيل، راجع فحوصات صحة موازن التحميل.
  • لمنع saptune من تغيير القيمة المعينة net.ipv4.tcp_timestamps يدويا من 0 العودة إلى 1، يجب تحديث إصدار saptune إلى 3.1.1 أو أعلى. لمزيد من التفاصيل، راجع saptune 3.1.1 - هل أحتاج إلى التحديث؟.

إنشاء نظام مجموعة Pacemaker

اتبع الخطوات في Setting up Pacemaker on SUSE Linux Enterprise Server in Azure لإنشاء نظام مجموعة Pacemaker لخادم NFS هذا.

تكوين خادم NFS

العناصر التالية مسبوقة إما بـ [A] - تنطبق على جميع العقد، [1] - لا تنطبق إلى على العقدة 1 أو [2] - لا تنطبق إلا على العقدة 2.

  1. [A] إعداد دقة اسم المضيف

    يمكنك إما استخدام خادم DNS أو تعديل /etc/hosts على كافة العُقد. يوضح هذا المثال كيفية استخدام الملف/etc/hosts. استبدل عنوان IP واسم المضيف في الأوامر التالية

    sudo vi /etc/hosts
    

    أدرج الأسطر التالية في /etc/hosts. تغيير عنوان IP واسم المضيف لمطابقة بيئتك

    # IP address of the load balancer frontend configuration for NFS
    
    10.0.0.4 nw1-nfs
    10.0.0.5 nw2-nfs
    
  2. [A] تمكين خادم NFS

    إنشاء إدخال تصدير NFS الجذر

    sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports'
    
    sudo mkdir /srv/nfs/
    
  3. [A] تثبيت مكونات DRBD

    sudo zypper install drbd drbd-kmp-default drbd-utils
    
  4. [A] إنشاء قسم لأجهزة drbd

    سرد جميع أقراص البيانات المتوفرة

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

    إنشاء أقسام لكل قرص بيانات

    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] إنشاء تكوينات LVM

    سرد جميع الأقسام المتوفرة

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

    إنشاء وحدات تخزين LVM لكل قسم

    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] تكوين drbd

    sudo vi /etc/drbd.conf
    

    تأكد من أن ملف drbd.conf يحتوي على السطرين التاليين

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

    قم بتغيير تكوين drbd العمومي

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

    أضف الإدخالات التالية إلى المعالج ومقطع الشبكة.

    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] إنشاء أجهزة drbd لـ NFS

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

    أدرج التكوين لجهاز drbd الجديد ثم أخرد

    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
    

    أدرج التكوين لجهاز drbd الجديد ثم أخرد

    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;
         }
    }
    

    إنشاء جهاز drbd وتشغيله

    sudo drbdadm create-md NW1-nfs
    sudo drbdadm create-md NW2-nfs
    sudo drbdadm up NW1-nfs
    sudo drbdadm up NW2-nfs
    
  8. [1] تخطّى المزامنة الأولية

    sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs
    sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
    
  9. [1] عيّن العقدة الأساسية

    sudo drbdadm primary --force NW1-nfs
    sudo drbdadm primary --force NW2-nfs
    
  10. [1] انتظر حتى تتم مزامنة أجهزة drbd الجديدة

    sudo drbdsetup wait-sync-resource NW1-nfs
    sudo drbdsetup wait-sync-resource NW2-nfs
    
  11. [1] أنشئ أنظمة ملفات على أجهزة 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] قم بإعداد كشف انفصال drbd

    عند استخدام drbd لمزامنة البيانات من مضيف مع مضيف آخر، يمكن أن يحدث ما يسمى انفصال. الانفصال هي حالة تتم فيها ترقية عُقد نظام المجموعة لجهاز drbd لتكون أساسية وخارج المزامنة. قد يكون هذا موقفاً نادراً ولكنك ستظل بحاجة إلى معالجة الانفصال وحله في أسرع وقت ممكن. لذلك، من المهم أن يتم إعلامك عند حدوث انفصال.

    اقرأ وثائق drbd الرسمية حول كيفية إعداد إعلام الانفصال.

    من الممكن أيضاً الاسترداد تلقائياً من سيناريو الانفصال. لمزيد من المعلومات، اطلع على Automatic split brain recovery policies

تكوين إطار عمل نظام مجموعة

  1. [1] أضف أجهزة NFS drbd لـ NW1 الخاص بنظام SAP إلى تكوين نظام المجموعة

    هام

    كشفت الاختبارات الأخيرة عن حالات، حيث تتوقف netcat عن الاستجابة للطلبات بسبب تراكم الأعمال المتراكمة ومحدوديتها في التعامل مع اتصال واحد فقط. يتوقف مورد netcat عن الاستماع إلى طلبات موازن تحميل Azure ويصبح عنوان IP الحُر غير متوفر.
    بالنسبة إلى أنظمة مجموعات Pacemaker الحالية، أوصينا في الماضي بإحلال netcat محل socat. نوصي حالياً باستخدام عامل موارد azure-lb، وهو جزء من عوامل موارد الحزمة، مع متطلبات إصدار الحزمة التالية:

    • بالنسبة لـ SLES 12 SP4/SP5، يجب أن يكون الإصدار على الأقل resource-agents-4.3.018.a7fb5035-3.30.1.
    • بالنسبة إلى SLES 15/15 SP1، يجب أن يكون الإصدار على الأقل resource-agents-4.3.0184.6ee15eb2-4.13.1.

    لاحظ أن التغيير سيتطلب وقتًا قصيرًا.
    بالنسبة إلى أنظمة مجموعات Pacemaker الموجودة، إذا تم تغيير التكوين بالفعل لاستخدام socat كما هو موضح في Azure Load-Balancer Detection Hardening، فلا يلزم التبديل فوراً إلى عامل مورد 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] أضف أجهزة NFS drbd لـ NW2 الخاص بنظام SAP إلى تكوين نظام المجموعة

    # 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 في موارد نظام المجموعة exportfs في الوثائق المتعلقة بتوافق الإصدارات السابقة مع إصدارات SLES القديمة.

  3. [1] تعطيل وضع الصيانة

    sudo crm configure property maintenance-mode=false
    

الخطوات التالية