Elasticsearch クラスタの構成をアップグレードする際に、クラスタが存在するゾーンのリソースが不足していることがシステムチェックで判明した場合、ゾーン内のノードを別のゾーンに移行できます。 これにより、クラスタが存在するゾーンにアップグレードに必要な十分なリソースが提供されます。 ビジネスの拡大に伴い、シングルゾーンの Elasticsearch クラスタが高並列クエリまたは大容量データ書き込みの要件を満たせなくなった場合は、クラスタをマルチゾーンクラスタにアップグレードして、単一障害点(SPOF)を回避し、クラスタの高可用性を実現できます。 このトピックでは、ゾーン内のノードを移行する方法と、クラスタのデプロイメントモードをアップグレードする方法について説明します。
背景情報
ゾーン: ほとんどの場合、データセンターはゾーンに対応します。 場合によっては、データセンターが複数のゾーンに対応することもあります。 たとえば、AM5 データセンターは cn-hangzhou-d ゾーンと cn-hangzhou-finance-d ゾーンに対応します。 Elasticsearch の管理を容易にするために、データセンターが削除されると、関連するゾーンも削除されます。
ゾーン間のノード移行: Elasticsearch ノードを、リソースが十分にある別のゾーンに移行できます。 この操作は、リソースのボトルネックを解消し、負荷分散を実現することで、リソース不足による構成アップグレードの失敗を回避するのに役立ちます。 Elasticsearch は、クラスタのノードをゾーン間で移行できるようにするための標準化された機能を提供しています。 移行は、Elasticsearch のブルーグリーンデプロイメント機能に基づいて実装されます。 これにより、スムーズで円滑なクラスタの変更が可能になります。
デプロイメントモードのアップグレード: クラスタをシングルゾーンクラスタからマルチゾーンクラスタにアップグレードできます。 マルチゾーンデプロイメントは、クラスタのディザスタリカバリ機能を向上させます。 この操作は、SPOF を防止し、クラスタの可用性と安定性を向上させるのに役立ちます。
課金
使用したノード数に基づいて課金されます。 実際の請求額が優先されます。 詳細については、「Elasticsearch の課金」をご参照ください。
注意事項
ゾーン間のノード移行
一度に移行できるのは、単一ゾーン内のノードのみです。 複数のゾーンのノードを移行する場合は、複数回移行を実行する必要があります。
ゾーン内のノードを別のゾーンに移行すると、システムはクラスタのローリングリスタートを実行します。 移行に必要な時間は、クラスタのサイズ、データ量、および負荷によって異なります。 閑散時に移行を実行することをお勧めします。
ほとんどの場合、クラスタのインデックスにレプリカシャードがあり、クラスタの負荷が正常であれば、移行中もクラスタはサービスを提供し続けることができます。 クラスタの負荷が正常であることを示す項目は次のとおりです。クラスタ内の各ノードの CPU 使用率が約 60%、クラスタ内の各ノードのヒープメモリ使用量が約 50%、各ノードの NodeLoad_1m の値がノードの vCPU 数よりも少ない。
クラスタのインデックスにレプリカシャードがなく、クラスタの負荷が過度に高く、大量のデータがクラスタに書き込まれている、またはクラスタでクエリされている場合、移行中にアクセス タイムアウトが発生する可能性があります。 ゾーン内のノードを移行する前に、クライアントのアクセス リトライメカニズムを構成することをお勧めします。 これにより、ビジネスへの影響が軽減されます。
デプロイメントモードのアップグレード
シングルゾーンにデプロイされたクラスタは、2 ゾーンまたは 3 ゾーンにデプロイされたクラスタにアップグレードできます。 2 ゾーンにデプロイされたクラスタを 3 ゾーンにデプロイされたクラスタにアップグレードすることはできません。
クラスタの安定性を確保するために、システムはアップグレード中にデフォルトで専用マスターノードを有効にします。
アップグレード中に、クラスタの既存のノードが再起動され、システムはデータノードの数を自動的に調整して、データが複数のゾーンに均等に分散されるようにします。
データノード数を計算する式:
データノードの総数 = アップグレード後のシングルゾーンのデータノード数 × ゾーン数たとえば、クラスタがシングルゾーンにデプロイされ、6 つのデータノードがあるとします。 クラスタが 3 ゾーンにデプロイされたクラスタにアップグレードされると、クラスタの各ゾーンのデータノード数は
2になります。説明クラスタがシングルゾーンにデプロイされているが、データノードが少ない場合、クラスタをマルチゾーンにデプロイされたクラスタにアップグレードした後に、各ゾーンに少なくとも 1 つのデータノードが割り当てられるようにすることはできません。 この場合、システムは必要に応じてデータノードを自動的に追加します。 たとえば、シングルゾーンにデプロイされたクラスタに合計 2 つのデータノードしかない場合。 クラスタを 3 ゾーンにデプロイされたクラスタにアップグレードすると、システムは 1 つのデータノード(つまり、合計 3 つのデータノード)を自動的に追加して、各ゾーンに 1 つのデータノードが割り当てられるようにします。
前提条件
ゾーン間のノード移行
Elasticsearch クラスタが正常な状態であることを確認します。
GET _cat/health?vコマンドを実行して、クラスタのステータスを表示できます。クラスタの Kibana コンソールで、クラスタがクローズ状態のインデックスを保存しているかどうかを確認します。 クラスタがそのようなインデックスを保存している場合は、インデックスを開く必要があります。 そうしないと、アップグレードは失敗します。
次のコマンドを実行して、インデックスのステータスを表示します。
GET /_cat/indices?v
次のコマンドを実行して、クローズ状態のインデックスを開きます。
POST /<index_name>/_open<index_name> を、クローズ状態のインデックスの名前に置き換えます。
現在のアカウント内に十分なリソースを持つゾーンが存在することを確認します。
ゾーンには十分なリソースがある可能性があるため、アルファベット順に下から上にデスティネーションゾーンを選択することをお勧めします。 たとえば、[cn-hangzhou-e] と [cn-hangzhou-h] の両方が使用可能な場合は、[cn-hangzhou-h] を選択します。 ノードを別のゾーンに移行した後、手動で Elasticsearch クラスタの構成をアップグレードする必要があります。
cluster.routing.allocation.enable設定項目がallに設定されていることを確認します。これは、自動シャード割り当てが許可されていることを示します。 そうしないと、変更プロセスがブロックされる可能性があります。GET _cluster/settingsコマンドを実行して、構成を表示できます。cluster.routing.allocation.enableの値がallでない場合は、次のコマンドを実行します。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
デプロイメントモードのアップグレード
Elasticsearch クラスタが正常な状態であることを確認します。
GET _cat/health?vコマンドを実行して、クラスタのステータスを表示できます。クライアントの接続分散が最適化され、持続的接続の不均等な分散が回避されていることを確認します。
クライアントと Elasticsearch クラスタ間の持続的接続が特定のゾーン(たとえば、ゾーン A)のノードに集中し、他のゾーンのノードの接続が少ない場合、ゾーン A のノードは接続が多すぎるために高負荷およびリソース不足になる可能性がありますが、他のノードはアイドル状態のままです。 接続の有効期間を構成するか、クライアントを同時に再起動するか、個別のクライアントノードを使用することで、接続分散を最適化できます。 詳細については、「不均等な持続的接続」をご参照ください。
cluster.routing.allocation.enable設定項目がallに設定されていることを確認します。これは、自動シャード割り当てが許可されていることを示します。 そうしないと、変更プロセスがブロックされる可能性があります。GET _cluster/settingsコマンドを実行して、構成を表示できます。cluster.routing.allocation.enableの値がallでない場合は、次のコマンドを実行します。PUT _cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
ゾーン内のノードを移行する
ゾーン内のノードを移行するには、次の手順を実行します。
ノードの移行により、クラスタの再起動がトリガーされます。 再起動中、クラスタは引き続きサービスを提供できますが、サービスが不安定になる可能性があります。 したがって、閑散時にノードを移行することをお勧めします。
クラスタの詳細ページに移動します。
Alibaba Cloud Elasticsearch コンソール にログインします。
左側のナビゲーションウィンドウで、[Elasticsearch Clusters] をクリックします。
上部のナビゲーションバーで、目的のリソースグループとリージョンを選択します。 クラスタリストで、クラスタを見つけて ID をクリックします。
[基本情報] ページの [ノードの視覚化] セクションで、ノードを移行するゾーンにポインタを移動します。 次に、[移行] をクリックします。

