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 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 awal gagal karena suatu alasan, Pacemaker menetapkan jumlah kegagalan resource ke INFINITY dan mencoba memulai agen pada node lain. Jika agen resource gagal memulai node mana pun, agen resource 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 pada node hana-b:

Full List of Resources:
  * STONITH-hana-a        (stonith:external/gcpstonith):   Started hana-b
  * STONITH-hana-b        (stonith:external/gcpstonith):   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:external/gcpstonith):   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 memulai, kumpulkan informasi diagnostik yang relevan dan hubungi dukungan.