教學課程:遷移到亞馬遜OpenSearch服務 - Amazon OpenSearch 服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:遷移到亞馬遜OpenSearch服務

索引快照是從自我管理移轉的熱門方式OpenSearch或傳統彈性搜索集群到亞馬遜OpenSearch服務。此程序大致包含下列步驟:

  1. 建立現有叢集的快照,然後將快照上傳至 Amazon S3 儲存貯體。

  2. 創建一個OpenSearch服務網域。

  3. 給OpenSearch存取值區的服務權限,並確保您擁有使用快照的權限。

  4. 還原上的快照OpenSearch服務網域。

此演練提供更詳細的步驟和替代選項 (如適用)。

建立並上傳快照

雖然您可以使用 repository-s3 外掛程式直接將快照建立在 S3 上,但是您必須在每個節點上安裝外掛程式,如果使用 Elasticsearch 叢集,應調整 opensearch.yml (或 elasticsearch.yml),重新啟動每個節點,新增 AWS 憑證,最後才能建立快照。外掛程式是適合持續使用或遷移較大型叢集的絕佳選擇。

若是較小的叢集,可以採用一次性的方法,先建立共用檔案系統快照,然後使用 AWS CLI 將其上傳到 S3。如果您已經有快照,請跳至步驟 4。

若要建立快照並上傳至 Amazon S3
  1. path.repo 設定新增至所有節點上的 opensearch.yml (或 Elasticsearch.yml),然後重新啟動每個節點。

    path.repo: ["/my/shared/directory/snapshots"]
  2. 註冊快照儲存庫,此為建立快照前所需。儲存庫只是一個儲存位置:共用檔案系統、Amazon S3、Hadoop 分散式檔案系統 (HDFS) 等。在此情況下,我們將使用共用檔案系統 ("fs"):

    PUT _snapshot/my-snapshot-repo-name { "type": "fs", "settings": { "location": "/my/shared/directory/snapshots" } }
  3. 建立快照:

    PUT _snapshot/my-snapshot-repo-name/my-snapshot-name { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }
  4. 安裝 AWS CLI,然後執行 aws configure 以新增您的登入資料。

  5. 瀏覽至快照目錄。然後執行下列命令以建立新的 S3 儲存貯體,並將快照目錄的內容上傳至該儲存貯體:

    aws s3 mb s3://bucket-name --region us-west-2 aws s3 sync . s3://bucket-name --sse AES256

    視快照大小和網際網路連線速度而定,此操作可能需要一段時間。

建立網域

雖然主控台是建立網域最簡單的方法,但在這種情況下,您已經開啟終端機而且已安裝 AWS CLI。修改下列命令即可建立符合您需求的網域:

aws opensearch create-domain \ --domain-name migration-domain \ --engine-version OpenSearch_1.0 \ --cluster-config InstanceType=c5.large.search,InstanceCount=2 \ --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 \ --node-to-node-encryption-options Enabled=true \ --encryption-at-rest-options Enabled=true \ --domain-endpoint-options EnforceHTTPS=true,TLSSecurityPolicy=Policy-Min-TLS-1-2-2019-07 \ --advanced-security-options Enabled=true,InternalUserDatabaseEnabled=true,MasterUserOptions='{MasterUserName=master-user,MasterUserPassword=master-user-password}' \ --access-policies '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["*"]},"Action":["es:ESHttp*"],"Resource":"arn:aws:es:us-west-2:123456789012:domain/migration-domain/*"}]}' \ --region us-west-2

若未經修改,此命令會建立具有兩個資料節點的網際網路存取網域,每個節點都有 100 GiB 的儲存空間。它也會啟用具有 HTTP 基本身分驗證和所有加密設定的精細存取控制。使用OpenSearch服務主控台 (如果您需要更進階的安全性設定,例如 VPC)。

發出命令之前,請先變更網域名稱、主要使用者登入資料和帳戶號碼。指定相同AWS 區域您用於 S3 存儲桶和OpenSearch/彈性搜索與您的快照兼容的版本。

