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.第3章 OpenShift Container Platform コンポーネントの復元
3.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、クラスターおよびそのコンポーネントの 復元 は、ノードおよびアプリケーションなどの要素を別のストレージから再作成することで実行できます。
クラスターを復元するには、まずバックアップを作成します。
以下のプロセスでは、アプリケーションおよび OpenShift Container Platform クラスターを復元するための通常の方法について説明しています。ここではカスタム要件は考慮されません。クラスターを復元するために追加のアクションを実行する必要がある可能性があります。
3.2. クラスターの復元 リンクのコピーリンクがクリップボードにコピーされました!
クラスターを復元するには、まず OpenShift Container Platform を再インストールします。
手順
- 最初に OpenShift Container Platform をインストールしたのと同じ方法で OpenShift Container Platform を再インストールします。
- OpenShift Container Platform の制御下にないサービスを変更したり、モニターエージェントなどの追加サービスのインストールなど、インストール後のカスタム手順すべてを実行します。
3.3. マスターホストのバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
重要なマスターホストファイルのバックアップを作成した後に、それらのファイルが破損しているか、または間違って削除された場合は、それらのファイルをマスターにコピーし直してファイルを復元し、それらに適切なコンテンツが含まれることを確認してから、影響を受けるサービスを再起動します。
手順
/etc/origin/master/master-config.yamlファイルを復元します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* cp /etc/origin/master/master-config.yaml /etc/origin/master/master-config.yaml.old cp /backup/$(hostname)/$(date +%Y%m%d)/origin/master/master-config.yaml /etc/origin/master/master-config.yaml master-restart api master-restart controllers
# MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* # cp /etc/origin/master/master-config.yaml /etc/origin/master/master-config.yaml.old # cp /backup/$(hostname)/$(date +%Y%m%d)/origin/master/master-config.yaml /etc/origin/master/master-config.yaml # master-restart api # master-restart controllersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告マスターサービスの再起動によりダウンタイムが生じる場合があります。ただし、マスターホストを可用性の高いロードバランサープールから削除し、復元操作を実行することができます。サービスが適切に復元された後に、マスターホストをロードバランサープールに再び追加することができます。
注記影響を受けるインスタンスを完全に再起動して、
iptables設定を復元します。パッケージがないために OpenShift Container Platform を再起動できない場合は、パッケージを再インストールします。
現在インストールされているパッケージの一覧を取得します。
rpm -qa | sort > /tmp/current_packages.txt
$ rpm -qa | sort > /tmp/current_packages.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの一覧の間に存在する差分を表示します。
diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt ansible-2.4.0.0-5.el7.noarch$ diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt > ansible-2.4.0.0-5.el7.noarchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 足りないパッケージを再インストールします。
yum reinstall -y <packages>
# yum reinstall -y <packages>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<packages>は、パッケージの一覧ごとに異なるパッケージに置き換えます。
システム証明書を
/etc/pki/ca-trust/source/anchors/ディレクトリーにコピーして復元し、update-ca-trustを実行します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* sudo cp ${MYBACKUPDIR}/external_certificates/my_company.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust$ MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* $ sudo cp ${MYBACKUPDIR}/external_certificates/my_company.crt /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trustCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ファイルをコピーし直す時に、ユーザー ID およびグループ ID だけでなく、
SELinuxコンテキストも復元されていることを常に確認してください。
3.4. ノードホストバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
重要なノードホストファイルのバックアップを作成した後に、それらのファイルが破損しているか、または間違って削除された場合、これらのファイルをコピーし直してファイルを復元し、適切なコンテンツが含まれることを確認してから、影響を受けるサービスを再起動します。
手順
/etc/origin/node/node-config.yamlファイルを復元します。MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) cp /etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml.old cp /backup/$(hostname)/$(date +%Y%m%d)/etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml systemctl restart atomic-openshift-node
# MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) # cp /etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml.old # cp /backup/$(hostname)/$(date +%Y%m%d)/etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml # systemctl restart atomic-openshift-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
サービスの再起動によりダウンタイムが生じる場合があります。このプロセスを容易にするためのヒントについては、「ノードの保守」を参照してください。
影響を受けるインスタンスを完全に再起動して、iptables 設定を復元します。
パッケージがないために OpenShift Container Platform を再起動できない場合は、パッケージを再インストールします。
現在インストールされているパッケージの一覧を取得します。
rpm -qa | sort > /tmp/current_packages.txt
$ rpm -qa | sort > /tmp/current_packages.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの一覧の間に存在する差分を表示します。
diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt ansible-2.4.0.0-5.el7.noarch$ diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt > ansible-2.4.0.0-5.el7.noarchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 足りないパッケージを再インストールします。
yum reinstall -y <packages>
# yum reinstall -y <packages>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<packages>は、パッケージの一覧ごとに異なるパッケージに置き換えます。
システム証明書を
/etc/pki/ca-trust/source/anchors/ディレクトリーにコピーして復元し、update-ca-trustを実行します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* sudo cp ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/my_company.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust$ MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* $ sudo cp ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/my_company.crt /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trustCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ファイルをコピーし直す時に、ユーザー ID およびグループ ID だけでなく、
SELinuxコンテキストも復元されていることを常に確認してください。
3.5. etcd の復元 リンクのコピーリンクがクリップボードにコピーされました!
etcd 設定ファイルの復元手順では、適切なファイルを置き換えてからサービスを再起動します。
etcd ホストが破損し、/etc/etcd/etcd.conf ファイルが失われる場合は、以下を使用してこれを復元します。
ssh master-0 cp /backup/yesterday/master-0-files/etcd.conf /etc/etcd/etcd.conf restorecon -Rv /etc/etcd/etcd.conf systemctl restart etcd.service
$ ssh master-0
# cp /backup/yesterday/master-0-files/etcd.conf /etc/etcd/etcd.conf
# restorecon -Rv /etc/etcd/etcd.conf
# systemctl restart etcd.service
この例では、バックアップファイルは /backup/yesterday/master-0-files/etcd.conf パスに保存されます。ここでは外部 NFS 共有、S3 バケットまたは他のストレージソリューションとして使用できます。
3.5.1. etcd v2 および v3 データの復元 リンクのコピーリンクがクリップボードにコピーされました!
以下のプロセスでは正常なデータファイルを復元し、etcd クラスターを単一ノードとして起動してから、etcd クラスターが必要な場合に残りのノードを追加します。
手順
すべての etcd サービスを停止します。
systemctl stop etcd.service
# systemctl stop etcd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 適切なバックアップが復元されていることを確認するには、etcd ディレクトリーを削除します。
ディレクトリーを削除する前に現在の etcd データをバックアップするには、以下のコマンドを実行します。
mv /var/lib/etcd /var/lib/etcd.old mkdir /var/lib/etcd chown -R etcd.etcd /var/lib/etcd/ restorecon -Rv /var/lib/etcd/
# mv /var/lib/etcd /var/lib/etcd.old # mkdir /var/lib/etcd # chown -R etcd.etcd /var/lib/etcd/ # restorecon -Rv /var/lib/etcd/Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、ディレクトリーおよび etcd、データを削除するには、以下のコマンドを実行します。
rm -Rf /var/lib/etcd/*
# rm -Rf /var/lib/etcd/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記オールインワンクラスターの場合、etcd データディレクトリーは
/var/lib/origin/openshift.local.etcdディレクトリーに置かれます。
正常なバックアップデータファイルをそれぞれの etcd ノードに復元します。この手順は、etcd と同じ場所に配置されているマスターホストを含むすべての etcd ホストで実行します。
cp -R /backup/etcd-xxx/* /var/lib/etcd/ mv /var/lib/etcd/db /var/lib/etcd/member/snap/db chcon -R --reference /backup/etcd-xxx/* /var/lib/etcd/ chown -R etcd:etcd /var/lib/etcd/R
# cp -R /backup/etcd-xxx/* /var/lib/etcd/ # mv /var/lib/etcd/db /var/lib/etcd/member/snap/db # chcon -R --reference /backup/etcd-xxx/* /var/lib/etcd/ # chown -R etcd:etcd /var/lib/etcd/RCopy to Clipboard Copied! Toggle word wrap Toggle overflow 各ホストで etcd サービスを実行し、新規クラスターを強制的に実行します。
これにより etcd サービスのカスタムファイルが作成されます。これにより、
--force-new-clusterオプションを追加して実行コマンドが上書きされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージの有無を確認します。
journalctl -fu etcd.service
$ journalctl -fu etcd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 正常性のステータスを確認します。
etcdctl2 cluster-health
# etcdctl2 cluster-health member 5ee217d17301 is healthy: got healthy result from https://192.168.55.8:2379 cluster is healthyCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターモードで etcd サービスを再起動します。
rm -f /etc/systemd/system/etcd.service.d/temp.conf systemctl daemon-reload master-restart etcd
# rm -f /etc/systemd/system/etcd.service.d/temp.conf # systemctl daemon-reload # master-restart etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 正常性のステータスとメンバーの一覧を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 最初のインスタンスの実行後に、残りの etcd サーバーを復元できます。
3.5.1.1. peerURLS パラメーターの修正 リンクのコピーリンクがクリップボードにコピーされました!
データの復元および新規クラスターの作成後に、peerURLs パラメーターは、 etcd がピア通信をリッスンする IP の代わりに localhost を示します。
etcdctl2 member list
# etcdctl2 member list
5ee217d17301: name=master-0.example.com peerURLs=http://*localhost*:2380 clientURLs=https://192.168.55.8:2379 isLeader=true
3.5.1.1.1. 手順 リンクのコピーリンクがクリップボードにコピーされました!
etcdctl member listを使用してメンバー ID を取得します。`etcdctl member list`
`etcdctl member list`Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd がピア通信をリッスンする IP を取得します。
ss -l4n | grep 2380
$ ss -l4n | grep 2380Copy to Clipboard Copied! Toggle word wrap Toggle overflow メンバー情報をこの IP で更新します。
etcdctl2 member update 5ee217d17301 https://192.168.55.8:2380
# etcdctl2 member update 5ee217d17301 https://192.168.55.8:2380 Updated member with ID 5ee217d17301 in clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 検証するには、IP がメンバーの一覧にあることを確認します。
etcdctl2 member list
$ etcdctl2 member list 5ee217d17301: name=master-0.example.com peerURLs=https://*192.168.55.8*:2380 clientURLs=https://192.168.55.8:2379 isLeader=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. etcd v3 スナップショットの復元 リンクのコピーリンクがクリップボードにコピーされました!
v3 データの復元手順は v2 データの復元プロセスと同様です。
スナップショットの整合性については、復元時にオプションで検証できます。スナップショットが etcdctl snapshot save で取得される場合、これには etcdctl snapshot restore でチェックされる整合性ハッシュが含まれます。スナップショットがデータディレクトリーからコピーされる場合には整合性ハッシュはなく、--skip-hash-check を使用して実行されます。
v3 データのみを復元する手順は単一 etcd ホストで実行される必要があります。その後に残りのノードをクラスターに追加することができます。
手順
すべての etcd サービスを停止します。
systemctl stop etcd.service
# systemctl stop etcd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 古いデータについては、
etcdctlが復元手順が実行されるノードでその再作成を実行するため、それらすべてをクリアします。rm -Rf /var/lib/etcd
# rm -Rf /var/lib/etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow snapshot restoreコマンドを実行し、/etc/etcd/etcd.confファイルの値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow パーミッションおよび
selinuxコンテキストを復元ファイルに復元します。chown -R etcd.etcd /var/lib/etcd/ restorecon -Rv /var/lib/etcd
# chown -R etcd.etcd /var/lib/etcd/ # restorecon -Rv /var/lib/etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcd サービスを起動します。
systemctl start etcd
# systemctl start etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージの有無を確認します。
master-logs etcd etcd
# master-logs etcd etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. etcd ノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
etcd の復元後、他の etcd ノードをクラスターに追加できます。Ansible Playbook を使用するか、または手動の手順を実行して etcd ホストを追加できます。
3.6.1. Ansible を使用した新規 etcd ホストの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
Ansible インベントリーファイルで、
[new_etcd]という名前の新規グループを作成し、新規ホストを追加します。次に、new_etcdグループを[OSEv3]グループの子として追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform がインストールされており、Ansible インベントリーファイルをホストするホストから、etcd
scaleupPlaybook を実行します。ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-etcd/scaleup.yml
$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-etcd/scaleup.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook が実行された後に、新規 etcd ホストを
[new_etcd]グループから[etcd]グループに移行し、現在のステータスを反映するようにインベントリーファイルを変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Flannel を使用する場合には、OpenShift Container Platform のホストごとに、
/etc/sysconfig/flanneldにあるflanneldサービス設定を変更し、新しい etcd ホストを追加します。FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379Copy to Clipboard Copied! Toggle word wrap Toggle overflow flanneldサービスを再起動します。systemctl restart flanneld.service
# systemctl restart flanneld.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2. 新規 etcd ホストの手動による追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
現在の etcd クラスターの変更
etcd 証明書を作成するには、値を環境の値に置き換えて openssl コマンドを実行します。
環境変数を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記etcd_v3_ca_*として使用されるカスタムのopenssl拡張には、subjectAltNameとしての $SAN 環境変数が含まれます。詳細は、/etc/etcd/ca/openssl.cnfを参照してください。設定および証明書を保存するディレクトリーを作成します。
mkdir -p ${PREFIX}# mkdir -p ${PREFIX}Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバー証明書要求を作成し、これに署名します (server.csr および server.crt)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ピア証明書要求を作成し、これに署名します (peer.csr および peer.crt)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 後で変更できるように、現在の etcd 設定および
ca.crtファイルをサンプルとして現在のノードからコピーします。cp /etc/etcd/etcd.conf ${PREFIX} cp /etc/etcd/ca.crt ${PREFIX}# cp /etc/etcd/etcd.conf ${PREFIX} # cp /etc/etcd/ca.crt ${PREFIX}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 存続する etcd ホストから、新規ホストをクラスターに追加します。etcd メンバーをクラスターに追加するには、まず最初のメンバーの
peerURLs値のデフォルトの localhost ピアを調整する必要があります。member listコマンドを使用して最初のメンバーのメンバー ID を取得します。etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member list# etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \1 member listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
--peersパラメーター値でアクティブな etcd メンバーのみの URL を指定するようにしてください。
etcd がクラスターピアについてリッスンする IP アドレスを取得します。
ss -l4n | grep 2380
$ ss -l4n | grep 2380Copy to Clipboard Copied! Toggle word wrap Toggle overflow 直前の手順で取得されたメンバー ID および IP アドレスを渡して、
etcdctl member updateコマンドを使用してpeerURLsの値を更新します。etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member update 511b7fb6cc0001 https://172.18.1.18:2380# etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member update 511b7fb6cc0001 https://172.18.1.18:2380Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
member listコマンドを再実行し、ピア URL に localhost が含まれなくなるようにします。
新規ホストを etcd クラスターに追加します。新規ホストはまだ設定されていないため、新規ホストを設定するまでステータスが
unstartedのままであることに注意してください。警告各メンバーを追加し、1 回に 1 つずつメンバーをオンライン状態にします。各メンバーをクラスターに追加する際に、現在のピアの
peerURL一覧を調整する必要があります。peerURL一覧はメンバーが追加されるたびに拡張します。etcdctl member addコマンドは、以下に説明されているように、メンバーを追加する際に etcd.conf ファイルで設定する必要のある値を出力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この行で、
10.3.9.222は etcd メンバーのラベルです。ホスト名、IP アドレスまたは単純な名前を指定できます。
サンプル
${PREFIX}/etcd.confファイルを更新します。以下の値を直前の手順で生成された値に置き換えます。
- ETCD_NAME
- ETCD_INITIAL_CLUSTER
- ETCD_INITIAL_CLUSTER_STATE
以下の変数は、直前の手順で出力された新規ホストの IP に変更します。
${NEW_ETCD_IP}は、値として使用できます。ETCD_LISTEN_PEER_URLS ETCD_LISTEN_CLIENT_URLS ETCD_INITIAL_ADVERTISE_PEER_URLS ETCD_ADVERTISE_CLIENT_URLS
ETCD_LISTEN_PEER_URLS ETCD_LISTEN_CLIENT_URLS ETCD_INITIAL_ADVERTISE_PEER_URLS ETCD_ADVERTISE_CLIENT_URLSCopy to Clipboard Copied! Toggle word wrap Toggle overflow - メンバーシステムを etcd ノードとして使用していた場合には、/etc/etcd/etcd.conf ファイルの現在の値を上書きする必要があります。
ファイルで構文エラーや欠落している IP アドレスがないかを確認します。エラーや欠落がある場合には、etced サービスが失敗してしまう可能性があります。
vi ${PREFIX}/etcd.conf# vi ${PREFIX}/etcd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
インストールファイルをホストするノードでは、/etc/ansible/hosts インベントリーファイルの
[etcd]ホストグループを更新します。古い etcd ホストを削除し、新規ホストを追加します。 証明書、サンプル設定ファイル、および
caを含むtgzファイルを作成し、これを新規ホストにコピーします。tar -czvf /etc/etcd/generated_certs/${CN}.tgz -C ${PREFIX} . scp /etc/etcd/generated_certs/${CN}.tgz ${CN}:/tmp/# tar -czvf /etc/etcd/generated_certs/${CN}.tgz -C ${PREFIX} . # scp /etc/etcd/generated_certs/${CN}.tgz ${CN}:/tmp/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規 etcd ホストの変更
iptables-servicesをインストールして etcd の必要なポートを開くために iptables ユーティリティーを指定します。yum install -y iptables-services
# yum install -y iptables-servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcd の通信を許可する
OS_FIREWALL_ALLOWファイアウォールルールを作成します。- クライアントのポート 2379/tcp
ピア通信のポート 2380/tcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この例では、新規チェーン
OS_FIREWALL_ALLOWが作成されます。これは、OpenShift Container Platform インストーラーがファイアウォールルールに使用する標準の名前になります。警告環境が IaaS 環境でホストされている場合には、インスタンスがこれらのポートに入ってくるトラフィックを許可できるように、セキュリティーグループを変更します。
etcd をインストールします。
yum install -y etcd
# yum install -y etcdCopy to Clipboard Copied! Toggle word wrap Toggle overflow バージョン
etcd-2.3.7-4.el7.x86_64以降がインストールされていることを確認します。etcd サービスが実行されていないことを確認します。
systemctl disable etcd --now
# systemctl disable etcd --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow etcd 設定およびデータを削除します。
rm -Rf /etc/etcd/* rm -Rf /var/lib/etcd/*
# rm -Rf /etc/etcd/* # rm -Rf /var/lib/etcd/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書および設定ファイルを展開します。
tar xzvf /tmp/etcd0.example.com.tgz -C /etc/etcd/
# tar xzvf /tmp/etcd0.example.com.tgz -C /etc/etcd/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイル所有者のパーミッションを変更します。
chown -R etcd/etcd /etc/etcd/* chown -R etcd/etcd /var/lib/etcd/
# chown -R etcd/etcd /etc/etcd/* # chown -R etcd/etcd /var/lib/etcd/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ホストで etcd を起動します。
systemctl enable etcd --now
# systemctl enable etcd --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow ホストがクラスターの一部であることと現在のクラスターの正常性を確認します。
v2 etcd api を使用する場合は、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow v3 etcd api を使用する場合は、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
各 OpenShift Container Platform マスターの変更
すべてのマスターの
/etc/origin/master/master-config.yamlファイルのetcClientInfoセクションでマスター設定を変更します。新規 etcd ホストを、データを保存するために OpenShift Container Platform が使用する etcd サーバーの一覧に追加し、失敗したすべての etcd ホストを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マスター API サービスを再起動します。
全マスターのインストールに対しては、以下を実行します。
systemctl restart atomic-openshift-master-api
# systemctl restart atomic-openshift-master-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、単一マスタークラスターのインストールでは以下を実行してください。
#systemctl restart atomic-openshift-master
#systemctl restart atomic-openshift-masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告etcd ノードの数は奇数でなければなりません。そのため、2 つ以上のホストを追加する必要があります。
Flannel を使用する場合、新規 etcd ホストを組み込むために、すべての OpenShift Container Platform ホストの
/etc/sysconfig/flanneldにあるflanneldサービス設定を変更します。FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379Copy to Clipboard Copied! Toggle word wrap Toggle overflow flanneldサービスを再起動します。systemctl restart flanneld.service
# systemctl restart flanneld.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. OpenShift Container Platform サービスの再オンライン化 リンクのコピーリンクがクリップボードにコピーされました!
変更を終了した後に、OpenShift Container Platform をオンラインに戻します。
手順
それぞれの OpenShift Container Platform マスターで、バックアップからマスターおよびノード設定を復元し、すべての関連するサービスを有効にしてから再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各 OpenShift Container Platform ノードで、必要に応じてノードの設定マップを更新し、atomic-openshift-node サービスを有効化して再起動します。
cp /etc/origin/node/node-config.yaml.<timestamp> /etc/origin/node/node-config.yaml systemctl enable atomic-openshift-node systemctl start atomic-openshift-node
# cp /etc/origin/node/node-config.yaml.<timestamp> /etc/origin/node/node-config.yaml # systemctl enable atomic-openshift-node # systemctl start atomic-openshift-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8. プロジェクトの復元 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを復元するには、oc create -f pods.json を実行して新規プロジェクトを作成してから、エクスポートされたファイルを復元します。ただし、プロジェクトをゼロから復元するには、一部のプロジェクトが他のプロジェクトに依存していることから特定の順序を指定する必要があります。たとえば、pods を作成する前に configmaps を作成する必要があります。
手順
プロジェクトが単一ファイルとしてエクスポートされている場合は、以下のコマンドを実行してこのファイルをインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告Pod およびデフォルトサービスアカウントなどの一部のリソースは作成できない場合があります。
project_export.shスクリプトを使用してプロジェクトをエクスポートした場合、ファイルはprojectnameディレクトリーにあります。それらは、project_import.shスクリプトを再度実行してインポートできます。このスクリプトは適切な順序でoc createプロセスを実行します。mkdir ~/git cd ~/git git clone https://github.com/openshift/openshift-ansible-contrib.git cd openshift-ansible-contrib/reference-architecture/day2ops/scripts ./project_import.sh <projectname_path>
$ mkdir ~/git $ cd ~/git $ git clone https://github.com/openshift/openshift-ansible-contrib.git $ cd openshift-ansible-contrib/reference-architecture/day2ops/scripts $ ./project_import.sh <projectname_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記serviceaccountsおよびシークレットなどの一部のオブジェクトがプロジェクト作成時に自動的に作成されるためにAlreadyExistsエラーが表示される場合があります。buildconfigsを使用するかどうかを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow buildconfigsを使用する場合、ビルドは自動的にトリガーされず、アプリケーションは実行されません。buildconfigsを使用する場合、ビルドをトリガーするにはoc start-buildコマンドを実行します。for bc in $(oc get bc -o jsonpath="{.items[*].metadata.name}") do oc start-build ${bc} done$ for bc in $(oc get bc -o jsonpath="{.items[*].metadata.name}") do oc start-build ${bc} doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod はビルドの完了後にデプロイされます。
プロジェクトが復元されたことを確認するには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記サービスおよび Pod IP アドレスは作成時に動的に割り当てられるので異なります。
3.9. アプリケーションデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
rsync がコンテナーイメージ内にインストールされていることを前提とすると、アプリケーションデータは oc rsync コマンドを使用して復元できます。Red Hat rhel7 ベースイメージには rsync が含まれるので、rhel7 をベースとするすべてのイメージにもこれが含まれます。「CLI 操作のトラブルシューティングおよびデバッグ - rsync」を参照してください。
これはアプリケーションデータの 汎用的な 復元についての説明であり、データベースシステムの特殊なエクスポート/インポート手順などのアプリケーション固有のバックアップ手順については考慮に入れられていません。
使用する永続ボリュームのタイプ (Cinder、NFS、Gluster など) によっては、他の復元手段を使用できる場合もあります。
手順
Jenkins デプロイメントのアプリケーションデータの復元例
バックアップを確認します。
ls -la /tmp/jenkins-backup/
$ ls -la /tmp/jenkins-backup/ total 8 drwxrwxr-x. 3 user user 20 Sep 6 11:14 . drwxrwxrwt. 17 root root 4096 Sep 6 11:16 .. drwxrwsrwx. 12 user user 4096 Sep 6 11:14 jenkinsCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsyncツールを使用してデータを実行中の Pod にコピーします。oc rsync /tmp/jenkins-backup/jenkins jenkins-1-37nux:/var/lib
$ oc rsync /tmp/jenkins-backup/jenkins jenkins-1-37nux:/var/libCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記アプリケーションによっては、アプリケーションを再起動する必要があります。
オプションとして、新規データを使ってアプリケーションを再起動します。
oc delete pod jenkins-1-37nux
$ oc delete pod jenkins-1-37nuxCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、デプロイメントを 0 にスケールダウンしてから再びスケールアップします。
oc scale --replicas=0 dc/jenkins oc scale --replicas=1 dc/jenkins
$ oc scale --replicas=0 dc/jenkins $ oc scale --replicas=1 dc/jenkinsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10. Persistent Volume Claim (永続ボリューム要求、PVC) の復元 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、データを復元するための 2 つの方法について説明します。最初の方法ではファイルを削除してから、ファイルを予想される場所に戻します。2 つ目の例では、PVC を移行する方法を示します。この移行は、ストレージを移動する必要がある場合や、バックアップストレージがなくなるなどの障害発生時の状況で実行されます。
データをアプリケーションに復元する手順について、特定のアプリケーションについての復元手順を確認してください。
3.10.1. ファイルの既存 PVC への復元 リンクのコピーリンクがクリップボードにコピーされました!
手順
ファイルを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC にあったファイルの rsync バックアップが含まれるサーバーのファイルを置き換えます。
oc rsync uploaded demo-2-fxx6d:/opt/app-root/src/
$ oc rsync uploaded demo-2-fxx6d:/opt/app-root/src/Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rshを使用してファイルが Pod に戻されていることを確認し、Pod に接続してディレクトリーのコンテンツを表示します。oc rsh demo-2-fxx6d
$ oc rsh demo-2-fxx6d sh-4.2$ *ls /opt/app-root/src/uploaded/* lost+found ocp_sop.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.2. データの新規 PVC への復元 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、新規 pvc が作成されていることを前提としています。
手順
現在定義されている
claim-nameを上書きします。oc volume dc/demo --add --name=persistent-volume \ --type=persistentVolumeClaim --claim-name=filestore \ --mount-path=/opt/app-root/src/uploaded --overwrite
$ oc volume dc/demo --add --name=persistent-volume \ --type=persistentVolumeClaim --claim-name=filestore \ --mount-path=/opt/app-root/src/uploaded --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が新規 PVC を使用していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメント設定では新規の
pvcを使用しているため、oc rsyncを実行してファイルを新規のpvcに配置します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rshを使用してファイルが Pod に戻されていることを確認し、Pod に接続してディレクトリーのコンテンツを表示します。oc rsh demo-3-2b8gs
$ oc rsh demo-3-2b8gs sh-4.2$ ls /opt/app-root/src/uploaded/ lost+found ocp_sop.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow