Apache > ZooKeeper
 

ZooKeeper スナップショットおよびリストアガイド

ZooKeeper は機械の故障に対処できるように設計されています。ZooKeeper クラスタは、マシンの再起動などの一時的な障害から自動的に回復できます。ハードウェアの障害やディスクの破損などの原因による、N メンバーのクラスタに対して (N-1)/2 までの永続的な障害にも耐えることができます。メンバーが永続的に障害を起こすと、クラスタへのアクセスは失われます。クラスタが (N-1)/2 を超えるメンバーを永続的に失うと、クラスタは重大な障害を起こし、クォーラムを失います。クォーラムが失われると、クラスタはコンセンサスに達することができず、更新の受け入れを続けることができません。

このような重大な障害から回復するために、ZooKeeper はスナップショットとリストア機能を提供し、スナップショットからクラスタをリストアします。

  1. スナップショットとリストアは、管理サーバの API を介して接続されたサーバ上で動作します。
  2. スナップショットとリストアは、サーバが過負荷にならないようにレート制限されています。
  3. スナップショットとリストアでは、ルートパスでの認証と承認が必要です。サポートされている認証スキーマは、ダイジェスト、x509、IP です。

スナップショット

クラスタを回復するには、ZooKeeper クラスタからのスナップショットが必要です。ユーザは、最新の zxid を持つライブサーバから定期的にスナップショットを作成し、ローカルまたは外部ストレージ/ファイルシステム(例: S3)にデータをストリームできます。

# The snapshot command takes snapshot from the server it connects to and rate limited to once every 5 mins by default
curl -H 'Authorization: digest root:root_passwd' http://hostname:adminPort/commands/snapshot?streaming=true --output snapshotFileName

リストア

クラスタをリストアするには、入力ストリームとして単一のスナップショットが必要です。リストアは、クォーラムが失われたクラスタの回復や、シードデータを使用したまったく新しいクラスタの構築に使用できます。

すべてのメンバーは、同じスナップショットを使用してリストアする必要があります。推奨される手順を次に示します。

# The restore command takes a snapshot as input stream and restore the db of the server it connects. It is rate limited to once every 5 mins by default
curl -H 'Content-Type:application/octet-stream' -H 'Authorization: digest root:root_passwd' -POST http://hostname:adminPort/commands/restore --data-binary "@snapshotFileName"