Memecahkan masalah konfigurasi ketersediaan tinggi untuk SAP

Dalam konfigurasi ketersediaan tinggi untuk SAP di Google Cloud, penyebab utama masalah mungkin terletak pada software pengelompokan, software SAP, infrastruktur Google Cloud, atau kombinasi dari semua ini.

Menganalisis log Pacemaker di Cloud Logging

Video berikut menunjukkan bagaimana Anda dapat mulai memecahkan masalah konfigurasi ketersediaan tinggi untuk SAP di Google Cloud menggunakan Cloud Logging.

Node yang gagal di cluster Linux tidak dimulai ulang dengan benar setelah failover

Jika cluster ketersediaan tinggi Linux Anda menggunakan agen fence fence_gce dan VM dengan fence gagal bergabung kembali ke cluster setelah failover, Anda mungkin harus menunda dimulainya software Corosync saat VM dengan fence dimulai ulang.

Masalah

Selama failover, agen fence_gce akan melakukan tindakan fence pada VM Compute Engine yang gagal, yang akan memulai ulang dan bergabung kembali ke cluster sebelum Pacemaker mendaftarkan tindakan fence sebagai selesai. Karena tindakan fence tidak terdaftar sebagai selesai, VM yang dimulai ulang akan menonaktifkan layanan Pacemaker dan Corosync-nya serta akan meninggalkan cluster.

Diagnosis

Untuk mengonfirmasi bahwa ini adalah masalah Anda:

  • Pastikan cluster Anda menggunakan agen fence_gce:

    RHEL

    pcs config

    SLES

    crm config show

    Definisi agen fence mencakup fence_gce.

    RHEL

    Stonith Devices:
    Resource: STONITH-example-ha-vm1 (class=stonith type=fence_gce)
    Attributes: port=example-ha-vm1 project=example-project-123456 zone=us-central1-a
    Operations: monitor interval=300s timeout=120s (STONITH-example-ha-vm1-monitor-interval-60s)
    Resource: STONITH-example-ha-vm2 (class=stonith type=fence_gce)
    Attributes: port=example-ha-vm2 project=example-project-123456 zone=us-central1-c
    Operations: monitor interval=300s timeout=120s (STONITH-example-ha-vm2-monitor-interval-60s)
    

    SLES

    primitive fence-example-ha-vm1 stonith:fence_gce \
     op monitor interval=300s timeout=120s \
     op start interval=0 timeout=60s \
     params port=example-ha-vm1 zone=us-central1-a project=example-project-123456
    primitive fence-example-ha-vm2 stonith:fence_gce \
     op monitor interval=300s timeout=120s \
     op start interval=0 timeout=60s \
     params port=example-ha-vm2 zone=us-central1-c project=example-project-123456
  • Periksa log sistem untuk menemukan pesan berikut:

    DATESTAMP> node2 stonith-ng[1106]:  notice: Operation reboot of node2 by node1 for stonith_admin.1366@node1.c3382af8: OK
    DATESTAMP> node2 stonith-ng[1106]:   error: stonith_construct_reply: Triggered assert at commands.c:2343 : request != NULL
    DATESTAMP> node2 stonith-ng[1106]: warning: Can't create a sane reply
    DATESTAMP> node2 crmd[1110]:    crit: We were allegedly just fenced by node1 for node1!
    DATESTAMP> node2 pacemakerd[1055]: warning: Shutting cluster down because crmd[1110] had fatal failure

Solusi

Konfigurasikan sistem operasi di kedua node cluster untuk menunda dimulainya Corosync guna memastikan tindakan fence memiliki waktu untuk mendaftar sebagai selesai dengan Pacemaker pada node utama yang baru. Selain itu, setel nilai waktu tunggu mulai ulang Pacemaker untuk memperhitungkan penundaan.

