Migrasikan indeks dari Amazon OpenSearch Service ke Alibaba Cloud Elasticsearch menggunakan snapshot. Panduan ini menggunakan kluster Elasticsearch 7.1.0.0.
Cara kerja
Solusi lintas cloud ini memanfaatkan mekanisme snapshot Elasticsearch. Gunakan alat Migration Implementation Alibaba Cloud untuk memigrasikan indeks dari AWS ES atau data snapshot dari Tencent Cloud COS ke Alibaba Cloud OSS, lalu pulihkan dari repositori OSS. Lihat juga Manual Backup and Restoration.
Snapshot hanya dapat dipulihkan ke kluster dengan versi yang sama atau lebih baru. Lihat Snapshot compatibility.
Latar belakang
Arsitektur referensi untuk migrasi ini:

Konsep
-
Elasticsearch: mesin pencarian dan analitik terdistribusi berbasis RESTful. Sebagai inti Elastic Stack, Elasticsearch menyimpan data secara terpusat untuk pencarian dan analisis.
-
Kibana: alat visualisasi untuk mencari dan menganalisis data Elasticsearch.
-
Amazon OpenSearch Service: layanan terkelola AWS yang menyediakan API Elasticsearch dan analitik real-time.
-
Alibaba Cloud Elasticsearch: layanan terkelola berbasis Elasticsearch open source, dirancang untuk skenario analisis dan pencarian data. Menyediakan kontrol akses tingkat enterprise, pemantauan keamanan dan peringatan, serta pelaporan otomatis.
-
Snapshot dan restore: membuat snapshot dari indeks individual atau seluruh kluster di repositori jarak jauh (sistem file bersama, Amazon S3, atau HDFS) untuk dipulihkan ke versi Elasticsearch yang kompatibel.
-
Snapshot indeks yang dibuat di versi 5.x dapat dipulihkan ke versi 6.x.
-
Snapshot indeks yang dibuat di versi 2.x dapat dipulihkan ke versi 5.x.
-
Snapshot indeks yang dibuat di versi 1.x dapat dipulihkan ke versi 2.x.
-
Ikhtisar solusi
Langkah-langkah migrasi:
-
Buat indeks garis dasar.
-
Buat repositori snapshot dan kaitkan dengan bucket Amazon Simple Storage Service (Amazon S3).
-
Ambil snapshot lengkap pertama dari indeks yang ingin Anda migrasikan.
Snapshot ini secara otomatis disimpan di bucket Amazon S3 yang Anda buat pada langkah sebelumnya.
-
Di Alibaba Cloud, buat bucket Object Storage Service (OSS) dan daftarkan sebagai repositori snapshot untuk kluster Alibaba Cloud Elasticsearch Anda.
-
Gunakan ossimport untuk mentransfer data dari bucket Amazon S3 ke bucket Alibaba Cloud OSS.
-
Pulihkan snapshot lengkap ini ke kluster Alibaba Cloud Elasticsearch.
-
-
Secara berkala proses snapshot inkremental.
Ulangi langkah-langkah sebelumnya untuk memproses dan memulihkan snapshot inkremental.
-
Buat snapshot akhir dan lakukan cutover layanan.
-
Hentikan layanan apa pun yang mungkin memodifikasi data indeks.
-
Ambil snapshot inkremental terakhir dari domain Amazon OpenSearch Service sumber.
-
Migrasikan snapshot inkremental terakhir ke OSS, lalu pulihkan ke kluster Alibaba Cloud Elasticsearch.
-
Arahkan layanan Anda ke kluster Alibaba Cloud Elasticsearch dan verifikasi migrasi.
-
Prasyarat
Pastikan hal-hal berikut:
-
Domain Amazon OpenSearch Service dengan Elasticsearch 7.1.0.0 telah dibuat di wilayah Singapura.
-
Kluster Alibaba Cloud Elasticsearch versi 7.1.0.0 telah dibuat di wilayah Tiongkok (Hangzhou).
-
Bucket OSS telah dibuat.
Panduan ini menggunakan bucket di wilayah Tiongkok (Hangzhou) dengan kelas penyimpanan Standard dan ACL privat. Semua parameter lain menggunakan pengaturan default. Create buckets.
-
Indeks yang ingin Anda migrasikan sudah siap. Topik ini menggunakan indeks bernama
moviessebagai contoh.
Prasyarat untuk snapshot manual di AWS
Amazon OpenSearch Service secara otomatis membuat snapshot harian dari shard indeks primer, yang disimpan di bucket S3 yang telah dikonfigurasi selama 14 hari tanpa biaya tambahan. Snapshot ini dapat memulihkan domain tetapi tidak dapat memigrasikan data ke domain baru. Untuk migrasi, buat snapshot manual di bucket S3 Anda sendiri. Biaya penyimpanan S3 standar berlaku.
Untuk membuat dan memulihkan snapshot indeks secara manual, Anda memerlukan IAM dan Amazon S3. Pastikan prasyarat berikut terpenuhi sebelum mengambil snapshot.
|
Prasyarat |
Deskripsi |
|
Create an Amazon S3 bucket |
Menyimpan snapshot manual dari domain Amazon OpenSearch Service. |
|
Create an IAM role |
Memberikan izin kepada Amazon OpenSearch Service. Tentukan Amazon OpenSearch Service di pernyataan |
|
Create an IAM policy |
Menentukan aksi yang dapat dilakukan oleh role IAM pada bucket S3. Lampirkan kebijakan ini ke role IAM. Pernyataan Resource harus menentukan ARN bucket S3. |
-
Create an Amazon S3 bucket
Buat bucket S3 untuk menyimpan snapshot manual. Catat ARN-nya untuk digunakan dalam:
-
Pernyataan Resource dari kebijakan IAM yang dilampirkan ke role IAM.
-
Klien Python yang digunakan untuk mendaftarkan repositori snapshot.
Contoh ARN bucket S3:
arn:aws:s3:::eric-es-index-backups -
-
Create an IAM role
Pastikan role IAM menentukan Amazon OpenSearch Service (
es.amazonaws.com) di pernyataanServicedalam hubungan kepercayaannya:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Lihat detail hubungan kepercayaan di Konsol IAM.
CatatanAmazon OpenSearch Service tidak tersedia dalam daftar drop-down Select role type saat membuat role untuk layanan AWS. Pilih AWS EC2, buat role tersebut, lalu edit hubungan kepercayaan untuk mengubah
ec2.amazonaws.commenjadies.amazonaws.com. -
Create an IAM policy
Buat kebijakan IAM dan lampirkan ke role IAM. Contoh berikut menentukan ARN bucket
eric-es-index-backups:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::eric-es-index-backups" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::eric-es-index-backups/*" ] } ] }-
Salin konten kebijakan ke editor kebijakan.

