全部產品
Search
文件中心

Elasticsearch:遷移Elasticsearch角色和kibana可視化大盤

更新時間:Jun 30, 2024

如果您需要將源端ES中的角色、使用者或可視化大盤的相關資訊複製到目標端ES中使用,可以通過手動備份和恢複快照的方式實現。

前提條件

  • 已開通Object Storage Service (OSS),並建立一個標準儲存類型的Bucket,且Bucket的地區與ES執行個體的地區保持一致。具體操作,請參見開通OSS服務建立儲存空間

  • 建立2個阿里雲ES執行個體。一個ES作為源端,一個ES作為目標端,ES不同版本之間恢複快照的相容性,請參見Index compatibility

    說明
    • 8.x和7.x版本ES快照恢複有差異,本文以7.10版本ES執行個體之間的恢複和8.5版本ES執行個體之間的恢複為例。

    • ES不同版本之間恢複快照的相容性,請參見Index compatibility

注意事項

  • 本文中的代碼均可以在阿里雲ES執行個體的Kibana控制台上執行。

  • 在ES 8.0及以上版本中,features是備份和恢複系統索引和系統資料流的唯一方式。詳細資料,請參見Snapshot and restore

遷移Elasticsearch角色和使用者

步驟一:準備環境

  1. 在源端ES執行個體中登入Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 建立角色cj_test_role和一個使用者kara,並為該使用者指派cj_test_role角色。具體操作,請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控

步驟二:備份快照資料

  1. 登入源端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 在源端ES執行個體中建立一個名稱為my_backup的倉庫。

    • 雲上叢集建立倉庫。

      PUT _snapshot/my_backup/
      {
          "type": "oss",
          "settings": {
              "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
              "access_key_id": "xxxx",
              "secret_access_key": "xxxxxx",
              "bucket": "xxxxxx",
              "compress": true,
              "chunk_size": "500mb",
              "base_path": "snapshot/"
          }
      }
    • 8.x版本自建叢集建立倉庫,需要安裝elasticsearch-repository-oss外掛程式。具體操作,請參見安裝elasticsearch-repository-oss外掛程式

      說明

      關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss

      PUT /_snapshot/my_backup
      {
          "type": "oss",
          "settings": {
              "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
              "oss.client.access_key_id": "xxx",
              "oss.client.secret_access_key": "xxx",
              "oss.client.bucket": "xxxxxx",
              "oss.client.base_path":"snapshot/",
              "oss.client.compress": true
          }
      }

    參數

    說明

    endpoint

    OSS Bucket的內網訪問網域名稱。擷取方式,請參見訪問網域名稱和資料中心

    access_key_id

    用於標識使用者。擷取方式,請參見擷取AccessKey

    secret_access_key

    用於驗證使用者的密鑰。擷取方式,請參見擷取AccessKey

    bucket

    OSS Bucket的名稱,需要一個已經存在的Bucket。擷取方式,請參見控制台建立儲存空間

    compress

    開啟快照檔案的壓縮功能:

    • true:開啟壓縮功能,僅應用於中繼資料檔案(索引映射和設定)。

    • false(預設值):不開啟壓縮功能,資料檔案未壓縮。

    chunk_size

    當您上傳的資料非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,資料將會被分塊上傳到OSS中。

    base_path

    倉庫的起始位置,預設為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。

  3. 源端ES執行個體中建立快照。

    • 執行如下命令,在ES 7.10版本執行個體中建立快照snapshot_1

      說明

      ES 7.10版本角色、使用者通過系統索引.kibana*.security*管理。

      ES 7.10版本建立快照命令中參數解析,請參見Restore snapshot API

      PUT _snapshot/my_backup/snapshot_1
      {
       "indices": ".kibana*,.security*",
       "ignore_unavailable": true,
       "include_global_state": true
      }
    • 執行如下命令,在ES 8.5版本執行個體中為角色和使用者相關的索引建立快照snapshot_1

      說明

      ES 8.5版本建立快照命令中參數解析,請參見Create snapshot API

      PUT _snapshot/my_backup/snapshot_1
      {
       "indices": "-*",
       "ignore_unavailable": true,
       "include_global_state": true,
       "feature_states": [
       "security"
       ]
      }
  4. 確認成功建立快照。例如,執行如下命令,擷取my_backup倉庫中快照snapshot_1的詳細資料。

    GET _snapshot/my_backup/snapshot_1