Untuk mengonfigurasi awal yang tertunda pada Corosync:

  1. Tempatkan cluster dalam mode pemeliharaan:

    RHEL

    pcs property set maintenance-mode=true

    SLES

    crm configure property maintenance-mode="true"
  2. Di setiap node cluster sebagai root, setel penundaan mulai untuk Corosync:

    1. Buat file drop-in systemd:

      systemctl edit corosync.service
    2. Tambahkan baris berikut ke file:

      [Service]
      ExecStartPre=/bin/sleep 60
    3. Simpan file dan keluar dari editor.

    4. Muat ulang konfigurasi pengelola sistem.

      systemctl daemon-reload
  3. Di salah satu node cluster sebagai root, pastikan nilai waktu tunggu Pacemaker untuk mulai ulang disetel untuk kedua agen fence:

    1. Periksa nilai pcmk_reboot_timeout:

      crm_resource --resource FENCE_AGENT_NAME --get-parameter=pcmk_reboot_timeout

      Ganti FENCE_AGENT_NAME dengan nama agen fence.

    2. Jika parameter pcmk_reboot_timeout tidak ditemukan atau disetel ke nilai yang lebih kecil dari 300, tetapkan nilai tersebut pada kedua agen fence:

      crm_resource --resource FENCE_AGENT_NAME --set-parameter=pcmk_reboot_timeout --parameter-value=300

      Ganti FENCE_AGENT_NAME dengan nama agen fence.

      Nilai pcmk_reboot_timeout harus lebih besar dari jumlah:

      • Waktu tunggu token Corosync
      • Waktu tunggu konsensus Corosync, yang secara default merupakan produk dari token * 1.2
      • Durasi waktu yang diperlukan untuk menyelesaikan operasi mulai ulang, termasuk atribut penundaan.

      Di Google Cloud, 300 detik merupakan waktu yang memadai untuk sebagian besar cluster.

    3. Konfirmasi nilai pcmk_reboot_timeout yang baru:

      crm_resource --resource FENCE_AGENT_NAME --get-parameter=pcmk_reboot_timeout

      Ganti FENCE_AGENT_NAME dengan nama agen fence.

  4. Keluarkan cluster dari mode pemeliharaan:

    RHEL

    pcs property set maintenance-mode=false

    SLES

    crm configure property maintenance-mode="false"

Afinitas node tidak disengaja yang mendukung node tertentu

Saat memindahkan resource secara manual di cluster ketersediaan tinggi menggunakan perintah cluster, Anda akan mendapati bahwa afinitas atau preferensi klien secara otomatis ditetapkan untuk mendukung node tertentu.

Masalah

Di cluster ketersediaan tinggi Linux Pacemaker untuk SAP HANA atau SAP NetWeaver, resource seperti sistem SAP HANA atau layanan pusat SAP NetWeaver hanya berjalan pada satu node cluster tertentu dan tidak mengalami kegagalan seperti yang diharapkan selama terjadinya peristiwa kegagalan node.

Akibatnya, Anda mungkin mengalami masalah seperti:

  • Saat Anda memicu failover layanan SAP NetWeaver ASCS dengan mengeluarkan perintah Pacemaker ke move resource ke node cluster, resource tidak akan dimulai dan menampilkan status stopped.

  • Saat Anda memberikan perintah standby ke satu node cluster untuk memaksa semua resource berpindah ke node lainnya, resource tidak akan dimulai.

Diagnosis

  • Periksa log Pacemaker Anda untuk melihat pesan yang menyebutkan bahwa resource tertentu tidak dapat berjalan di mana pun. Contoh:

    2021-05-24 21:39:58 node_1 pacemaker-schedulerd (native_color) info:
     Resource NW1-ASCS01 cannot run anywhere
  • Periksa konfigurasi batasan lokasi Pacemaker Anda untuk mengidentifikasi semua batasan yang mungkin mencegah resource berjalan pada node cluster tertentu.

    Untuk memeriksa konfigurasi batasan lokasi Pacemaker, ikuti langkah-langkah berikut:

    1. Tampilkan batasan lokasi:

      cibadmin --query --scope constraints | grep rsc_location
    2. Verifikasi batasan lokasi:

      • Batasan lokasi eksplisit: Anda menemukan batasan lokasi dengan skor INFINITY (pilih node) atau -INFINITY (hindari node). Contoh:

        <rsc_location id="loc-constraint" rsc="NW1-ASCS01" score="INFINITY" node="nw-ha-1"/>

        Tidak boleh ada batasan lokasi dengan skor INFINITY atau -INFINITY selain agen fence. Di semua cluster HA, agen fence ditentukan dalam batasan lokasi dengan skor -INFINITY, untuk mencegahnya berjalan di node yang merupakan target tindakan fence.

      • Batasan lokasi implisit: Saat Anda mengeluarkan perintah Pacemaker untuk memindahkan resource ke node cluster atau memblokir resource untuk dijalankan pada node cluster, batasan lokasi implisit dengan awalan cli-ban atau cli-prefer ditambahkan ke ID batasan. Contoh:

        <rsc_location id="cli-prefer-NW1-ASCS01" rsc="NW1-ASCS01" role="Started" node="nw-ha-2" score="INFINITY"/>

Solusi

Agen fence mengalami error operasional

Agen fence telah melaporkan error dalam status cluster.

Masalah

