Pencarian lintas-cluster di Layanan Amazon OpenSearch - OpenSearch Layanan Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pencarian lintas-cluster di Layanan Amazon OpenSearch

Pencarian lintas klaster di Amazon OpenSearch Service memungkinkan Anda melakukan kueri dan agregasi di beberapa domain yang terhubung. Seringkali lebih masuk akal untuk menggunakan beberapa domain yang lebih kecil dan bukannya satu domain besar, terutama ketika Anda menjalankan berbagai jenis beban kerja.

Domain khusus beban kerja memungkinkan Anda untuk melakukan tugas berikut:

  • Optimalkan setiap domain dengan memilih tipe instans untuk beban kerja tertentu.

  • Menetapkan batas-batas kesalahan-isolasi di seluruh beban kerja. Ini berarti bahwa jika salah satu beban kerja Anda gagal, kesalahan yang terkandung dalam domain tertentu dan tidak mempengaruhi beban kerja Anda yang lain.

  • Skala lebih mudah di seluruh domain.

Pencarian lintas cluster mendukung OpenSearch Dasbor, sehingga Anda dapat membuat visualisasi dan dasbor di semua domain Anda. Anda membayar biaya transfer AWS data standar untuk hasil pencarian yang ditransfer antar domain.

catatan

Open source OpenSearch juga memiliki dokumentasi untuk pencarian lintas cluster. Penyiapan berbeda secara signifikan untuk kluster open source dibandingkan dengan domain OpenSearch Layanan Amazon yang dikelola. Terutama, di OpenSearch Layanan, Anda mengonfigurasi koneksi lintas-cluster menggunakan AWS Management Console bukan melalui cURL. Selain itu, layanan terkelola menggunakan AWS Identity and Access Management (IAM) untuk otentikasi lintas-cluster selain kontrol akses berbutir halus. Oleh karena itu, sebaiknya gunakan dokumentasi ini, bukan OpenSearch dokumentasi open source, untuk mengonfigurasi pencarian lintas klaster untuk domain Anda.

Batasan

Pencarian lintas klaster memiliki beberapa keterbatasan penting:

  • Anda tidak dapat menghubungkan domain Elasticsearch ke domain. OpenSearch

  • Anda tidak dapat terhubung ke klaster OpenSearch /Elasticsearch yang dikelola sendiri.

  • Untuk menghubungkan domain di seluruh Wilayah, kedua domain harus berada di Elasticsearch 7.10 atau yang lebih baru atau. OpenSearch

  • Sebuah domain dapat memiliki maksimum 20 koneksi keluar. Demikian pula, domain dapat memiliki maksimum 20 koneksi masuk. Dengan kata lain, satu domain dapat terhubung ke maksimum 20 domain lainnya.

  • Domain sumber harus pada versi yang sama atau lebih tinggi dari domain tujuan. Jika Anda mengatur koneksi dua arah antara dua domain dan Anda ingin memutakhirkan satu atau keduanya, Anda harus terlebih dahulu menghapus salah satu koneksi.

  • Anda tidak dapat menggunakan kamus kustom atau SQL dengan pencarian lintas-klaster.

  • Anda tidak dapat menggunakan AWS CloudFormation untuk menghubungkan domain.

  • Anda tidak dapat menggunakan pencarian lintas klaster pada instance M3 atau burstable (T2 dan T3).

Prasyarat pencarian lintas klaster

Sebelum Anda mengatur pencarian lintas-klaster, pastikan bahwa domain Anda memenuhi persyaratan berikut:

  • Dua OpenSearch domain, atau domain Elasticsearch pada versi 6.7 atau yang lebih baru

  • Kontrol akses detail diaktifkan

  • ode-to-node Enkripsi N diaktifkan

Penentuan harga pencarian lintas klaster

Tidak ada biaya tambahan untuk mencari di seluruh domain.

Menyiapkan koneksi

Domain “sumber” mengacu pada domain yang berasal dari permintaan pencarian lintas klaster dari . Dengan kata lain, domain sumber adalah domain tempat Anda mengirim permintaan pencarian awal.

Domain "tujuan" adalah domain yang ditanyakan oleh domain sumber.

Koneksi lintas klaster searah dari sumber ke domain tujuan. Ini berarti bahwa domain tujuan tidak dapat membuat kueri domain sumber. Namun, Anda dapat mengatur koneksi lain ke arah yang berlawanan.

