Alibaba Cloud Elasticsearch クラスターをアップグレードする前に、必要な手動チェックを行い、クラスターのステータスと設定がターゲットバージョンと互換性があることを確認する必要があります。このトピックでは、アップグレードを進める前に、チェック内容、各チェックの重要性、および問題の修正方法について説明します。
このトピックのすべてのコマンドは、Kibana コンソールで実行できます。アクセス手順については、「Kibana コンソールへのログオン」をご参照ください。
前提条件
開始する前に、以下を確認してください。
クラスターの Kibana コンソールへのアクセス
アップグレード予定のクラスターバージョンが確認済みであること (サポートされているアップグレードパスについては、「クラスターのバージョンアップグレード」をご参照ください)。
必須チェック
アップグレードを開始する前に、以下のチェックをすべて実施してください。
クローズされたインデックスのチェック
次のコマンドを実行して、すべてのインデックスとそのステータスを一覧表示します。
GET _cat/indices?vhealth status index
green open .monitoring-es-6-2020.10.29
green open .monitoring-logstash-6-2020.10.31
green open filebeat-6.7.0-2020.10.31
green open .monitoring-kibana-6-2020.10.27
close test出力には、各インデックスとそのステータスが status 列に一覧表示されます。いずれかのインデックスのステータスが close の場合は、アップグレード前にそのインデックスを開いてください。
POST test/_openカーネルバージョンの可用性チェック
アップグレードの一環としてクラスターカーネルを更新する場合は、クラスターの [基本情報] ページで、より新しいカーネルバージョンが利用可能であることを確認してください。
[バージョン] 行で、現在のインスタンスのバージョン (例: 7.10.0) を確認します。バージョン番号の後に [アップグレード可能なカーネルパッチあり] リンクが表示されている場合、カーネルパッチアップデートが利用可能です。
カーネルは、新しいバージョンが表示されている場合にのみ更新できます。
クライアントの互換性チェック
クライアントがクラスターに接続している場合、そのバージョンがターゲットのクラスターバージョンと互換性があることを確認してください。バージョンの互換性の詳細については、「互換性」をご参照ください。バージョンに互換性がない場合は、先に進む前にクライアントをアップグレードしてください。
V5.X から V6.X へのアップグレードに関する追加チェック
V5.X から V6.X へアップグレードする場合は、上記の必須チェックに加えて、以下のチェックも実施してください。
マルチタイプインデックスの分割
V6.X 以降では、マルチタイプインデックスはサポートされていません。クラスターにマルチタイプインデックスがある場合、アップグレード後もそれらのインデックスへの書き込みは機能しますが、V6.X で新しいマルチタイプインデックスを作成するとエラーが発生します。アップグレード前に、各マルチタイプインデックスをシングルタイプのインデックスに分割してください。
クラスター横断検索の無効化
次のコマンドを実行して、クラスター横断検索が有効になっているかどうかを確認します。
GET _cluster/settings結果に search.remote が null 以外の値で表示される場合、クラスター横断検索は有効になっています。アップグレード前に無効にしてください。
PUT _cluster/settings
{
"persistent": {
"search.remote.*": null
},
"transient": {
"search.remote.*": null
}
}アップグレード後、クラスター横断検索を再度有効にすることができます。
V5.X では、クラスター横断検索は search.remote パラメーターを使用します。V6.X では、このパラメーターは cluster.remote に変更されます。
クラスターのステータスチェック
アップグレードを開始するときは、[事前チェック] をクリックすると、クラスターのステータスと負荷の自動チェックが実行されます。アップグレードは、両方のチェックに合格した場合にのみ続行されます。[事前チェック] をクリックする前に、次の表を使用してこれらの条件を手動で確認してください。
チェック項目 | 正常な状態 |
クラスターのステータス | 正常 (緑) |
JVM ヒープメモリ使用率 | 75%未満 |
ディスク使用率 |
|
レプリカシャード | すべてのインデックスにレプリカシャードが設定されていること。マルチゾーンクラスターの場合、インデックスあたりのレプリカシャード数はゾーン数未満であること |
スナップショット | 過去 1 時間以内にスナップショットが作成されていること |
カスタムプラグイン | カスタムプラグインがインストールされていないこと |
Elastic Compute Service (ECS) インスタンス | クラスターのゾーンで利用可能な ECS インスタンスが十分にあること |
YML 設定ファイル | 以前のバージョンの YML 設定がターゲットバージョンと互換性があること |
アップグレード中、システムはターゲットバージョンを実行するノードを追加し、元のノードから新しいノードにデータを移行した後、元のノードを削除します。アップグレードを開始する前に、ゾーンに十分な ECS インスタンスがあることを確認してください。
設定の互換性チェック
V6.X にアップグレードする際、システムは互換性のない設定を自動的にチェックします。アップグレード前に手動でチェックするには、次を実行します。
GET _cluster/settings
GET */_settings?flat_settings=true以下の設定は V6.X と互換性がありません。
番号 | 設定レベル | 設定カテゴリ | パラメーター |
1 | クラスター | スナップショット設定 |
|
2 | クラスター | ストレージスロットリング設定 |
|
3 | インデックス | 類似性設定 |
|
4 | インデックス | シャドウレプリカ設定 |
|
5 | インデックス | インデックスストレージ設定 |
|
6 | インデックス | ストレージスロットリング設定 |
|
7 | インデックス | include_in_all マッピング設定 |
|
8 | インデックス | インデックス作成のバージョン設定 |
|
9 | インデックステンプレート | 類似性設定 |
|
10 | インデックステンプレート | シャドウレプリカ設定 |
|
11 | インデックステンプレート | インデックスストレージ設定 |
|
12 | インデックステンプレート | ストレージスロットリング設定 |
|
13 | インデックステンプレート | include_in_all マッピング設定 |
|
14 | インデックステンプレート | _all マッピング設定 |
|
15 | インデックステンプレート | マッピングにおける複数タイプの設定 | — |
上記の表のすべてのパラメーターは V6.0 以降では非推奨となっています。詳細については、「6.0 の破壊的変更」をご参照ください。
CRITICAL と WARNING のチェック項目
CRITICAL: クラスターをアップグレードできません。互換性のない設定を修正し、再チェックしてください。
WARNING: クラスターはアップグレード可能です。アップグレード後、この設定は無視されます。
インデックステンプレートにこの表のいずれかの設定が含まれている場合、アップグレード後にそのテンプレートを使用してインデックスを作成することはできません。
特定のパラメーターに関する注記
include_in_all(項目 7): V5.X から V6.X へのアップグレード前に作成されたインデックスにこのパラメーターが設定されている場合、アップグレード後も引き続き使用できます。 アップグレード後に作成されたインデックスでは、このパラメーターはサポートされません。index.version.created(項目 8): このパラメーターは、メジャーバージョン間のインデックスアップグレードを防止します。 たとえば、V5.X で作成されたインデックスは、V7.X に直接アップグレードすることはできません。 V5.X から V7.X にアップグレードする前に、Reindex API を使用して V7.X クラスターにデータを移行してから、V5.X のインデックスを削除します。項目 15 (インデックステンプレートのマッピングにおける複数タイプ): インデックステンプレートのマッピング設定に、複数のタイプ設定が含まれていないか確認してください。
互換性のない設定の修正
クラスターレベルの設定
クラスターレベルの互換性のない設定を無効にするには、値を null に設定します。
スナップショット設定:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.snapshot.relocation_enabled": null
},
"transient": {
"cluster.routing.allocation.snapshot.relocation_enabled": null
}
}ストレージスロットリング設定:
PUT _cluster/settings
{
"persistent": {
"indices.store.throttle.type": null,
"indices.store.throttle.max_bytes_per_sec": null
},
"transient": {
"indices.store.throttle.type": null,
"indices.store.throttle.max_bytes_per_sec": null
}
}インデックスレベルの設定
インデックスレベルの互換性のない設定は、値を null に設定して無効化します。test_index を使用するインデックス名に置き換えます。
設定カテゴリ | コマンド |
類似性設定 |
|
シャドウレプリカ設定 |
|
インデックスストレージ設定 |
|
ストレージスロットリング設定 |
|
類似性設定では、最初にインデックスをクローズする必要があります。クローズされたインデックスは読み書きできません。変更を加えた後、インデックスを再オープンしてください。
インデックスをクローズします。
POST test_index/_close設定を更新します。
PUT test_index/_settings
{
"index.similarity.base.*": null
}インデックスを開きます。
POST test_index/_openシャドウレプリカ設定:
PUT test_index/_settings
{
"index.shared_filesystem": null,
"index.shadow_replicas": null
}インデックスストレージ設定:
PUT test_index/_settings
{
"index.store.type": null
}ストレージスロットリング設定:
PUT test_index/_settings
{
"index.store.throttle.type": null,
"index.store.throttle.max_bytes_per_sec": null
}include_in_all が設定されたインデックスは V6.X でも引き続き使用できます。このパラメーターに変更は不要です。
インデックステンプレートレベルの設定
次の例では、test_template という名前のインデックス テンプレートにある互換性のない設定を修正する方法を示します。
現在のテンプレートを取得します。
GET _template/test_template結果には、互換性のない設定が表示されます (この例では、ストレージスロットリング設定、
_all、およびinclude_in_allです)。{ "test_template": { "order": 0, "template": "test_*", "settings": { "index": { "store": { "throttle": { "max_bytes_per_sec": "100m" } } } }, "mappings": { "test_type": { "_all": { "enabled": true }, "properties": { "test_field": { "type": "text", "include_in_all": true } } } }, "aliases": {} } }互換性のない設定を削除し、テンプレートを更新します。
PUT _template/test_template { "order": 0, "template": "test_*", "settings": { }, "mappings": { "test_type": { "properties": { "test_field": { "type": "text" } } } }, "aliases": {} }
次のステップ
すべてのチェックを完了し、互換性のない設定を修正した後、アップグレードを進めてください。「クラスターのバージョンアップグレード」をご参照ください。