Di cluster ketersediaan tinggi Linux Pacemaker untuk SAP HANA atau SAP NetWeaver, agen fence telah melaporkan error dalam status cluster. Contoh:

Failed Resource Actions:
   STONITH-ha-node-01_monitor_300000 on ha-node-02 'unknown error' (1): call=153, status=Timed Out, exitreason='',  last-rc-change='Mon Dec 21 23:40:47 2023', queued=0ms, exec=60003ms

Diagnosis

Agen fence yang di-deploy di cluster ketersediaan tinggi SAP HANA atau SAP NetWeaver Anda secara rutin mengakses server Compute Engine API untuk memeriksa status instance target fence. Jika ada penundaan sementara dalam respons panggilan API atau jika ada gangguan jaringan, operasi pemantauan agen fence mungkin akan gagal atau waktu habis.

Untuk memeriksa status agen fence, jalankan perintah berikut:

RHEL

pcs status

SLES

crm status

Jika status agen fence adalah stopped, gunakan salah satu opsi solusi untuk mengatasi error.

Error operasional agen fence dapat menyebabkan agen fence berhenti, tetapi Pacemaker masih tetap memanggil agen fence dengan perintah penghentian dalam peristiwa fence.

Solusi

Jika status agen fence adalah stopped, lakukan salah satu hal berikut:

  • Untuk mereset failcount secara manual dan memulai ulang agen fence, jalankan perintah berikut:

    RHEL

    pcs resource cleanup FENCE_AGENT_NAME

    SLES

    crm resource cleanup FENCE_AGENT_NAME

    Ganti FENCE_AGENT_NAME dengan nama agen fence.

  • Untuk menghapus error operasional agen fence secara otomatis, konfigurasikan parameter failure-timeout.

    Parameter failure-timeout akan mereset jumlah failcount setelah durasi yang ditentukan dan menghapus error operasional. Dengan menerapkan parameter ini, Anda tidak harus memulai ulang cluster atau mengalihkan cluster dalam mode pemeliharaan.

    Untuk mengonfigurasi parameter failure-timeout, jalankan perintah berikut:

    crm_resource --meta --resource FENCE_AGENT_NAME --set-parameter failure-timeout --parameter-value DURATION

    Ganti kode berikut:

    • FENCE_AGENT_NAME: nama agen fence.
    • DURATION: durasi setelah kegagalan operasional terakhir, saat failover akan direset dan agen fence dimulai ulang.

Agen pagar gcpstonith tidak digunakan lagi

Agen pagar gcpstonith aktif dalam konfigurasi Anda. Agen ini tidak digunakan lagi dan Customer Care telah menyampaikan bahwa Anda harus beralih ke fence_gce.

Masalah

Di cluster ketersediaan tinggi Linux Pacemaker untuk SAP HANA di SUSE Linux, gcpstonith agen fence digunakan. Contoh:

 # crm status | grep gcpstonith
   * STONITH-hana-vm1   (stonith:external/gcpstonith):   Started hana-vm2
   * STONITH-hana-vm2   (stonith:external/gcpstonith):   Started hana-vm1

Diagnosis

Agen fence yang di-deploy di cluster ketersediaan tinggi SAP HANA Anda perlu diupdate untuk menggunakan agen fence fence_gce yang dipaketkan OS. Skrip agen gcpstonith dikirimkan di sistem lama dan telah diganti oleh fence_gce. fence_gce disediakan sebagai bagian dari paket SUSE Linux fence-agents. gcpstonith hanya dikirim sebagai bagian dari deployment SUSE Linux HANA.

Solusi