Aliran autorisasi pencarian lintas klaster

Sumber domain membuat koneksi “keluar” ke domain tujuan. Domain tujuan menerima permintaan koneksi “masuk” dari domain sumber.

Untuk mengatur koneksi
  1. Di dasbor domain Anda, pilih domain dan buka tab Koneksi.

  2. Di bagian Koneksi keluar, pilih Permintaan.

  3. Untuk alias Koneksi, masukkan nama untuk koneksi Anda.

  4. Pilih antara menghubungkan ke domain di wilayah Anda Akun AWS atau di akun atau Wilayah lain.

    • Untuk terhubung ke cluster di Region Akun AWS dan Anda, pilih domain dari menu dropdown dan pilih Request.

    • Untuk terhubung ke cluster di wilayah lain Akun AWS atau, pilih ARN dari domain jarak jauh dan pilih Permintaan. Untuk menghubungkan domain di seluruh Wilayah, kedua domain harus menjalankan Elasticsearch versi 7.10 atau yang lebih baru atau. OpenSearch

  5. Untuk melewati klaster yang tidak tersedia untuk kueri klaster, pilih Lewati tidak tersedia. Pengaturan ini memastikan bahwa kueri lintas klaster Anda mengembalikan sebagian hasil meskipun gagal pada satu atau beberapa klaster jarak jauh.

  6. Pencarian lintas-cluster pertama memvalidasi permintaan koneksi untuk memastikan prasyarat terpenuhi. Jika domain ditemukan tidak kompatibel, permintaan koneksi memasuki status. Validation failed

  7. Setelah permintaan koneksi berhasil divalidasi, lalu dikirim ke domain tujuan, di mana perlu disetujui. Sampai persetujuan ini terjadi, koneksi tetap dalam Pending acceptance keadaan. Ketika permintaan koneksi diterima di domain tujuan, status berubah Active dan domain tujuan menjadi tersedia untuk kueri.

    • Halaman domain menunjukkan kesehatan domain secara keseluruhan dan detail kesehatan instans domain tujuan Anda. Hanya pemilik domain yang memiliki fleksibilitas untuk membuat, melihat, menghapus, dan memantau koneksi ke atau dari domain mereka.

Setelah koneksi dibuat, lalu lintas yang mengalir di antara simpul dari domain yang terhubung dienkripsi. Jika Anda menghubungkan domain VPC ke domain non-VPC dan domain non-VPC adalah titik akhir publik yang dapat menerima lalu lintas dari internet, lalu lintas antar klaster antara domain masih dienkripsi dan aman.

Menghapus koneksi

Menghapus koneksi menghentikan operasi lintas-cluster pada indeksnya.

  1. Di dasbor domain Anda, buka tab Koneksi.

  2. Pilih koneksi domain yang ingin Anda hapus dan pilih Hapus, lalu konfirmasikan penghapusan.

Anda dapat melakukan langkah-langkah ini pada domain sumber atau tujuan untuk menghapus koneksi. Setelah Anda menghapus koneksi, itu masih terlihat dengan Deleted status untuk jangka waktu 15 hari.

Anda tidak dapat menghapus domain dengan koneksi lintas klaster yang aktif. Untuk menghapus domain, pertama-tama hapus semua koneksi masuk dan keluar dari domain tersebut. Ini memastikan Anda memperhitungkan pengguna domain lintas cluster sebelum menghapus domain.