-
Tinjau kebijakan tersebut.

-
Lampirkan kebijakan IAM ke role IAM.

-
Langkah 1: Daftarkan repositori snapshot manual
Daftarkan repositori snapshot dengan Amazon OpenSearch Service sebelum membuat snapshot manual. Tanda tangani permintaan pendaftaran menggunakan kredensial pengguna atau role yang ditentukan dalam hubungan kepercayaan role IAM. Lihat Prasyarat untuk snapshot manual di AWS.
Anda tidak dapat menggunakan curl untuk mendaftarkan repositori snapshot karena tidak mendukung penandatanganan permintaan AWS. Gunakan klien Python contoh (register_snapshot_repository.py) sebagai gantinya.
-
Unduh file register_snapshot_repository.py.
-
Modifikasi file klien Python contoh.
Perbarui nilai-nilai yang disorot agar sesuai dengan konfigurasi Anda, lalu simpan file tersebut sebagai snapshot.py.
Parameter dalam file klien Python contoh:
Parameter
Deskripsi
region
Wilayah AWS tempat repositori snapshot dibuat.
host
Titik akhir domain Amazon OpenSearch Service.
aws_access_key_id
ID kunci akses kredensial IAM Anda.
aws_secret_access_key
Kunci rahasia akses kredensial IAM Anda.
path
Jalur ke repositori snapshot.
data
Harus mencakup nama dan ARN bucket S3 yang dibuat untuk role IAM. Prasyarat untuk snapshot manual di AWS.
Penting-
Untuk mengaktifkan enkripsi sisi server dengan kunci yang dikelola S3 untuk repositori snapshot, tambahkan
"server_side_encryption": trueke JSON settings. -
Jika bucket Amazon S3 berada di wilayah ap-southeast-1, gunakan
"endpoint": "s3.amazonaws.com"alih-alih"region": "ap-southeast-1".
-
-
Instal boto-2.48.0.
Klien Python contoh memerlukan boto 2.x:
# wget https://pypi.python.org/packages/66/e7/fe1db6a5ed53831b53b8a6695a8f134a58833cadb5f2740802bc3730ac15/boto-2.48.0.tar.gz#md5=ce4589dd9c1d7f5d347363223ae1b970 # tar zxvf boto-2.48.0.tar.gz # cd boto-2.48.0 # sudo python setup.py install -
Jalankan klien Python untuk mendaftarkan repositori snapshot.
# python snapshot.py -
Di Konsol Kibana untuk domain Amazon OpenSearch Service Anda, buka Dev Tools > Console dan jalankan:
GET _snapshot
Langkah 2: Buat dan pulihkan snapshot awal
-
Buat snapshot secara manual di Amazon OpenSearch Service.
CatatanJalankan perintah berikut di Konsol Kibana atau dengan menggunakan curl dari command line Linux atau macOS.
-
Buat snapshot bernama
snapshot_movies_1untuk indeksmoviesdi repositorieric-snapshot-repository.PUT _snapshot/eric-snapshot-repository/snapshot_movies_1 { "indices": "movies" } -
Periksa status snapshot.
GET _snapshot/eric-snapshot-repository/snapshot_movies_1
-
Di Konsol Amazon S3, lihat file snapshot.

-
-
Transfer data snapshot dari Amazon S3 ke Alibaba Cloud OSS.
Migrate applications from Amazon S3 to OSS.
Setelah transfer, verifikasi data snapshot di Konsol OSS.

