DBAtlas · データベース運用アトラス

ローリング再起動 / ローリングアップグレード (ノードごと、不要なシャード移動なし)

Elasticsearchクラスタ / ノード

コマンド

# 1) Disable replica allocation (only primaries are allocated):
PUT _cluster/settings
{
  "persistent": { "cluster.routing.allocation.enable": "primaries" }
}
# 2) Optional: stop indexing and flush to speed up recovery:
POST _flush
# 3) Stop one node, do the maintenance, start it; verify it joined:
GET _cat/nodes?v&h=name,version,node.role,master,heap.percent
# 4) Re-enable allocation:
PUT _cluster/settings
{
  "persistent": { "cluster.routing.allocation.enable": null }
}
# 5) Wait for green before moving to the next node:
GET _cluster/health?wait_for_status=green&timeout=10m

概要

ノードが停止している間にレプリカが他のノードへ再コピーされるのを防ぎながら、ノードを 1 つずつ再起動またはアップグレードする順序を示す。ノードが復帰すると、シャードはローカルコピーから素早くリカバリする。

使用する場面

OS パッチ、JVM / ヒープの変更、elasticsearch.yml の変更、マイナー / メジャーバージョンのアップグレードのためにノードを順に再起動する場合。

注意

green を待たずに次のノードへ進まない。2 つのノードが同時に停止すると、あるシャードのすべてのコピーが失われる可能性がある。master-eligible ノードは最後に 1 つずつ再起動する。過半数が失われると、クラスタは master を選出できない。allocation.enable を再度有効にし忘れると、レプリカは未割り当てのままとなる。アップグレード時は data ノードを先に (frozen/cold を先に、hot を最後に)、その後 master をアップグレードする。

DBAtlas で開く →

関連項目