Menyiapkan keamanan dan sampel panduan

  1. Anda mengirim permintaan pencarian lintas klaster untuk domain sumber.

  2. Domain sumber mengevaluasi permintaan tersebut terhadap kebijakan akses domainnya. Karena pencarian lintas klaster memerlukan kontrol akses detail, kami merekomendasikan kebijakan akses terbuka pada domain sumber.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
    catatan

    Jika Anda menyertakan indeks jarak jauh di jalur, Anda harus mengkodekan URL URI di domain ARN. Misalnya, gunakan arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index bukanarn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index.

    Jika Anda memilih untuk menggunakan kebijakan akses terbatas selain kontrol akses detail, minimal kebijakan Anda harus mengizinkan akses ke es:ESHttpGet.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/test-user" ] }, "Action": "es:ESHttpGet", "Resource": "arn:aws:es:region:account:domain/src-domain/*" } ] }
  3. Kontrol akses detail pada domain sumber mengevaluasi permintaan:

    • Apakah permintaan ditandatangani dengan kredensial dasar IAM atau HTTP yang valid?

    • Jika demikian, apakah pengguna memiliki izin untuk melakukan pencarian dan mengakses data?

    Jika permintaan hanya mencari data pada domain tujuan (misalnya, dest-alias:dest-index/_search), Anda hanya memerlukan izin pada domain tujuan.

    Jika permintaan mencari data di kedua domain (misalnya, source-index,dest-alias:dest-index/_search), Anda memerlukan izin pada kedua domain.

    Dalam kontrol akses berbutir halus, pengguna harus memiliki indices:admin/shards/search_shards izin selain standar read atau search izin untuk indeks yang relevan.

  4. Sumber domain melewati permintaan ke domain tujuan. Domain tujuan mengevaluasi permintaan ini terhadap kebijakan akses domainnya. Anda harus menyertakan izin es:ESCrossClusterGet pada domain tujuan:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }

    Pastikan bahwa izin es:ESCrossClusterGet diterapkan untuk /dst-domain dan bukan /dst-domain/*.

    Namun, kebijakan minimum ini hanya memungkinkan pencarian lintas klaster. Untuk melakukan operasi lain, seperti mengindeks dokumen dan melakukan pencarian standar, Anda memerlukan izin tambahan. Kami merekomendasikan kebijakan berikut pada domain tujuan:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:region:account:domain/dst-domain/*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESCrossClusterGet", "Resource": "arn:aws:es:region:account:domain/dst-domain" } ] }
    catatan

    Semua permintaan pencarian lintas cluster antar domain dienkripsi dalam perjalanan secara default sebagai bagian dari enkripsi. node-to-node

  5. Domain tujuan melakukan pencarian dan mengembalikan hasil ke domain sumber.

  6. Sumber domain menggabungkan hasil sendiri (jika ada) dengan hasil dari domain tujuan dan mengembalikannya kepada Anda.

  7. Kami merekomendasikan Postman untuk permintaan pengujian:

    • Pada domain tujuan, indeks dokumen:

      POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1 { "Dracula": "Bram Stoker" }
    • Untuk melakukan kueri indeks ini dari domain sumber, sertakan alias koneksi domain tujuan dalam kueri.

      GET https://src-domain.us-east-1.es.amazonaws.com/<connection_alias>:books/_search { ... "hits": [ { "_index": "source-destination:books", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "Dracula": "Bram Stoker" } } ] }

      Anda dapat menemukan alias koneksi di tab Connections di dasbor domain Anda.

    • Jika Anda mengatur koneksi antara domain-a -> domain-b dengan alias cluster_b dan domain-a -> domain-c dengan alias koneksi cluster_c, pencarian domain-a, domain-b, dan domain-c sebagai berikut:

      GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search { "query": { "match": { "user": "domino" } } }

      Respons

      { "took": 150, "timed_out": false, "_shards": { "total": 3, "successful": 3, "failed": 0, "skipped": 0 }, "_clusters": { "total": 3, "successful": 3, "skipped": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "local_index", "_type": "_doc", "_id": "0", "_score": 1, "_source": { "user": "domino", "message": "Lets unite the new mutants", "likes": 0 } }, { "_index": "cluster_b:b_index", "_type": "_doc", "_id": "0", "_score": 2, "_source": { "user": "domino", "message": "I'm different", "likes": 0 } }, { "_index": "cluster_c:c_index", "_type": "_doc", "_id": "0", "_score": 3, "_source": { "user": "domino", "message": "So am I", "likes": 0 } } ] } }

      Jika Anda tidak memilih untuk melewati kluster yang tidak tersedia dalam pengaturan koneksi, semua kluster tujuan yang Anda cari harus tersedia agar permintaan pencarian Anda berjalan dengan sukses. Jika tidak, seluruh permintaan gagal—bahkan jika salah satu domain tidak tersedia, tidak ada hasil pencarian yang dikembalikan.

OpenSearch Dasbor

Anda dapat memvisualisasikan data dari beberapa domain yang terhubung dengan cara yang sama seperti dari satu domain, kecuali bahwa Anda harus mengakses indeks jarak jauh menggunakan. connection-alias:index Jadi, pola indeks Anda harus cocok dengan connection-alias:index.