-
Pulihkan snapshot ke kluster Alibaba Cloud Elasticsearch.
-
Buat repositori snapshot.
PentingSelama migrasi snapshot Elasticsearch, pastikan setiap kluster Elasticsearch menggunakan repositori atau jalur snapshot khusus. Jika beberapa kluster berbagi repositori yang sama, pemulihan data dapat gagal dan data mungkin hilang.
Di Konsol Kibana kluster Alibaba Cloud Elasticsearch tujuan (Log on to the Kibana console), buka Dev Tools > Console dan buat repositori snapshot dengan nama yang sama:
PUT _snapshot/eric-snapshot-repository { "type": "oss", "settings": { "base_path": "my/snapshot/directory" "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "your AccessKeyID", "secret_access_key": "your AccessKeySecret ", "bucket": "eric-oss-aws-es-snapshot-s3", "compress": true } } -
Periksa status snapshot bernama
snapshot_movies_1.GET _snapshot/eric-snapshot-repository/snapshot_movies_1
CatatanCatat waktu mulai dan selesai untuk migrasi snapshot inkremental dengan ossimport:
-
"start_time_in_millis": 1519786844591
-
"end_time_in_millis": 1519786846236
-
-
-
Pulihkan snapshot.
POST _snapshot/eric-snapshot-repository/snapshot_movies_1/_restore { "indices": "movies" }Periksa ketersediaan indeks
movies:GET movies/_recoverySetelah pemulihan berhasil, indeks
moviesberisi tiga dokumen, sesuai dengan domain Amazon OpenSearch Service.
Langkah 3: Buat dan pulihkan snapshot akhir
-
Masukkan data ke indeks
moviesdi domain Amazon OpenSearch Service.Indeks
moviessudah memiliki tiga dokumen. Masukkan dua dokumen lagi.
Gunakan perintah
GET movies/_countuntuk memeriksa jumlah dokumen dalam indeks. -
Buat snapshot lain secara manual.
Buat snapshot lain. Lihat Manually create a snapshot on Amazon OpenSearch Service.
PUT _snapshot/eric-snapshot-repository/snapshot_movies_2 { "indices": "movies" }Periksa status snapshot:
GET _snapshot/eric-snapshot-repository/snapshot_movies_2Lihat file yang terdaftar di bucket Amazon S3.

-
Transfer data snapshot inkremental dari Amazon S3 ke Alibaba Cloud OSS.
Gunakan ossimport untuk memigrasikan data dari S3 ke OSS. Untuk memigrasikan hanya file baru, atur
isSkipExistFileke true di local_job.cfg.Ketika
isSkipExistFilebernilai true, objek dilewati jikasizedanLastModifiedTime-nya cocok. Ketika false (default), objek yang sudah ada akan ditimpa. Opsi ini tidak berlaku ketikajobTypebernilaiaudit.Setelah migrasi, verifikasi file baru di OSS.

-
Pulihkan snapshot inkremental.
Ikuti prosedur pemulihan snapshot di Langkah 2: Buat dan pulihkan snapshot pertama. Tutup indeks
moviessebelum pemulihan, lalu buka kembali indeksmoviessetelahnya.-
Tutup indeks
movies.POST /movies/_close -
Periksa status indeks
movies.GET movies/_stats -
Pulihkan snapshot inkremental.
POST _snapshot/eric-snapshot-repository/snapshot_movies_2/_restore { "indices": "movies" } -
Buka indeks
movies.POST /movies/_open
Setelah pemulihan, indeks
moviesberisi5dokumen, sesuai dengan domain Amazon OpenSearch Service.
-
Ringkasan
Migrasikan data indeks dari Amazon OpenSearch Service ke Alibaba Cloud Elasticsearch menggunakan snapshot. Tutup indeks di kluster tujuan sebelum pemulihan untuk mencegah penulisan dan permintaan selama migrasi.
Sumber daya terkait:
FAQ
Mengapa repositori harus unik?
Jika beberapa kluster Elasticsearch berbagi repositori snapshot yang sama, masalah berikut dapat terjadi:
-
Konflik metadata: Beberapa kluster yang beroperasi pada repositori yang sama dapat menimpa atau merusak file metadata, sehingga snapshot tidak dapat diidentifikasi dengan benar.
-
Penimpaan data: Snapshot dari kluster berbeda dapat saling menimpa file datanya, menyebabkan kehilangan atau kerusakan data.
-
Kegagalan pemulihan: Elasticsearch tidak dapat menentukan data mana yang dimiliki oleh kluster mana, sehingga operasi restore gagal atau memulihkan data yang salah.
Mengapa pemulihan snapshot OSS gagal?
Galat ini dapat terjadi jika nama objek snapshot di OSS mengandung karakter khusus seperti garis miring (/).
Alibaba Cloud Elasticsearch tidak mendukung nama objek dengan karakter khusus selama pemulihan snapshot OSS. Gunakan ossbrowser untuk memindahkan data snapshot ke folder dengan nama standar.