Topik ini menjelaskan cara memigrasikan data indeks Elasticsearch dari Amazon OpenSearch Service ke Alibaba Cloud Elasticsearch.
Perhatian
Solusi ini tidak terbatas pada penyedia layanan cloud tetapi bergantung pada mekanisme snapshot Elasticsearch. Sebagai contoh, Anda dapat menggunakan Layanan Migrasi Data Online yang disediakan oleh Alibaba Cloud untuk memigrasikan data Elasticsearch dalam snapshot dari Amazon OpenSearch Service atau Tencent Cloud Object Storage (COS) ke Alibaba Cloud Object Storage Service (OSS). Kemudian, pulihkan data ke kluster tujuan. Untuk informasi tentang cara memigrasikan data ke Alibaba Cloud OSS, lihat Migrasi data. Untuk informasi tentang cara memulihkan data dalam snapshot, lihat Buat snapshot manual dan pulihkan data dari snapshot manual.
Versi kluster Elasticsearch tujuan harus sama dengan atau lebih baru daripada objek Elasticsearch sumber. Untuk informasi tentang kompatibilitas versi, lihat Kompatibilitas versi pemulihan data dari snapshot.
Informasi latar belakang
Gambar berikut menunjukkan arsitektur referensi untuk migrasi.
Istilah
Elasticsearch: Mesin pencarian dan analitik RESTful terdistribusi yang dirancang untuk berbagai skenario. Sebagai inti dari Elastic Stack, Elasticsearch menyimpan data secara terpusat dan mencari serta menganalisis data.
Kibana: Menyediakan antarmuka visual bagi Anda untuk mencari dan menganalisis data.
Amazon OpenSearch Service: Pada September 2021, Amazon Elasticsearch Service diubah namanya menjadi Amazon OpenSearch Service. Amazon OpenSearch Service adalah layanan terkelola yang menawarkan API Elasticsearch yang mudah digunakan dan kemampuan analitik waktu nyata. Layanan ini juga menyediakan ketersediaan, skalabilitas, dan keamanan yang diperlukan untuk beban kerja produksi. Anda dapat menggunakan Amazon OpenSearch Service untuk dengan mudah menerapkan, melindungi, mengelola, dan menskalakan kluster Elasticsearch untuk skenario seperti analitik log, pencarian teks lengkap, dan pemantauan aplikasi.
Alibaba Cloud Elasticsearch: Dirancang berdasarkan Elasticsearch open source untuk skenario seperti analitik data dan pencarian. Berdasarkan Elasticsearch open source, Alibaba Cloud Elasticsearch menyediakan kontrol akses tingkat perusahaan, pemantauan keamanan dan peringatan, serta pelaporan otomatis.
Snapshot dan restore: Anda dapat menyimpan snapshot dari indeks individual atau seluruh kluster di repositori jarak jauh seperti sistem file bersama, seperti Amazon Simple Storage Service (Amazon S3) atau HDFS. Snapshot tersebut dapat digunakan untuk memulihkan data. Namun, data hanya dapat dipulihkan ke kluster Elasticsearch versi tertentu:
Data dalam snapshot yang dibuat di kluster Elasticsearch 5.x dapat dipulihkan ke kluster Elasticsearch 6.x.
Data dalam snapshot yang dibuat di kluster Elasticsearch 2.x dapat dipulihkan ke kluster Elasticsearch 5.x.
Data dalam snapshot yang dibuat di kluster Elasticsearch 1.x dapat dipulihkan ke kluster Elasticsearch 2.x.
Rencana migrasi
Untuk memigrasikan data dari domain Amazon OpenSearch Service ke kluster Alibaba Cloud Elasticsearch, lakukan langkah-langkah berikut:
Buat indeks baseline.
Buat repositori snapshot dan asosiasikan dengan bucket Amazon S3.
Buat snapshot pertama untuk indeks yang datanya ingin Anda migrasikan. Snapshot pertama adalah snapshot penuh.
Snapshot ini secara otomatis disimpan di bucket S3.
Buat bucket Alibaba Cloud Object Storage Service (OSS), dan daftarkan dengan kluster Alibaba Cloud Elasticsearch sebagai repositori snapshot.
Gunakan ossimport untuk mentransfer snapshot penuh dari bucket S3 ke bucket OSS.
Pulihkan data dari snapshot penuh ke kluster Alibaba Cloud Elasticsearch.
Proses snapshot tambahan secara berkala.
Ulangi langkah-langkah sebelumnya untuk memulihkan data dari snapshot tambahan.
Identifikasi snapshot akhir dan lakukan pergantian layanan.
Hentikan layanan yang dapat memodifikasi data indeks.
Buat snapshot akhir untuk domain Amazon OpenSearch Service.
Transfer snapshot akhir ke bucket OSS. Lalu, pulihkan data dari snapshot ke kluster Alibaba Cloud Elasticsearch.
Lakukan pergantian layanan ke kluster dan lihat data yang dimigrasikan di kluster.
Prasyarat
Operasi berikut telah dilakukan:
Buat domain Amazon OpenSearch Service Elasticsearch 5.5.2 di wilayah Singapura.
Untuk informasi lebih lanjut, lihat Buat domain Amazon OpenSearch Service.
Buat kluster Alibaba Cloud Elasticsearch V5.5.3 di wilayah Tiongkok (Hangzhou).
Untuk informasi lebih lanjut, lihat Buat kluster Alibaba Cloud Elasticsearch.
Buat bucket OSS.
Dalam contoh ini, sebuah bucket OSS dibuat di wilayah Tiongkok (Hangzhou). Kelas penyimpanan bucket adalah Standar, dan daftar kontrol akses (ACL) bucket adalah Privat. Pengaturan default digunakan untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat bucket.
Siapkan indeks yang datanya ingin Anda migrasikan. Indeks
moviesdigunakan dalam contoh ini.
Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service
Amazon OpenSearch Service secara otomatis membuat snapshot untuk shard indeks utama di domain setiap hari dan menyimpannya di bucket S3 yang telah dikonfigurasi sebelumnya. Snapshot ini disimpan hingga maksimal 14 hari tanpa biaya. Anda dapat menggunakan snapshot ini untuk memulihkan data ke domain. Namun, Anda tidak dapat menggunakannya untuk memigrasikan data ke domain lain. Untuk memigrasikan data ke domain lain, Anda harus menggunakan snapshot manual yang disimpan di bucket S3 Anda. Biaya standar S3 berlaku untuk snapshot manual.
Untuk membuat snapshot manual dan memulihkan data dari snapshot, Anda harus menggunakan AWS Identity and Access Management (IAM) dan S3. Sebelum Anda membuat snapshot, lakukan operasi yang tercantum dalam tabel berikut.
Operasi | Deskripsi |
Buat bucket S3 | Bucket digunakan untuk menyimpan snapshot manual dari domain Amazon OpenSearch Service. |
Buat peran IAM | Peran digunakan untuk memberikan izin pada Amazon OpenSearch Service. Saat Anda menambahkan hubungan kepercayaan untuk peran, Anda harus menentukan Amazon OpenSearch Service di elemen |
Buat kebijakan IAM | Kebijakan ini menentukan tindakan yang dapat dilakukan S3 pada bucket S3. Kebijakan ini harus dilampirkan ke peran IAM yang digunakan untuk memberikan izin pada Amazon OpenSearch Service. Anda harus menentukan bucket S3 di elemen Resource kebijakan. |
Buat bucket S3
Anda memerlukan bucket S3 untuk menyimpan snapshot manual. Catat Amazon Resource Name (ARN)-nya. ARN digunakan oleh item berikut:
Elemen Resource dalam kebijakan IAM yang dilampirkan ke peran IAM Anda
Klien Python yang digunakan untuk mendaftarkan repositori snapshot
Kode berikut memberikan ARN dari bucket S3:
arn:aws:s3:::eric-es-index-backupsBuat peran IAM
Anda harus memiliki peran IAM, di mana Amazon OpenSearch Service (es.amazonaws.com) ditentukan dalam elemen
Servicedalam hubungan kepercayaannya. Contoh:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Anda dapat melihat detail hubungan kepercayaan di konsol IAM.
CatatanSaat Anda membuat peran di konsol IAM, Amazon OpenSearch Service tidak termasuk dalam daftar drop-down Select role type. Anda dapat memilih Amazon EC2 dari daftar drop-down dan membuat peran sesuai petunjuk. Lalu, ubah
ec2.amazonaws.comdalam hubungan kepercayaan peran menjadies.amazonaws.com.Buat kebijakan IAM
Anda harus melampirkan kebijakan IAM ke peran IAM. Kebijakan ini menentukan bucket S3 yang digunakan untuk menyimpan snapshot manual dari domain Amazon OpenSearch Service. Kode berikut menunjukkan kebijakan sampel. Dalam kebijakan tersebut, ARN dari bucket
eric-es-index-backupsditentukan.{ "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 bagian Edit kebijakan.

Periksa apakah kebijakan benar.

Lampirkan kebijakan ke peran.

Langkah 1: Daftarkan repositori snapshot manual
Anda hanya dapat membuat snapshot manual setelah mendaftarkan repositori snapshot dengan Amazon OpenSearch Service. Sebelum Anda membuat snapshot manual, tandatangani permintaan AWS Anda ke pengguna atau peran yang ditentukan dalam hubungan kepercayaan peran IAM. Untuk informasi lebih lanjut, lihat Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service.
Anda tidak dapat menggunakan perintah cURL untuk mendaftarkan repositori snapshot karena perintah tersebut tidak mendukung penandatanganan permintaan AWS. Sebagai gantinya, gunakan klien Python sampel (register_snapshot_repository.py) untuk mendaftarkan repositori snapshot.
Unduh file register_snapshot_repository.py.
Modifikasi file.
Ubah nilai yang disorot kuning dalam file berdasarkan kondisi aktual. Lalu, salin kontennya ke dalam file Python bernama snapshot.py.
Tabel berikut menjelaskan parameter dalam file Klien Python Sampel.
Parameter
Deskripsi
region
Wilayah AWS tempat repositori snapshot dibuat.
host
Titik akhir domain Amazon OpenSearch Service.
aws_access_key_id
ID kredensial IAM Anda.
aws_secret_access_key
Kunci kredensial IAM Anda.
path
Jalur repositori snapshot.
data
Nilai ini harus mencakup nama dan ARN bucket S3 untuk peran IAM yang Anda buat di Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service.
PentingJika Anda ingin mengaktifkan enkripsi sisi server dengan kunci yang dikelola S3 untuk repositori snapshot, tambahkan
"server_side_encryption": trueke array JSON pengaturan.Jika bucket S3 berada di wilayah ap-southeast-1, ganti
"region": "ap-southeast-1"dengan"endpoint": "s3.amazonaws.com".
Instal Perpustakaan Amazon Web Services boto-2.48.0.
Klien Python sampel di atas mengharuskan Anda menginstal paket boto versi 2.x di komputer tempat Anda mendaftarkan repositori snapshot.
# 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 installJalankan klien Python untuk mendaftarkan repositori snapshot.
# python snapshot.pyMasuk ke konsol Kibana dari domain Amazon OpenSearch Service. Di bilah navigasi kiri, klik Dev Tools. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk melihat hasil pendaftaran:
GET _snapshot
Langkah 2: Buat snapshot pertama dan pulihkan data dari snapshot
Buat snapshot di domain Amazon OpenSearch Service.
CatatanAnda dapat menjalankan perintah berikut di konsol Kibana atau menggunakan perintah cURL di antarmuka baris perintah (CLI) Linux atau Mac OS X.
Buat snapshot bernama
snapshot_movies_1untuk indeksmoviesdi repositori snapshoteric-snapshot-repository.PUT _snapshot/eric-snapshot-repository/snapshot_movies_1 { "indices": "movies" }Lihat status snapshot.
GET _snapshot/eric-snapshot-repository/snapshot_movies_1
Di konsol S3, lihat objek snapshot.

Transfer snapshot yang dibuat dari bucket S3 ke bucket OSS.
Untuk informasi lebih lanjut, lihat Migrasi data dari Amazon S3 ke Alibaba Cloud OSS.
Setelah snapshot ditransfer, lihat snapshot di konsol OSS.

Pulihkan data dari snapshot ke kluster Alibaba Cloud Elasticsearch.
Buat repositori snapshot.
Masuk ke konsol Kibana dari kluster Elasticsearch. Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana. Lalu, di bilah navigasi kiri, klik Dev Tools. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk membuat repositori snapshot. Nama repositori snapshot harus sama dengan repositori snapshot yang didaftarkan dengan Amazon OpenSearch Service.
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 } }Lihat status snapshot bernama
snapshot_movies_1.GET _snapshot/eric-snapshot-repository/snapshot_movies_1
CatatanCatat waktu mulai dan waktu selesai operasi pembuatan snapshot. Catatan ini digunakan saat Anda menggunakan ossimport untuk memigrasikan data dalam snapshot tambahan. Contoh:
"start_time_in_millis": 1519786844591
"end_time_in_millis": 1519786846236
Pulihkan data dari snapshot.
POST _snapshot/eric-snapshot-repository/snapshot_movies_1/_restore { "indices": "movies" }Jalankan perintah berikut untuk memeriksa ketersediaan indeks
movies:GET movies/_recoverySetelah perintah berhasil dijalankan, Anda dapat melihat tiga set data di indeks
movies. Selain itu, data tersebut sama dengan yang ada di domain Amazon OpenSearch Service.
Langkah 3: Buat snapshot akhir dan pulihkan data dari snapshot
Masukkan data ke indeks
moviesdi domain Amazon OpenSearch Service.Indeks
moviesberisi tiga set data. Masukkan dua set data lagi.
Anda dapat menjalankan perintah
GET movies/_countuntuk melihat volume data indeks.Buat snapshot.
Jalankan perintah berikut untuk membuat snapshot. Untuk informasi lebih lanjut, lihat Buat snapshot di domain Amazon OpenSearch Service.
PUT _snapshot/eric-snapshot-repository/snapshot_movies_2 { "indices": "movies" }Setelah snapshot dibuat, jalankan perintah berikut untuk melihat status snapshot:
GET _snapshot/eric-snapshot-repository/snapshot_movies_2Lihat objek di bucket S3.

