マルチゾーン Elasticsearch クラスタは、最適化されたディザスタリカバリ機能を提供します。システムは、クラスタをデプロイするために十分な Elastic Compute Service (ECS) インスタンスを持つゾーンを自動的に選択します。クラスタ内のインデックスにレプリカシャードが構成されていて、1 つのゾーンのノードに障害が発生した場合、残りのゾーンのノードは中断することなくサービスを提供し続けることができます。これにより、クラスタの可用性が大幅に向上します。さらに、Elasticsearch コンソールでスイッチオーバーを実行して、障害のあるノードを隔離することができます。その後、システムは残りのゾーンに計算リソースを追加して、障害のあるノードを含むゾーンで失われたリソースを補います。このトピックでは、マルチゾーン Elasticsearch クラスタをデプロイし、ゾーンのスイッチオーバーとリカバリを実行する方法について説明します。
シナリオ
Alibaba Cloud Elasticsearch クラスタは、次のいずれかの方法でデプロイできます。
1 つのゾーン内: これはデフォルトのデプロイ方法です。ほとんどの場合、重要ではないワークロードを処理するために使用されます。
2 つのゾーンにまたがる: このデプロイ方法は、ゾーンをまたがるディザスタリカバリを実装します。ほとんどの場合、本番ワークロードを処理するために使用されます。
3 つのゾーンにまたがる: このデプロイ方法は、高可用性を実装します。サービス可用性の要件が高い本番ワークロードを処理するには、このデプロイ方法を使用することをお勧めします。
マルチゾーン Elasticsearch クラスタのデプロイ
操作
Alibaba Cloud Elasticsearch クラスタを購入する際に、クラスタのゾーン数を選択できます。2 つまたは 3 つのゾーンを選択すると、システムはこれらのゾーンにまたがってクラスタをデプロイします。各ゾーンを選択する必要はありません。システムは、クラスタをデプロイするゾーンを自動的に選択します。詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」および 購入ページのパラメータ をご参照ください。
ゾーンをまたがってクラスタをデプロイすることを選択した場合、Elasticsearch コンソールには、クライアントからのネットワークトラフィックを受信するノードがデプロイされているゾーン (杭州ゾーン I など) のみが表示されます。システムは、十分な ECS インスタンスを持つゾーン (杭州ゾーン H や杭州ゾーン J など) にクラスタをデプロイします。
注意事項
カテゴリ | 注意事項 |
ノード |
|
インデックスのレプリカシャード |
説明 レプリカシャードが構成されていないインデックスがクラスタに含まれている場合、ゾーンのスイッチオーバーまたはリカバリを実行すると、データが失われる可能性があります。クラスタ内のインデックスが上記の推奨事項に基づいて構成されていることを確認し、クラスタで定期的な O&M とトラブルシューティングを実行してください。 |
構成の説明
クラスタのデプロイ中に、システムはクラスタのシャード割り当て認識を自動的に有効にします。詳細については、「シャード割り当て認識」をご参照ください。次の表は、 cn-hangzhou-f ゾーンと cn-hangzhou-g ゾーンにまたがってデプロイされた Elasticsearch クラスタに構成されているパラメータを示しています。
パラメータ | 説明 | 例 |
cluster.routing.allocation.awareness.attributes | 重要 Elasticsearch API 操作を呼び出してこのパラメータの値を変更しないでください。そうしないと、例外が発生する可能性があります。 クラスタのシャード割り当て認識を有効にするために使用されるノード属性を指定します。システムは、マルチゾーンクラスタのノードの開始パラメータに Enode.attr.zone_id パラメータを追加して、ノードのゾーンを識別します。たとえば、マルチゾーンクラスタのノードが cn-hangzhou-g ゾーンにデプロイされているとします。この場合、システムはノードの起動パラメータに | zone_id |
cluster.routing.allocation.awareness.force.zone_id.values | シャード割り当ての強制認識を有効にするかどうかを指定します。強制認識は、他のゾーンが使用できなくなったときにゾーンが過負荷になるのを防ぎます。たとえば、 cn-hangzhou-f ゾーンと cn-hangzhou-g ゾーンにまたがってデプロイされた Elasticsearch クラスタのインデックスに、1 つのプライマリシャードと 3 つのレプリカシャードがあるとします。シャード割り当て認識ポリシーに基づいて、システムは cn-hangzhou-f ゾーンと cn-hangzhou-g ゾーンのそれぞれに 2 つのシャードを割り当てます。cluster.routing.allocation.awareness.force.zone_id.values パラメータを構成し、 cn-hangzhou-f ゾーンが使用できなくなった場合、強制認識により、システムが cn-hangzhou-f ゾーンのシャードを cn-hangzhou-g ゾーンに再割り当てすることができなくなります。 説明 デフォルトでは、このパラメータは構成されていません。これは、シャード割り当ての強制認識が無効になっていることを示します。ビジネス要件に基づいてこのパラメータを構成できます。 | ["cn-hangzhou-f", "cn-hangzhou-g"] |
スイッチオーバーとリカバリの実行
Elasticsearch クラスタがゾーンをまたがってデプロイされ、1 つのゾーンのノードに障害が発生した場合、そのゾーンのスイッチオーバーを実行できます。システムは、このゾーンからノードを削除し、クライアントから送信されたネットワークデータを、有効状態にある他のゾーンのノードのみに送信します。スイッチオーバーが実行されたゾーンの障害のあるノードが復旧した後、そのゾーンのリカバリを実行できます。システムは、スイッチオーバー中に削除されたノードをゾーンに追加し、クライアントから送信されたネットワークデータを、有効状態にあるすべてのゾーンのノードに送信します。
スイッチオーバーの前に、クラスタ内のインデックスにレプリカシャードがあることを確認する必要があります。これにより、スイッチオーバー後もクラスタの読み取りおよび書き込み操作が正常に実行されます。
Alibaba Cloud Elasticsearch コンソール にログインします。
左側のナビゲーションウィンドウで、[elasticsearch Clusters] をクリックします。
目的のクラスタに移動します。
上部のナビゲーションバーで、クラスタが属するリソースグループと、クラスタが存在するリージョンを選択します。
[elasticsearch Clusters] ページで、クラスタを見つけて ID をクリックします。
クラスタの [ノードの視覚化][基本情報] ページの セクションで、スイッチオーバーを実行します。
スイッチオーバーを実行する必要があるゾーンにポインタを移動し、[スイッチオーバー] をクリックします。

