Closed7

AWS OpenSearch (ElasticSearch) でCold storageを調査し、試す

harrythecodeharrythecode

前提条件をクリアしてるかどうかを確認。全部満たしてるっぽいので次へ。

  • コールドストレージには、OpenSearch または Elasticsearch バージョン 7.9 以降が必要です

  • OpenSearch Service ドメインでコールドストレージを有効にするには、同じドメインで UltraWarm も有効にする必要があります。

  • コールドストレージを使用するには、ドメインに専用のマスターノードがある必要があります。

  • ドメインでデータノードに T2 または T3 インスタンスタイプが使用されている場合、コールドストレージを使用することはできません。

  • インデックスがおおよその k-NN ("index.knn": true) [1]を使用している場合、コールドストレージに移すことはできません。

  • ドメインがきめ細かなアクセスコントロールを使用する場合、管理者以外のユーザーは、コールドインデックスを管理するために OpenSearch Dashboards の cold_manager ロールにマッピングされている必要があります。

脚注
  1. DevToolでGET <index>/_settingsを見て確認。index.knnの説明 ↩︎

harrythecodeharrythecode

Amazonのコンソール上では以下の通りGreen/Blue Deploymentが実行されるのでしばらく待つ。

  • Step 1 of 6: Creating a new environment
    Preparing resources.

  • Step 2 of 6: Provisioning new nodes
    Provisioning new nodes.

  • Step 3 of 6: Traffic routing on new nodes
    Enabling traffic routing through the new nodes.

  • Step 4 of 6: Traffic routing on old nodes
    Disabling traffic routing through the old nodes.

  • Step 5 of 6: Copying shards to new nodes
    Copying shards to new nodes.

  • Step 6 of 6: Deleting older resources
    Deleting resources associated with the old environment.

harrythecodeharrythecode

Hot/(Ultra)Warm/Cold の違いについて

何が違うのかを一言で表すなら

以下のzennまとめはfreeeさんのOpenSearch運用例を示しています。

https://zenn.dev/link/comments/1da6844f5bd367

harrythecodeharrythecode

テンプレートを少し変えてSlackに通知する形にして運用開始!

{
    "policy_id": "<index>-retention-policy",
    "description": "hot-warm-cold-delete policy <index>",
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
        {
            "name": "hot",
            "actions": [],
            "transitions": [
                {
                    "state_name": "warm",
                    "conditions": {
                        "min_index_age": "1d"
                    }
                }
            ]
        },
        {
            "name": "warm",
            "actions": [
                {
                    "retry": {
                        "count": 5,
                        "backoff": "exponential",
                        "delay": "1h"
                    },
                    "warm_migration": {}
                }
            ],
            "transitions": [
                {
                    "state_name": "cold",
                    "conditions": {
                        "min_index_age": "7d"
                    }
                }
            ]
        },
        {
            "name": "cold",
            "actions": [
                {
                    "cold_migration": {
                        "start_time": null,
                        "end_time": null,
                        "timestamp_field": "@timestamp",
                        "ignore": "none"
                    }
                }
            ],
            "transitions": [
                {
                    "state_name": "delete",
                    "conditions": {
                        "min_index_age": "180d"
                    }
                }
            ]
        },
        {
            "name": "delete",
            "actions": [
                {
                    "notification": {
                        "destination": {
                            "slack": {
                                "url": "<url>"
                            }
                        },
                        "message_template": {
                            "source": "As the index {{ctx.index}} is older than 180 days, it's being removed",
                            "lang": "mustache"
                        }
                    }
                },
                {
                    "cold_delete": {}
                }
            ],
            "transitions": []
        }
    ],
    "ism_template": [
        {
            "index_patterns": [
                "<index>-*"
            ]
        }
    ]
}
このスクラップは2022/06/29にクローズされました