重要

快照只能正向相容,而且只能往前一個主要版本。例如,您無法從OpenSearch1.x彈性搜索 7 上的集群。x叢集,只有一個OpenSearch1.x或 2.x集群。次要版本也很重要。您無法從 5.3.2 上的自我管理 5.3.3 叢集還原快照OpenSearch服務網域。我們建議您選擇最新版本OpenSearch或彈性搜索您的快照支持。如需相容版本的表格,請參閱使用快照來遷移資料

提供許可以存取 S3 儲存貯體。

在 AWS Identity and Access Management (IAM) 主控台中,建立角色,它具有下列許可和信任關係。在建立角色時,選擇 S3 作為 AWS Service。將角色命名為 OpenSearchSnapshotRole 以便輕鬆找到。

許可

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

信任關係

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

然後授予您的個人 IAM 角色許可,以擔任 OpenSearchSnapshotRole。建立下列政策,並將它連接到您的身分:

許可

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } ] }

對應快照角色OpenSearch儀表板 (如果使用精細的存取控制)

如果您已啟用精細存取控制,即使您將 HTTP 基本身分驗證用於所有其他目的,您也需要將 manage_snapshots 角色映射至 IAM 角色,以便您可以使用快照。

若要為您的身分授予許可以便使用快照
  1. 使用您在建立OpenSearch服務網域。您可以在OpenSearch服務主控台。其格式為 https://domain-endpoint/_dashboards/

  2. 從主選單中選擇 Security (安全性)、Roles (角色),然後選取 manage_snapshots 角色。

  3. 選擇 Mapped users (已映射的使用者)、Manage mapping (管理映射)。

  4. 在適當的欄位中新增您的個人 IAM 角色的網域 ARN。ARN 採用下列其中一種格式:

    arn:aws:iam::123456789123:user/user-name
    arn:aws:iam::123456789123:role/role-name
  5. 選擇 Map (映射),並確認角色顯示在 Mapped users (已映射的使用者) 中。

還原快照

此時,您有兩種方法可以訪問OpenSearch服務網域:使用您的主要使用者認證進行 HTTP 基本驗證,或AWS使用 IAM 登入資料進行身份驗證 由於快照使用沒有主要使用者概念的 Amazon S3,因此您必須使用 IAM 登入資料向您的OpenSearch服務網域。

大多數編程語言都有幫助簽名請求的庫,但更簡單的方法是使用類似的工具邮递员並將您的 IAM 登入資料放入授權部分。

還原快照
  1. 無論您選擇如何簽署請求,第一步都是註冊儲存庫:

    PUT _snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "bucket-name", "region": "us-west-2", "role_arn": "arn:aws:iam::123456789012:role/OpenSearchSnapshotRole" } }
  2. 然後列出儲存庫中的快照,找到您要還原的快照。此時,您可以繼續使用 Postman,或切換到 curl 等工具。

    速記

    GET _snapshot/my-snapshot-repo-name/_all

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/_all
  3. 還原快照。

    速記

    POST _snapshot/my-snapshot-repo-name/my-snapshot-name/_restore { "indices": "migration-index1,migration-index2,other-indices-*", "include_global_state": false }

    curl

    curl -XPOST -u 'master-user:master-user-password' https://domain-endpoint/_snapshot/my-snapshot-repo-name/my-snapshot-name/_restore \ -H 'Content-Type: application/json' \ -d '{"indices":"migration-index1,migration-index2,other-indices-*","include_global_state":false}'
  4. 最後,確認索引是否已依照預期還原。

    速記

    GET _cat/indices?v

    curl

    curl -XGET -u 'master-user:master-user-password' https://domain-endpoint/_cat/indices?v

此時,遷移即已完成。您可以配置您的客戶端使用新的OpenSearch服務端點調整網域大小以適應您的工作負載,請檢查索引的碎片計數,切換到IAM 主要使用者,或開始建立視覺效果OpenSearch儀表板。