步驟三:恢複快照資料

  1. 登入目標端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 在目標端ES執行個體中建立一個名稱為my_restore的倉庫。

    PUT _snapshot/my_restore
    {
     "type": "oss",
     "settings": {
     "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
     "access_key_id": "[your_access_key_id]",
     "secret_access_key": "[your_secret_access_key]",
     "bucket": "[your_bucket_name]",
     "compress": true,
     "chunk_size": "500mb",
     "base_path": "snapshot/"
     }
    }
  3. 將源端ES執行個體中的快照恢複到目標端ES執行個體中。

    • ES為7.10版本,在目標端進行如下操作恢複快照。

      說明

      7.10及以下版本在恢複快照前需要先關閉目標端的系統索引.kibana*.security*,並在恢複快照後儘快開啟被關閉的系統索引。

      • 關閉系統索引可能會導致Elasticsearch執行個體功能不可用或受限。例如,關閉.kibana可能導致Kibana無法使用;關閉.security可能導致安全功能受限。

      • 建議您提前備份資料,以便在需要時進行恢複。

      • 建議在目標端ES的業務低峰期或停止服務時操作。

      • 如果Kibana控制台不能關閉這些索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令

      1. 關閉目標端系統索引.kibana*.security*

        POST /<index name>/_close
      2. 恢複源端快照。

        POST /_snapshot/my_restore/snapshot_1/_restore
        {
         "indices": ".kibana*,.security*",
         "ignore_unavailable": true,
         "include_global_state": false
        }
      3. 開啟目標端系統索引.kibana*.security*

        POST /<index name>/_open
    • ES為8.5版本,在目標端執行如下代碼恢複快照snapshot_1

      POST _snapshot/my_restore/snapshot_1/_restore
      {
       "feature_states": [ "security" ],
       "include_global_state": false, 
       "indices": "-*" 
      }
  4. 驗證角色和使用者是否遷移成功。

    1. 在頁面左上方,選擇菜單.png > Management > Stack Management

    2. 在左側功能表列,選擇安全 > 使用者,可以看到已經將源端中角色為cj_test_role的使用者kara恢複到了目標端ES上。

      image.png

遷移kibana可視化大盤

步驟一:準備環境

  1. 在源端ES執行個體中登入Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 添加範例資料。

    說明

    以下操作步驟以ES 8.5版本為例,其他版本操作略有不同,以控制台為準。

    1. 在Kibana首頁,通過添加整合開始使用地區單擊試用範例資料

    2. 範例資料頁簽,單擊其他範例資料集

    3. 單擊Sample flight data資料集下的添加資料

      添加資料變為查看資料時,表示該資料集已添加完成。添加範例資料後,Kibana會自動建立一些相關的可視化。

      image.png

  3. 在Kibana控制台左上方,選擇菜單.png > Analytics > Visualize Library ,在可視化大盤中查看已存在的可視化,例如【航班】到達地天氣、【航班】延誤與取消等。

