Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Active/active AWS IoT Greengrass V2 komponen
Dalam pengaturan ini, Anda mengelola AWS IoT Greengrass V2 komponen dengan Pacemaker menggunakan agen sumber daya OCF (Open Cluster Framework) kustom. Hal ini memungkinkan Pacemaker untuk memantau kesehatan AWS IoT Greengrass V2 komponen dan memicu tindakan pemulihan ketika komponen memasuki keadaan rusak.
penting
Selesaikan semua langkah Prasyarat dan pengaturan cluster sebelum melanjutkan, kecuali untuk langkah-langkah pengaturan DRBD. Pengaturan ini tidak menggunakan DRBD. Instal AWS IoT Greengrass V2 ke jalur lokal pada setiap instance sebagai gantinya. AWS IoT Greengrass V2 harus disediakan dan dijalankan pada semua instance. Tutorial ini AWS IoT Greengrass V2 mengasumsikan diinstal di/greengrass/v2. Jika Anda memilih jalur yang berbeda, perbarui GG_CLI variabel dalam skrip OCF yang sesuai.
Buat agen sumber daya OCF khusus
Buat direktori dan skrip agen sumber daya khusus pada semua instance. Contoh ini mengelola komponen bernamaPythonWebServer.
sudo mkdir -p /usr/lib/ocf/resource.d/custom
Buat skrip agen sumber daya di /usr/lib/ocf/resource.d/custom/gg-webserver dengan konten berikut.
#!/bin/bash # OCF Resource Agent for Greengrass Web Server component . /usr/lib/ocf/lib/heartbeat/ocf-shellfuncs GG_CLI="/greengrass/v2/bin/greengrass-cli" COMPONENT="PythonWebServer" STATE_FILE="/run/gg-webserver.ocf-state" case "$1" in meta-data) cat <<EOF <?xml version="1.0"?> <resource-agent name="gg-webserver"> <version>1.0</version> <longdesc lang="en">Greengrass webserver component agent</longdesc> <shortdesc lang="en">GG Webserver</shortdesc> <parameters> </parameters> <actions> <action name="start" timeout="60"/> <action name="stop" timeout="10"/> <action name="monitor" timeout="5" interval="10"/> <action name="meta-data" timeout="5"/> </actions> </resource-agent> EOF ;; start) touch "$STATE_FILE" systemctl restart greengrass if [ $? -eq 0 ]; then exit $OCF_SUCCESS else rm -f "$STATE_FILE" exit $OCF_ERR_GENERIC fi ;; stop) rm -f "$STATE_FILE" exit $OCF_SUCCESS ;; monitor) # Check state file first — if absent, resource is stopped [ ! -f "$STATE_FILE" ] && exit $OCF_NOT_RUNNING # Check if the Greengrass service is running if ! systemctl is-active --quiet greengrass; then exit $OCF_NOT_RUNNING fi STATE=$($GG_CLI component details -n=$COMPONENT 2>/dev/null | grep '^[[:space:]]*State:' | awk '{print $2}') if [[ -z "$STATE" ]]; then ocf_log warn "Component $COMPONENT state is empty — component may not be deployed" exit $OCF_SUCCESS elif [[ "$STATE" == "BROKEN" ]]; then exit $OCF_ERR_GENERIC else exit $OCF_SUCCESS fi ;; *) echo "Usage: $0 {start|stop|monitor|meta-data}" exit $OCF_ERR_UNIMPLEMENTED ;; esac
Jadikan skrip dapat dieksekusi.
sudo chmod +x /usr/lib/ocf/resource.d/custom/gg-webserver
catatan
startTindakan memulai ulang seluruh AWS IoT Greengrass V2 layanan, yang memulai ulang semua komponen pada instance, tidak hanya. PythonWebServer Ini adalah satu-satunya jalur pemulihan praktis karena AWS IoT Greengrass V2 tidak mendukung restart komponen individual. stopTindakan ini sengaja dilakukan tanpa operasi karena agen ini adalah pembungkus pemantauan — siklus hidup AWS IoT Greengrass V2 layanan dikelola oleh systemd, bukan oleh agen ini. Jika komponen tetap persisten BROKEN (misalnya, karena penerapan yang buruk), Pacemaker akan mencoba lagi hingga migration-threshold beberapa kali, lalu melarang sumber daya pada node tersebut hingga kedaluwarsa. failure-timeout Anda harus memperbaiki akar penyebabnya (misalnya, menerapkan ulang versi komponen yang valid) untuk menghentikan siklus coba lagi.
Lampirkan sumber daya
Buat sumber daya Pacemaker menggunakan agen OCF kustom.
sudo pcs property set stonith-enabled=false
Awas
STONITH dinonaktifkan di sini untuk menyederhanakan tutorial ini. Dalam lingkungan produksi, Anda harus mengaktifkan STONITH dan mengonfigurasi agen pagar (misalnya, untuk instans Amazon fence_aws EC2) untuk mencegah kerusakan otak terbelah dan data.
sudo pcs resource create gg-webserver ocf:custom:gg-webserver \ op monitor interval=30s \ op start timeout=60s \ meta migration-threshold=3 failure-timeout=60s \ clone
Verifikasi pemulihan
-
Periksa keadaan awal. Verifikasi bahwa AWS IoT Greengrass V2 komponen berjalan dan sehat di semua instance.
sudo pcs status -
Simulasikan kegagalan komponen. Bunuh proses komponen untuk mensimulasikan kegagalan sementara. AWS IoT Greengrass V2 mungkin mencoba pemulihan internal terlebih dahulu. Jika komponen memasuki
BROKENstatus, Pacemaker mendeteksi dan memicu restart layanan. Jika AWS IoT Greengrass V2 memulihkan komponen secara internal, Pacemaker tidak mengambil tindakan.sudo pkill -f "PythonWebServer" # Wait 30-60 seconds, then check the component state sudo /greengrass/v2/bin/greengrass-cli component details -n=PythonWebServer -
Verifikasi pemulihan. Pacemaker mendeteksi bahwa komponen tidak sehat dan melakukan langkah-langkah pemulihan seperti yang didefinisikan dalam skrip OCF kustom. Tidak diperlukan failover — Pacemaker memulai ulang layanan pada instance yang sama.
Layanan lain seperti HAProxy dan AWS IoT Greengrass V2 terus beroperasi secara normal di semua instance. Aplikasi pada instance siaga terus menerima permintaan tanpa gangguan.
sudo pcs statusKetika instance yang dipulihkan muncul kembali, penyeimbang beban mengidentifikasinya dan mendistribusikan permintaan klien sesuai kebutuhan.