[ノードの移行] ダイアログボックスで、[デスティネーションゾーン] と [vSwitch] を構成します。
パラメータ
説明
デスティネーションゾーン
ノードを移行するゾーンを選択します。
選択したゾーンにもリソースが不足しているか、使用できない可能性があります。 この場合は、別のゾーンを選択します。
ノードの高可用性を確保するために、Elasticsearch クラスタのノードがデプロイされている他のゾーンを選択することはできません。
vSwitch
クラスタがシングルゾーンクラスタの場合、ノードの移行のために新しい [vSwitch] を選択する必要があります。 ほとんどの場合、デフォルトで提供される vSwitch が使用されます。
説明クラスタがマルチゾーンクラスタまたは Alibaba Finance Cloud にデプロイされたクラスタの場合、新しい [vSwitch] を選択する必要はありません。
使用可能な vSwitch がない場合は、vSwitch を作成します。 詳細については、「vSwitch の作成と管理」をご参照ください。
データ移行の条件を読み、チェックボックスをオンにして、[OK] をクリックします。
その後、システムはクラスタを再起動します。 クラスタが再起動されると、ノードはデスティネーションゾーンに移行されます。
重要移行中に、デスティネーションゾーンで専用マスターノードを購入する必要があります。 この場合、元のゾーンとデスティネーションゾーンは共存します。
移行後、情報の更新が遅延しているため、Elasticsearch コンソールの 基本情報ページとアップグレード/ダウングレードページに元のゾーンが引き続き表示される場合があります。 これは、新しいゾーンでのクラスタの使用には影響しません。 ノードの視覚化セクションの基本情報ページで、クラスタが存在する実際のゾーンを表示できます。
ゾーン内のノードが移行されると、ノードの IP アドレスが変更されます。 クラスタの構成で IP アドレスを指定した場合は、移行後に IP アドレスを更新する必要があります。
クラスタのデプロイメントモードをマルチゾーンデプロイメントにアップグレードする
クラスタのデプロイメントモードをマルチゾーンデプロイメントにアップグレードするには、次の手順を実行します。
アップグレード中に負荷の不均衡が発生する可能性があります。 この問題の解決方法については、「クラスタの負荷の不均衡」をご参照ください。
クラスタの詳細ページに移動します。
Alibaba Cloud Elasticsearch コンソール にログインします。
左側のナビゲーションウィンドウで、[Elasticsearch Clusters] をクリックします。
上部のナビゲーションバーで、目的のリソースグループとリージョンを選択します。
表示されるページで、デプロイメントモードをアップグレードするクラスタを見つけて、[アクション] 列の [構成のアップグレード] をクリックします。
[アップグレード/ダウングレード] ページで、[ゾーン数] を 2-AZ または 3-AZ(推奨)に設定します。 次に、指示に従って購入を完了します。
説明ビジネス要件に基づいて他のパラメータを構成するか、デフォルト値を保持できます。 使用したノード数に基づいて課金されます。 実際の請求額が優先されます。 詳細については、「Elasticsearch の課金」をご参照ください。
次のステップ
移行またはアップグレードが完了したら、クラスタの詳細ページに移動して、変更されたゾーンの詳細を表示できます。