This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.3. クラスターの直前の状態への復元
クラスターを直前の状態に復元するには、スナップショットを作成して、事前に etcd データのバックアップを行っている必要があります。このスナップショットを使用して、クラスターの状態を復元します。
2.3.1. クラスターの直前の状態への復元 リンクのコピーリンクがクリップボードにコピーされました!
保存された etcd スナップショットを使用して、クラスターの以前の状態に戻すことができます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてのクラスターへのアクセスがあること。 - マスターホストへの SSH アクセス。
etcd スナップショットのバックアップ。
注記クラスター内のすべてのマスターホストに同じ etcd スナップショットファイルを使用する必要があります。
手順
復元するクラスター内のそれぞれのマスターホストを準備します。
短期間でマスターホストのすべてに復元スクリプトを実行し、クラスターのメンバーがほぼ同時に起動し、クォーラム(定足数) を構成できるようにする必要がありなす。そのため、それぞれのマスターホストを別々のターミナルに分け、復元スクリプトをそれぞれに対して迅速に開始できるようにすることが推奨されます。
etcd スナップショットをマスターホストにコピーします。
この手順では、
snapshot.db
というスナップショットを、マスターホストの/home/core/
ディレクトリーにコピーしていることを前提とします。- マスターホストにアクセスします。
INITIAL_CLUSTER
変数を、<name>=<url>
形式でメンバー一覧に追加します。この変数は復元スクリプトに渡され、各メンバーに同一の変数が使用される必要があります。export INITIAL_CLUSTER="etcd-member-ip-10-0-143-125.ec2.internal=https://etcd-0.clustername.devcluster.openshift.com:2380,etcd-member-ip-10-0-35-108.ec2.internal=https://etcd-1.clustername.devcluster.openshift.com:2380,etcd-member-ip-10-0-10-16.ec2.internal=https://etcd-2.clustername.devcluster.openshift.com:2380"
[core@ip-10-0-143-125 ~]$ export INITIAL_CLUSTER="etcd-member-ip-10-0-143-125.ec2.internal=https://etcd-0.clustername.devcluster.openshift.com:2380,etcd-member-ip-10-0-35-108.ec2.internal=https://etcd-1.clustername.devcluster.openshift.com:2380,etcd-member-ip-10-0-10-16.ec2.internal=https://etcd-2.clustername.devcluster.openshift.com:2380"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - これらの手順を他のマスターホストで繰り返し実行します。 その際、各マスターホストをそれぞれのターミナルで処理します。各マスターホストで同じ etcd スナップショットファイルを使用するようにしてください。
すべてのマスターホストで復元スクリプトを実行します。
最初のマスターホストで
etcd-snapshot-restore.sh
スクリプトを開始します。スナップショットファイルのパスと、INITIAL_CLUSTER
変数で定義されるメンバーの一覧の 2 つのパラメーターを渡します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 復元が開始されたら、他のマスターホストでスクリプトを実行します。
マシン設定 (Machine Config) が適用されていることを確認します。
クラスターにアクセスできるターミナルで、
cluster-admin
ユーザーとして以下のコマンドを実行します。oc get machineconfigpool
$ oc get machineconfigpool NAME CONFIG UPDATED UPDATING master rendered-master-50e7e00374e80b767fcc922bdfbc522b True False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スナップショットが適用されると、マスターの
currentConfig
は etcd スナップショットの取られた時点の ID に一致します。マスターのcurrentConfig
名はrendered-master-<currentConfig>
形式の名前になります。すべてのマスターホストが起動しており、クラスターに参加していることを確認します。
マスターホストにアクセスし、実行中の etcd コンテナーに接続します。
[core@ip-10-0-143-125 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
[core@ip-10-0-143-125 ~] id=$(sudo crictl ps --name etcd-member | awk 'FNR==2{ print $1}') && sudo crictl exec -it $id /bin/sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、etcd に接続するために必要な変数をエクスポートします。
export ETCDCTL_API=3 ETCDCTL_CACERT=/etc/ssl/etcd/ca.crt ETCDCTL_CERT=$(find /etc/ssl/ -name *peer*crt) ETCDCTL_KEY=$(find /etc/ssl/ -name *peer*key)
sh-4.2# export ETCDCTL_API=3 ETCDCTL_CACERT=/etc/ssl/etcd/ca.crt ETCDCTL_CERT=$(find /etc/ssl/ -name *peer*crt) ETCDCTL_KEY=$(find /etc/ssl/ -name *peer*key)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd コンテナーで、
etcdctl member list
を実行し、3 つのメンバーが起動済みであることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow それぞれの新規メンバーが起動するまで最長 10 分の時間がかかる可能性があることに注意してください。