Untuk bermigrasi dari gcpstonith di SUSE Linux, selesaikan langkah-langkah berikut:

  1. Instal paket tambahan berikut yang khusus untuk sistem operasi Anda:

    • Untuk SLES 15: python3-oauth2client dan python3-google-api-python-client

    • Untuk SLES 12: python-google-api-python-client, python-oauth2client, dan python-oauth2client-gce

    Untuk menginstal paket ini di sistem operasi Anda, gunakan perintah berikut:

    SLES 15

    zypper in -y python3-oauth2client python3-google-api-python-client

    SLES 12

    zypper in -y python-google-api-python-client python-oauth2client python-oauth2client-gce
  2. Update paket fence-agents untuk memastikan Anda telah menginstal versi terbaru:

    zypper update -y fence-agents
  3. Tempatkan cluster dalam mode pemeliharaan:

    crm configure property maintenance-mode=true
  4. Hapus semua perangkat pembatas dari cluster Anda. Saat menghapus perangkat pembatas terakhir, Anda mungkin diminta untuk mengonfirmasi bahwa tidak ada resource STONITH yang ditentukan di cluster Anda.

    crm configure delete FENCING_RESOURCE_PRIMARY
    crm configure delete FENCING_RESOURCE_SECONDARY
  5. Buat ulang perangkat pagar untuk instance utama:

    crm configure primitive FENCING_RESOURCE_PRIMARY stonith:fence_gce \
     op monitor interval="300s" timeout="120s" \
     op start interval="0" timeout="60s" \
     params port="PRIMARY_INSTANCE_NAME" zone="PRIMARY_ZONE" \
     project="PROJECT_ID" \
     pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30
  6. Buat ulang perangkat pagar untuk instance sekunder:

    crm configure primitive FENCING_RESOURCE_SECONDARY stonith:fence_gce \
     op monitor interval="300s" timeout="120s" \
     op start interval="0" timeout="60s" \
     params port="SECONDARY_INSTANCE_NAME" zone="SECONDARY_ZONE" \
     project="PROJECT_ID" \
     pcmk_reboot_timeout=300 pcmk_monitor_retries=4
  7. Tetapkan batasan lokasi:

    crm configure location FENCING_LOCATION_NAME_PRIMARY \
     FENCING_RESOURCE_PRIMARY -inf: "PRIMARY_INSTANCE_NAME"
    
    crm configure location FENCING_LOCATION_NAME_SECONDARY \
     FENCING_RESOURCE_SECONDARY -inf: "SECONDARY_INSTANCE_NAME"
    
  8. Keluarkan cluster dari mode pemeliharaan:

    crm configure property maintenance-mode=false

  9. Periksa konfigurasi:

    crm config show related:FENCING_RESOURCE_PRIMARY
    
  10. Periksa status cluster:

    # crm status | grep fence_gce
      STONITH-hana-vm1   (stonith:fence_gce):   Started hana-vm2
      STONITH-hana-vm2   (stonith:fence_gce):   Started hana-vm1
    

Agen resource dihentikan

Agen resource gagal dimulai dan tetap dalam status Stopped.

Masalah

Di cluster ketersediaan tinggi Linux Pacemaker untuk SAP HANA atau SAP NetWeaver, agen resource telah melaporkan error dalam status cluster. Contoh:

Failed Resource Actions:
   rsc_SAPHana_DV0_HDB00_start_0 on ha-node-02 'error' (1): call=91, status='complete', last-rc-change='Wed Oct 18 18:00:31 2023', queued=0ms, exec=19010ms

Diagnosis

Jika agen resource yang berjalan gagal, Pacemaker akan mencoba menghentikan agen dan memulainya lagi. Jika operasi mulai gagal karena alasan apa pun, Pacemaker akan menetapkan failcount resource ke INFINITY dan mencoba memulai agen di node lain. Jika agen resource gagal dimulai di node mana pun, agen resource akan tetap dalam status Stopped.

Untuk memeriksa status agen resource, jalankan perintah berikut:

RHEL

pcs status

SLES

crm status

Untuk SAP HANA, contoh berikut menunjukkan agen resource dalam status Stopped di node hana-b:

Full List of Resources:
  * STONITH-hana-a        (stonith:fence_gce):   Started hana-b
  * STONITH-hana-b        (stonith:fence_gce):   Started hana-a
  * Resource Group: g-primary:
    * rsc_vip_int-primary       (ocf::heartbeat:IPaddr2):        Started hana-a
    * rsc_vip_hc-primary        (ocf::heartbeat:anything):       Started hana-a
  * Clone Set: cln_SAPHanaTopology_DV0_HDB00 [rsc_SAPHanaTopology_DV0_HDB00]:
    * Started: [ hana-a hana-b ]
  * Clone Set: msl_SAPHana_DV0_HDB00 [rsc_SAPHana_DV0_HDB00] (promotable):
    * Masters: [ hana-a ]
    * Stopped: [ hana-b ]
  * STONITH-scaleup-majority    (stonith:fence_gce):   Started hana-b

Solusi

Jika agen resource berada dalam status Stopped, lakukan hal berikut:

  1. Mulai agen resource secara manual dengan mereset failcount:

    RHEL

    pcs resource cleanup RESOURCE_AGENT_NAME

    SLES

    crm resource cleanup RESOURCE_AGENT_NAME

    Ganti RESOURCE_AGENT_NAME dengan nama agen resource. Contohnya, rsc_SAPHana_DV0_HDB00.

  2. Pastikan status agen resource mencapai status Started:

    crm_mon

    Jika agen resource masih gagal dimulai, kumpulkan informasi diagnostik yang relevan dan hubungi dukungan.