[操作の確認] メッセージで、[続行] をクリックします。
その後、システムはクラスタを再起動してスイッチオーバーを有効にします。スイッチオーバーが成功すると、ゾーンの状態が「有効」から「無効」に変わります。
説明スイッチオーバーを実行すると、システムは対応する数のノード (専用マスターノード、クライアントノード、データノードなど) を、有効状態にある残りのゾーンに自動的に追加します。これにより、Elasticsearch クラスタに十分な計算リソースが確保されます。ただし、基盤となるリソースの在庫やスケジューリングの同時実行制限などのさまざまな要因により、ゾーンへのノードの追加の成功率は保証できません。
スイッチオーバー後、計算リソースとクラスタが処理できる最大ワークロードが削減されます。障害がクラスタに与える影響を軽減するには、障害が発生したときに、できるだけ早くクラスタの使用率を制御し、速度制限などの操作を実行する必要があります。
スイッチオーバーを実行する前にインデックスにレプリカシャードがある場合、スイッチオーバー後にクラスタのステータスが異常 (黄色で表示) になります。この場合、スイッチオーバーが完了した後、Kibana コンソールにログイン し、次のコマンドを参照してクラスタのパラメータを構成できます。この操作は、スイッチオーバーが実行されたゾーンのシャードを残りのゾーンに割り当てるために使用されます。シャードが割り当てられると、クラスタのステータスは正常 (緑色で表示) になります。
PUT /_cluster/settings { "persistent" : { "cluster.routing.allocation.awareness.force.zone_id.values" : {"0": null, "1": null, "2": null} } }[ノードの視覚化] セクションで、スイッチオーバーが実行されたゾーンをリカバリします。
ゾーンにポインタを移動し、[スイッチバック] をクリックします。
[操作の確認] メッセージで、[続行] をクリックします。
その後、システムは Elasticsearch クラスタを再起動してリカバリを有効にします。リカバリが成功すると、ゾーンの状態が「無効」から「有効」に変わります。
説明ゾーンをリカバリすると、システムはスイッチオーバー中に追加されたノード (など) を削除します。さらに、システムは削除されたデータノードに格納されているデータを他のデータノードに移行します。