4.3. etcd 확장
etcd 호스트에 리소스를 추가하여 etcd 클러스터를 수직으로 확장하거나 etcd 호스트를 더 추가하여 수평으로 확장할 수 있습니다.
투표 시스템 etcd 용도 때문에 클러스터에는 항상 홀수의 멤버가 있어야 합니다.
홀수의 etcd 호스트가 포함된 클러스터가 있으면 내결함성이 있는 것입니다. 홀수의 etcd 호스트가 있으면 쿼럼에 필요한 수는 달라지지 않지만 내결함성이 증가합니다. 예를 들어, 멤버가 3개인 클러스터의 경우 쿼럼은 2이므로 내결함성은 1입니다. 따라서 두 멤버가 정상이면 클러스터가 계속 작동합니다.
3개의 etcd 호스트가 있는 프로덕션 내 클러스터를 사용하는 것이 좋습니다.
새로운 호스트에는 새로운 Red Hat Enterprise Linux 버전 7 전용 호스트가 필요합니다. etcd 스토리지가 최대 성능을 발휘하려면 SSD 디스크 및 /var/lib/etcd
에 마운트된 전용 디스크에 있어야 합니다.
전제 조건
- 새 etcd 호스트를 추가하기 전에 etcd 구성 및 데이터를 모두 백업하여 데이터 손실을 방지하십시오.
비정상 클러스터에 새 호스트를 추가하지 않도록 현재 etcd 클러스터 상태를 확인하십시오. 다음 명령을 실행하십시오.
# ETCDCTL_API=3 etcdctl --cert="/etc/etcd/peer.crt" \ --key=/etc/etcd/peer.key \ --cacert="/etc/etcd/ca.crt" \ --endpoints="https://*master-0.example.com*:2379,\ https://*master-1.example.com*:2379,\ https://*master-2.example.com*:2379" endpoint health https://master-0.example.com:2379 is healthy: successfully committed proposal: took = 5.011358ms https://master-1.example.com:2379 is healthy: successfully committed proposal: took = 1.305173ms https://master-2.example.com:2379 is healthy: successfully committed proposal: took = 1.388772ms
scaleup
플레이북을 실행하기 전에 새 호스트가 적절한 Red Hat 소프트웨어 채널에 등록되어 있는지 확인하십시오.# subscription-manager register \ --username=*<username>* --password=*<password>* # subscription-manager attach --pool=*<poolid>* # subscription-manager repos --disable="*" # subscription-manager repos \ --enable=rhel-7-server-rpms \ --enable=rhel-7-server-extras-rpms
etcd는
rhel-7-server-extras-rpms
소프트웨어 채널에서 호스팅됩니다.사용되지 않은 모든 etcd 멤버가 etcd 클러스터에서 제거되었는지 확인하십시오.
scaleup
플레이북을 실행하기 전에 완료해야 합니다.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
해당되는 경우, 사용되지 않은 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
현재 etcd 노드에서 etcd 및 iptables를 업그레이드하십시오.
# yum update etcd iptables-services
- etcd 호스트의 /etc/etcd 구성을 백업하십시오.
- 새 etcd 멤버도 OpenShift Container Platform 노드이면 원하는 수의 호스트를 클러스터에 추가하십시오.
- 이 프로시저의 나머지 부분에서는 호스트를 한 개 추가했다고 가정하지만, 여러 호스트를 추가하는 경우 각 호스트에서 모든 단계를 수행하십시오.
4.3.1. Ansible을 사용하여 새 etcd 호스트 추가
프로시저
Ansible 인벤토리 파일에서
[new_etcd]
라는 새 그룹을 생성하고 새 호스트를 추가하십시오. 그런 다음new_etcd
그룹을[OSEv3]
그룹의 하위 그룹으로 추가하십시오.[OSEv3:children] masters nodes etcd new_etcd 1 ... [OUTPUT ABBREVIATED] ... [etcd] master-0.example.com master-1.example.com master-2.example.com [new_etcd] 2 etcd0.example.com 3
참고이전
etcd 호스트
항목을 인벤토리 파일의 새etcd 호스트
항목으로 교체합니다. 이전etcd 호스트
를 교체하는 동안/etc/etcd/ca/
디렉터리 사본을 생성해야 합니다. 또는 etcd호스트
를 확장하기 전에 etcd ca 및 certs를 재배포할 수 있습니다.OpenShift Container Platform이 설치되어 있고 Ansible 인벤토리 파일을 호스팅하는 호스트에서 플레이북 디렉터리로 이동하여 etcd
scaleup
플레이북을 실행하십시오.$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook playbooks/openshift-etcd/scaleup.yml
플레이북을 실행한 다음 새 etcd 호스트를
[new_etcd]
그룹에서[etcd]
그룹으로 이동하여 현재 상태에 맞게 인벤토리 파일을 수정하십시오.[OSEv3:children] masters nodes etcd new_etcd ... [OUTPUT ABBREVIATED] ... [etcd] master-0.example.com master-1.example.com master-2.example.com etcd0.example.com
Flannel을 사용하는 경우 새 etcd 호스트를 포함하도록
/etc/sysconfig/flanneld
에 있는 모든 OpenShift Container Platform 호스트에서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
flanneld
서비스를 다시 시작하십시오.# systemctl restart flanneld.service