Untuk aplikasi yang memerlukan ketersediaan tinggi, penerapan dalam satu availability zone rentan terhadap gangguan layanan akibat pemadaman pusat data fisik. Penerapan cross-AZ meningkatkan toleransi kesalahan dengan mendistribusikan node dari satu instans Elasticsearch ke beberapa availability zone (pusat data) yang secara fisik terisolasi dalam wilayah yang sama. Konfigurasi ini menyediakan pemulihan bencana tingkat pusat data. Jika satu availability zone tidak tersedia, kluster tetap beroperasi menggunakan node dan shard replika di zona lainnya, sehingga menjamin kelangsungan bisnis.
Cara kerja
Penerapan cross-AZ menggunakan mekanisme bawaan shard allocation awareness di Elasticsearch.
Saat Anda membuat instans cross-AZ, sistem secara otomatis menambahkan atribut zone_id ke node di availability zone yang berbeda. Kluster juga dikonfigurasi dengan cluster.routing.allocation.awareness.attributes: zone_id untuk menginstruksikan Elasticsearch agar mempertimbangkan atribut node ini selama alokasi shard.
Mekanisme ini memastikan bahwa shard primary dan shard replika suatu indeks didistribusikan ke availability zone yang berbeda. Jika seluruh availability zone mengalami kegagalan, datanya tetap dapat diakses dari shard replika di zona lainnya, sehingga menjamin redundansi data dan ketersediaan layanan.
Mode penyebaran
Pilih mode penyebaran yang paling sesuai dengan kebutuhan ketersediaan dan anggaran aplikasi Anda.
Mode penyebaran | Arsitektur | Pemulihan bencana | Kasus penggunaan |
Single availability zone | Semua node berada di satu availability zone. | Kegagalan availability zone akan menyebabkan gangguan layanan total. | Lingkungan pengembangan, pengujian, atau layanan non-kritis lainnya. |
Dua availability zone | Node didistribusikan ke dua availability zone. | Layanan tetap tersedia selama terjadi kegagalan pada satu availability zone. | Lingkungan produksi dengan persyaratan ketersediaan tinggi. |
Tiga zona ketersediaan | Node didistribusikan ke tiga availability zone. | Layanan tetap tersedia selama terjadi kegagalan pada satu availability zone. | Layanan produksi inti dengan persyaratan ketersediaan tinggi yang ketat. |
Buat instans cross-AZ
Buka halaman Buat Instans Alibaba Cloud Elasticsearch.
Pada bagian Deployment Mode, pilih dua atau tiga availability zone.
Persyaratan jumlah node: Jumlah node data, node data dingin, atau node coordinating harus merupakan kelipatan dari jumlah availability zone yang dipilih agar distribusi merata.
Node master khusus: Anda harus membeli tiga node master khusus untuk menjamin stabilitas arsitektur multi-AZ.
Availability zone yang Anda pilih di Konsol (misalnya, availability zone A) berfungsi sebagai titik akses utama kluster. Sistem secara otomatis dan merata menyebarluaskan node ke jumlah availability zone yang dipilih (misalnya, jika Anda memilih dua availability zone, node mungkin ditempatkan di availability zone A dan B) berdasarkan ketersediaan resource real-time di setiap zona.
Upgrade ke multi-AZ (hanya untuk kluster V3)
Sebelum melakukan upgrade, pastikan kondisi berikut terpenuhi:
Jalankan
GET _cluster/healthuntuk memastikan status kluster adalah GREEN. Jika status kluster tidak sehat, lihat Kesalahan perubahan kluster: status kluster tidak sehat untuk solusinya.Optimalkan distribusi koneksi client untuk mencegah koneksi jangka panjang berkumpul di satu availability zone, yang dapat menyebabkan kehabisan resource di zona berbeban tinggi dan node menganggur di zona berbeban rendah. Anda dapat mengoptimalkan distribusi koneksi dengan mengatur timeout koneksi, me-restart client secara batch, atau menggunakan node coordinating terpisah. Untuk informasi lebih lanjut, lihat Analisis dan solusi beban kluster yang tidak merata.
Jalankan
GET _cluster/settingsdan pastikan output mencakup"cluster.routing.allocation.enable": "all", yang memungkinkan Elasticsearch mengalokasikan shard secara otomatis. Jika output berbeda, jalankan perintah berikut untuk memaksa alokasi shard otomatis:PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
Di halaman Daftar Instans, klik Upgrade Configuration.
Atau, buka halaman Informasi Dasar dan klik .
Di halaman upgrade, pada bagian Deployment Mode, pilih dua atau tiga availability zone dan selesaikan pembayaran.
Selama proses upgrade, sistem secara otomatis mengaktifkan node master khusus (jika belum diaktifkan) dan mungkin menambahkan node data untuk memenuhi persyaratan distribusi merata di seluruh availability zone. Hal ini akan menimbulkan biaya tambahan untuk node baru tersebut. Untuk informasi harga spesifik, lihat tagihan Anda.
Sebagai contoh, saat instans single-AZ dengan dua node data di-upgrade ke penerapan tiga-AZ, sistem secara otomatis menambahkan satu node data sehingga total menjadi tiga. Ini memastikan satu node data dialokasikan ke setiap availability zone.
Migrasi availability zone
Jika Anda perlu meng-upgrade kluster tetapi availability zone saat ini memiliki resource yang tidak mencukupi, Anda dapat memigrasikan node ke availability zone baru yang memiliki resource mencukupi sebelum melakukan upgrade.
Migrasi availability zone memicu restart kluster. Meskipun kluster tetap tersedia selama restart, Anda mungkin mengalami ketidakstabilan layanan sementara. Kami menyarankan melakukan operasi ini selama jam sepi.
Sebelum migrasi, pastikan kondisi berikut terpenuhi:
Jalankan
GET _cluster/healthuntuk memastikan status kluster adalah GREEN. Jika status kluster tidak sehat, lihat Kesalahan perubahan kluster: status kluster tidak sehat untuk solusinya.Jalankan
GET /_cat/indices?vuntuk memeriksa apakah ada indeks dalam status CLOSE. Jika ada, Anda harus membukanya sementara dengan menjalankanPOST /<index_name>/_open. Jika tidak, operasi upgrade mungkin gagal. Status kluster tidak dapat menjadi GREEN jika terdapat indeks yang ditutup.Jalankan
GET _cluster/settingsdan pastikan output mencakup"cluster.routing.allocation.enable": "all", yang memungkinkan Elasticsearch mengalokasikan shard secara otomatis. Jika output berbeda, jalankan perintah berikut untuk memaksa alokasi shard otomatis:PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
Lakukan migrasi:
Buka halaman Basic Information instans target. Di area visualisasi node, arahkan kursor ke availability zone yang ingin dimigrasikan lalu klik Migrate.
Di kotak dialog yang muncul, pilih availability zone dan vSwitch tujuan. Anda hanya dapat memigrasikan satu availability zone dalam satu waktu.
Centang kotak persetujuan Data Migration Service Agreement lalu klik OK.
Setelah Anda mengonfirmasi, kluster akan direstart dan Anda mungkin mengalami fluktuasi kinerja singkat. Selama migrasi, sistem pertama-tama menyediakan node master baru di availability zone tujuan, sehingga availability zone lama dan baru akan berdampingan sementara.
Setelah migrasi selesai, kluster kembali normal. Namun, Konsol (di halaman informasi instans atau halaman upgrade/downgrade) mungkin masih menampilkan availability zone lama karena keterlambatan tampilan. Hal ini tidak memengaruhi operasi kluster di availability zone baru. Perhatikan bahwa alamat IP node akan berubah.
Failover availability zone (failover dan restore)
Saat Anda mendeteksi kegagalan availability zone, Anda dapat melakukan failover untuk mengarahkan trafik client ke zona sehat yang tersisa. Setelah zona yang gagal pulih, Anda dapat memulihkannya agar kembali bergabung ke kluster.
Failover
Di area visualisasi node instans, arahkan kursor ke availability zone yang ingin diisolasi lalu klik Switch Over.
Di kotak dialog yang muncul, klik OK.
PentingFailover availability zone mengisolasi semua node di availability zone yang ditentukan. Setelah failover, permintaan layanan hanya ditangani oleh node di availability zone yang tersisa. Sistem berusaha menyediakan jumlah resource yang sesuai di zona yang tersisa sebagai kompensasi. Namun, keberhasilannya tidak dijamin karena faktor seperti inventaris resource dasar dan konkurensi penjadwalan. Kami menyarankan Anda menerapkan langkah pembatasan trafik untuk layanan Anda berdasarkan beban kluster.
Jika indeks Anda telah dikonfigurasi dengan replika sebelum failover, tetapi status kluster menjadi yellow (tidak sehat) setelah failover selesai, Anda dapat menjalankan perintah berikut melalui koneksi Kibana untuk sementara mengabaikan kebijakan alokasi shard. Hal ini memaksa shard dari availability zone yang gagal dialokasikan ulang ke zona yang tersisa:
PUT /_cluster/settings { "persistent" : { "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null} } }Setelah shard dialokasikan ulang, status kesehatan kluster akan kembali menjadi GREEN.
Restore
Setelah Anda memastikan availability zone yang gagal telah kembali normal, di area visualisasi node instans, arahkan kursor ke availability zone offline lalu klik Switch Back.
Di kotak dialog yang muncul, klik OK. Kluster akan direstart. Setelah operasi restore selesai, node yang ditambahkan sementara selama failover akan dihapus, dan arsitektur kluster dipulihkan ke kondisi semula.