Transfer snapshot dari bucket S3 ke bucket OSS.
Anda dapat menggunakan ossimport untuk mentransfer snapshot. Bucket S3 menyimpan dua objek snapshot. Anda dapat mengubah nilai variabel
isSkipExistFiledi file local_job.cfg untuk memigrasikan objek snapshot tambahan.Variabel
isSkipExistFilemenunjukkan apakah objek yang ada dilewati selama migrasi data. Nilai variabel ini bertipe Boolean. Nilai defaultnya adalah false. Jika Anda mengatur nilainya menjadi true, objek dilewati berdasarkan pengaturansizedanLastModifiedTime. Jika Anda mengatur nilainya menjadi false, objek yang ada akan ditimpa. JikajobTypediatur keaudit, variabel ini tidak valid.Kemudian, Anda dapat melihat objek snapshot tambahan di bucket OSS.

Pulihkan data dari snapshot tambahan.
Untuk informasi lebih lanjut, lihat Langkah 2: Buat snapshot pertama dan pulihkan data dari snapshot. Sebelum Anda memulihkan data, Anda harus menonaktifkan indeks
movies. Setelah pemulihan, Anda dapat mengaktifkan kembali indeksmovies.Nonaktifkan indeks
moviesPOST /movies/_closeLihat status indeks
moviesGET movies/_statsPulihkan data dari snapshot
POST _snapshot/eric-snapshot-repository/snapshot_movies_2/_restore { "indices": "movies" }Aktifkan indeks
moviesPOST /movies/_open
Setelah data dipulihkan dari snapshot, jumlah dokumen di indeks
movieskluster Elasticsearch adalah5. Jumlah ini sama dengan yang ada di indeks domain Amazon OpenSearch Service.
Rangkuman
Anda dapat menggunakan fitur snapshot dan restore untuk memigrasikan data dari domain Amazon OpenSearch Service ke kluster Alibaba Cloud Elasticsearch. Fitur ini mengharuskan Anda menonaktifkan indeks yang datanya ingin dimigrasikan untuk menghindari permintaan dan operasi penulisan selama migrasi.
Untuk informasi lebih lanjut, lihat topik berikut:
Tanya Jawab Umum
T: Mengapa kesalahan dikembalikan saat saya memulihkan data indeks dari snapshot di OSS ke kluster Alibaba Cloud Elasticsearch?
J: Mungkin karena nama objek snapshot di OSS adalah karakter khusus, seperti garis miring (/).
Saat Anda memulihkan data indeks dari snapshot di OSS ke kluster Elasticsearch Alibaba Cloud, nama objek snapshot di OSS tidak boleh berupa karakter khusus. Anda dapat menggunakan alat manajemen grafis ossbrowser untuk memindahkan objek snapshot ke folder normal.