4.3. etcd のスケーリング
etcd クラスターは、リソースを etcd ホストに追加して垂直的に拡張することも、etcd ホストを追加して水平的に拡張することもできます。
etcd が使用する投票システムのために、クラスターには常に奇数のメンバーが含まれている必要があります。
奇数の etcd ホストを含むクラスターの場合、フォールトトレランスに対応できます。奇数の etcd ホストがあることで、クォーラム (定足数) に必要な数が変わることはありませんが、障害発生時の耐性が高まります。たとえば、クラスターが 3 メンバーで設定される場合、クォーラム (定足数) は 2 で、1 メンバーが障害耐性用になります。これにより、クラスターはメンバーの 2 つが正常である限り、機能し続けます。
3 つの etcd ホストで設定される実稼働クラスターの使用が推奨されます。
新規ホストには、新規の Red Hat Enterprise Linux version 7 専用ホストが必要です。etcd ストレージは最大のパフォーマンスを達成できるように SSD ディスクおよび /var/lib/etcd でマウントされる専用ディスクに置かれる必要があります。
前提条件
- 新規 etcd ホストを追加する前に、etcd 設定およびデータのバックアップ を行ってデータの損失を防ぎます。
新規ホストが正常でないクラスターに追加されないように、現在の etcd クラスターステータスを確認します。以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scaleupPlaybook を実行する前に、新規ホストが適切な Red Hat ソフトウェアチャンネルに登録されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd は
rhel-7-server-extras-rpmsソフトウェアチャンネルでホストされています。すべての未使用の etcd メンバーが etcd クラスターから削除されていることを確認します。これは、
scaleupPlaybook を実行する前に完了する必要があります。etcd メンバーを一覧表示します。
etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URLS member list -w table
# etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URLS member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 該当する場合は、未使用の etcd メンバー ID をコピーします。
以下のコマンドで ID を指定して、未使用のメンバーを削除します。
etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URL member remove UNUSED_ETCD_MEMBER_ID
# etcdctl --cert="/etc/etcd/peer.crt" --key="/etc/etcd/peer.key" \ --cacert="/etc/etcd/ca.crt" --endpoints=ETCD_LISTEN_CLIENT_URL member remove UNUSED_ETCD_MEMBER_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow
現在の etcd ノードで etcd および iptables をアップグレードします。
yum update etcd iptables-services
# yum update etcd iptables-servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - etcd ホストの /etc/etcd 設定をバックアップします。
- 新規 etcd メンバーが OpenShift Container Platform ノードでもある場合は、必要な数のホストをクラスターに追加 します。
- この手順の残りでは 1 つのホストを追加していることを前提としていますが、複数のホストを追加する場合は、各ホストですべての手順を実行します。
4.3.1. Ansible を使用した新規 etcd ホストの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
Ansible インベントリーファイルで、
[new_etcd]という名前の新規グループおよび新規ホストを作成します。次に、new_etcdグループを[OSEv3]グループの子として追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記インベントリーファイル内の古い
etcd hostエントリーを新しいetcd hostエントリーに置き換えます。古いetcd hostを置き換えるときに、/etc/etcd/ca/ディレクトリーのコピーを作成する必要があります。または、etcd hostsをスケールアップする前に、etcd ca と証明書を再デプロイすることもできます。OpenShift Container Platform をインストールし、Ansible インベントリーファイルをホストするホストから、Playbook ディレクトリーに移動し、etcd
scaleupPlaybook を実行します。cd /usr/share/ansible/openshift-ansible ansible-playbook playbooks/openshift-etcd/scaleup.yml
$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook playbooks/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