Cross-cluster replication (CCR) mereplikasi data indeks dari kluster pemimpin ke satu atau beberapa kluster pengikut secara near real time, memungkinkan disaster recovery jarak jauh, read/write splitting, dan akses terdistribusi secara geografis. Topik ini membandingkan solusi disaster recovery umum untuk Elasticsearch dan menjelaskan cara kerja CCR agar Anda dapat memilih solusi yang tepat.
Perbandingan solusi
Elasticsearch (ES) mendukung solusi disaster recovery jarak jauh berikut:
OSS snapshot: Cadangkan data indeks ke Alibaba Cloud Object Storage Service (OSS) untuk penyimpanan persisten. Snapshot pertama merupakan cadangan penuh, sedangkan snapshot berikutnya bersifat inkremental. Anda dapat memulihkan data snapshot ke instans ES tujuan dengan menggunakan repositori OSS lintas kluster. Untuk informasi selengkapnya, lihat Set up a cross-cluster OSS repository.
Logstash: Konfigurasikan pipeline untuk membaca data dari kluster ES sumber, memprosesnya, lalu menuliskannya ke kluster tujuan. Solusi ini cocok untuk migrasi data lintas versi utama dan skenario yang memerlukan penyaringan serta transformasi data. Untuk informasi selengkapnya, lihat Quick start.
Reindex: Gunakan Reindex API bawaan untuk menyalin seluruh data atau data yang memenuhi kondisi tertentu dari satu indeks ke indeks lain. Solusi ini mendukung operasi lintas kluster dan cocok untuk migrasi satu kali untuk set data kecil. Untuk informasi selengkapnya, lihat Migrate data by using the Reindex API.
Cross-cluster replication (CCR): Secara asinkron dan inkremental mereplikasi indeks yang dapat ditulis dari kluster pemimpin ke satu atau beberapa kluster pengikut. Solusi ini mendukung sinkronisasi near real-time dan ideal untuk skenario disaster recovery yang memerlukan Recovery Point Objective (RPO) dan Recovery Time Objective (RTO) rendah.
Perbandingan solusi
Solusi | Kasus penggunaan | RPO | RTO | Batasan utama |
OSS snapshot | Pencadangan dan pemulihan berkala untuk data skala besar (GB hingga PB). | Jam hingga hari (tergantung interval snapshot). | Beberapa jam (tergantung volume data dan waktu pemulihan shard). | Tidak mendukung sinkronisasi berkelanjutan. Downtime layanan mungkin diperlukan selama pemulihan. |
Logstash | Migrasi data dengan kebutuhan real-time rendah; skenario yang memerlukan penyaringan atau transformasi data; migrasi lintas versi utama. | Detik hingga menit (tergantung frekuensi sinkronisasi). | Beberapa jam (tergantung volume data dan kinerja instans). | Hanya mendukung sinkronisasi batch, bukan real time. Tidak mendukung sinkronisasi operasi penghapusan. |
Reindex | Migrasi indeks satu kali untuk set data kecil. | Tidak berlaku (operasi satu kali). | Menit hingga beberapa jam (tergantung volume data). | Tidak mendukung sinkronisasi berkelanjutan. Tidak efisien untuk migrasi data skala besar. |
CCR | Disaster recovery jarak jauh, read/write splitting, dan akses terdistribusi secara geografis. | Near zero (detik). | Detik hingga menit. | Indeks pengikut bersifat read-only. Memerlukan pemetaan dan jumlah shard yang identik. |
Untuk skenario disaster recovery jarak jauh yang memerlukan RPO rendah dan latensi rendah, CCR merupakan pilihan terbaik:
CCR menyinkronkan data dalam hitungan detik, sehingga meminimalkan kehilangan data.
Jika kluster pemimpin mengalami kegagalan, Anda dapat mengarahkan traffic ke kluster pengikut untuk memulihkan layanan tanpa menunggu pemulihan snapshot.
Meskipun biaya penerapan awal lebih tinggi, CCR lebih hemat biaya dalam jangka panjang karena mencegah kerugian bisnis akibat kehilangan data.
Cara kerja
Arsitektur
CCR menggunakan arsitektur aktif-pasif. Kluster pemimpin menerima semua operasi tulis, sedangkan kluster pengikut bersifat read-only dan mereplikasi data dari kluster pemimpin.
Kluster pemimpin: Kluster sumber yang menangani semua operasi tulis.
Kluster pengikut: Kluster tujuan yang bersifat read-only dan menyinkronkan data dari kluster pemimpin menggunakan CCR.
Proses replikasi data
Proses replikasi data dalam CCR terdiri dari dua fase:
Inisialisasi
Kluster pengikut mengirim permintaan inisialisasi ke kluster pemimpin. Kluster pemimpin kemudian mentransfer semua file segmen Lucene dari indeks pemimpin ke indeks pengikut, mirip dengan mekanisme pemulihan snapshot.
Sinkronisasi inkremental
Setiap shard dalam indeks pengikut secara berkala mengirim permintaan pull ke kluster pemimpin untuk mengambil operasi terbaru sejak titik sinkronisasi terakhir. Secara default, hal ini terjadi setiap detik. Prosesnya sebagai berikut:
Menentukan titik awal pull: Kluster pengikut menyimpan
remote_checkpointlokal, yang menunjukkan operasi terbaru yang berhasil diterapkan secara lokal. Checkpoint ini sesuai denganglobal_checkpointdalam transaction log (translog) kluster pemimpin.Membaca operasi dari translog pemimpin: Kluster pemimpin menggunakan
from_seq_noyang diberikan oleh kluster pengikut untuk menemukan posisi awal dalam translog-nya. Kluster tersebut kemudian membaca semua operasi berikutnya (index, update, delete) dan mengembalikannya sebagai daftar.Memainkan ulang operasi di kluster pengikut: Kluster pengikut memainkan ulang operasi tersebut secara lokal sesuai urutan dan memperbarui
remote_checkpoint-nya. Jika pemutaran ulang gagal, misalnya karena konflik versi, sinkronisasi dihentikan sementara dan kesalahan dicatat dalam log.Polling berkelanjutan: Kluster pengikut terus-menerus melakukan polling untuk operasi baru pada interval tetap, biasanya mencapai latensi sub-detik.
Peran translog
Transaction log (translog) merupakan sumber data untuk sinkronisasi inkremental dalam CCR. Translog memiliki fungsi berikut dalam Elasticsearch:
Mencegah kehilangan data: Secara default, Elasticsearch melakukan refresh setiap detik, yang membuat segmen Lucene baru yang dapat dicari dari buffer memori. Namun, segmen ini belum disimpan ke disk. Translog mencatat semua operasi tulis. Jika node mengalami crash, Anda dapat memulihkan data dengan memainkan ulang log tersebut.
Menjamin konsistensi replika: Elasticsearch pertama-tama menulis operasi ke translog, lalu meneruskannya ke shard replika. Respons sukses hanya dikembalikan setelah shard primary dan replika mengonfirmasi penulisan tersebut.
Mendukung sinkronisasi inkremental dalam CCR: CCR menggunakan API internal Elasticsearch untuk membaca translog dan mengambil semua perubahan setelah nomor urut tertentu, yang memungkinkan replikasi data near real-time.
Translog disimpan secara terpisah untuk setiap shard. Setiap shard memiliki direktori translog sendiri yang berlokasi di indices/{index_uuid}/{shard_id}/translog/. File translog (.tlog) disimpan dalam format biner dan dikelola menggunakan mekanisme generasi. Elasticsearch membuat file generasi baru setiap kali flush terjadi atau ketika ukuran file mencapai batasnya, yaitu 512 MB secara default.
Jaringan CCR untuk Alibaba Cloud ES
Instans Alibaba Cloud Elasticsearch diterapkan di VPC manajemen khusus, bukan di VPC pelanggan Anda. Bahkan jika dua kluster berada di wilayah yang sama atau VPC-nya terhubung lintas wilayah menggunakan CEN, keduanya tidak dapat berkomunikasi langsung melalui jaringan pribadi. Anda harus menggunakan NLB dan PrivateLink untuk menghubungkan VPC manajemen tersebut.
Pilih dokumentasi yang sesuai berdasarkan apakah kedua kluster berada di wilayah yang sama:
Skenario | Deskripsi | Dokumentasi |
Wilayah yang sama | Kluster pemimpin dan pengikut berada di wilayah yang sama. Anda menghubungkan VPC manajemen keduanya menggunakan NLB dan PrivateLink. | |
Lintas wilayah | Kluster pemimpin dan pengikut berada di wilayah berbeda. Anda harus terlebih dahulu menghubungkan VPC pelanggan keduanya menggunakan CEN, lalu menghubungkan VPC manajemen keduanya menggunakan NLB dan PrivateLink. |
Batasan
Mode penerapan manajemen kedua kluster harus berupa cloud-native new management (v3). Jika suatu kluster menggunakan arsitektur v1 atau v2, Anda harus meningkatkan arsitekturnya terlebih dahulu. Untuk informasi selengkapnya, lihat Upgrade instance architecture.
Untuk memeriksa versi arsitektur kluster Elasticsearch, login ke Konsol Elasticsearch. Di halaman Basic Information instans, lihat Control Architecture Type. Mode tersebut dapat berupa Cloud-native Control Architecture (v3) atau Basic Control Architecture (v2).
Kedua kluster harus menjalankan Elasticsearch 7.10.0 atau versi yang lebih baru. Versi kluster pengikut harus sama dengan atau lebih baru daripada versi kluster pemimpin.
Indeks pengikut bersifat read-only dan tidak mendukung operasi tulis. Untuk membuat indeks target dapat ditulis, lakukan langkah-langkah berikut:
Jeda tugas follow:
POST /<index>/_ccr/pause_followTutup indeks:
POST /<index>/_closeHentikan follow pada indeks:
POST /<index>/_ccr/unfollowBuka kembali indeks agar menjadi read/write:
POST /<index>/_open
Indeks pemimpin dan pengikut harus memiliki pemetaan dan jumlah shard yang identik. Anda tidak dapat mengubah jumlah shard pada indeks pengikut.