步驟二:備份快照資料

  1. 登入源端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 在源端ES執行個體中建立一個名稱為my_backup的倉庫。

    • 雲上叢集建立倉庫。

      PUT _snapshot/my_backup/
      {
          "type": "oss",
          "settings": {
              "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
              "access_key_id": "xxxx",
              "secret_access_key": "xxxxxx",
              "bucket": "xxxxxx",
              "compress": true,
              "chunk_size": "500mb",
              "base_path": "snapshot/"
          }
      }
    • 8.x版本自建叢集建立倉庫,需要安裝elasticsearch-repository-oss外掛程式。具體操作,請參見安裝elasticsearch-repository-oss外掛程式

      說明

      關於該外掛程式的詳細資料,請參見elasticsearch-repository-oss

      PUT /_snapshot/my_backup
      {
          "type": "oss",
          "settings": {
              "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
              "oss.client.access_key_id": "xxx",
              "oss.client.secret_access_key": "xxx",
              "oss.client.bucket": "xxxxxx",
              "oss.client.base_path":"snapshot/",
              "oss.client.compress": true
          }
      }

    參數

    說明

    endpoint

    OSS Bucket的內網訪問網域名稱。擷取方式,請參見訪問網域名稱和資料中心

    access_key_id

    用於標識使用者。擷取方式,請參見擷取AccessKey

    secret_access_key

    用於驗證使用者的密鑰。擷取方式,請參見擷取AccessKey

    bucket

    OSS Bucket的名稱,需要一個已經存在的Bucket。擷取方式,請參見控制台建立儲存空間

    compress

    開啟快照檔案的壓縮功能:

    • true:開啟壓縮功能,僅應用於中繼資料檔案(索引映射和設定)。

    • false(預設值):不開啟壓縮功能,資料檔案未壓縮。

    chunk_size

    當您上傳的資料非常大時,配置此參數可以限制快照過程中分塊的大小。超過這個大小,資料將會被分塊上傳到OSS中。

    base_path

    倉庫的起始位置,預設為根目錄。可以指定具體快照的存放目錄,例如snapshot/myindex/。

  3. 源端ES執行個體中建立快照。

    • 執行如下命令,在ES 7.10版本執行個體中建立快照snapshot_2

      說明

      ES 7.10版本建立快照命令中參數解析,請參見Restore snapshot API

      PUT _snapshot/my_backup/snapshot_2
      {
       "indices": ".kibana*,.security*",
       "ignore_unavailable": true,
       "include_global_state": true
      }
    • 執行如下命令,在ES 8.5版本執行個體中為可視化大盤相關的索引建立快照snapshot_2

      說明

      ES 8.5版本建立快照命令中參數解析,請參見Create snapshot API

      PUT _snapshot/my_backup/snapshot_2
      {
        "indices": "-*",
        "ignore_unavailable": true,
        "include_global_state": true,
        "feature_states": [
            "security","kibana"
          ]
  4. 確認成功建立快照。例如,執行如下命令,擷取my_backup倉庫中快照snapshot_2的詳細資料。

    GET _snapshot/my_backup/snapshot_2

步驟三:恢複快照資料

  1. 登入目標端ES執行個體的Kibana控制台。具體操作,請參見登入Kibana控制台

  2. 在目標端ES執行個體中建立一個名稱為my_restore的倉庫。

    PUT _snapshot/my_restore
    {
     "type": "oss",
     "settings": {
     "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
     "access_key_id": "[your_access_key_id]",
     "secret_access_key": "[your_secret_access_key]",
     "bucket": "[your_bucket_name]",
     "compress": true,
     "chunk_size": "500mb",
     "base_path": "snapshot/"
     }
    }
  3. 將源端ES執行個體中的快照恢複到目標端ES執行個體中。

    • ES為7.10版本,在目標端進行如下操作恢複快照。

      說明

      7.10及以下版本在恢複快照前需要先關閉目標端的系統索引.kibana*.security*,並在恢複快照後儘快開啟被關閉的系統索引。

      • 關閉系統索引可能會導致Elasticsearch執行個體功能不可用或受限。例如,關閉.kibana可能導致Kibana無法使用;關閉.security可能導致安全功能受限。

      • 建議您提前備份資料,以便在需要時進行恢複。

      • 建議在目標端ES的業務低峰期或停止服務時操作。

      • 如果Kibana控制台不能關閉系統索引,建議通過終端操作。具體操作,請參見管理Elasticsearch的curl命令

      1. 關閉目標端系統索引.kibana*.security*

        POST /<index name>/_close
      2. 恢複源端快照。

        POST /_snapshot/my_restore/snapshot_2/_restore
        {
         "indices": ".kibana*,.security*",
         "ignore_unavailable": true,
         "include_global_state": false
        }
      3. 開啟目標端系統索引.kibana*.security*

        POST /<index name>/_open
    • ES為8.5版本,在目標端執行如下代碼恢複快照snapshot_2

      POST _snapshot/my_restore/snapshot_2/_restore
      {
        "feature_states": [ "security","kibana" ],
        "include_global_state": false,    
        "indices": "-*"                   
      }
  4. 驗證可視化大盤是否遷移成功。

    在頁面左上方,選擇菜單.png > Analytics > Visualize Library ,查看從源端複用到目標端的可視化。