4.3. etcd 확장


etcd 호스트에 리소스를 추가하여 etcd 클러스터를 수직으로 확장하거나 etcd 호스트를 더 추가하여 수평으로 확장할 수 있습니다.

참고

투표 시스템 etcd 용도 때문에 클러스터에는 항상 홀수의 멤버가 있어야 합니다.

홀수의 etcd 호스트가 포함된 클러스터가 있으면 내결함성이 있는 것입니다. 홀수의 etcd 호스트가 있으면 쿼럼에 필요한 수는 달라지지 않지만 내결함성이 증가합니다. 예를 들어, 멤버가 3개인 클러스터의 경우 쿼럼은 2이므로 내결함성은 1입니다. 따라서 두 멤버가 정상이면 클러스터가 계속 작동합니다.

3개의 etcd 호스트가 있는 프로덕션 내 클러스터를 사용하는 것이 좋습니다.

새로운 호스트에는 새로운 Red Hat Enterprise Linux 버전 7 전용 호스트가 필요합니다. etcd 스토리지가 최대 성능을 발휘하려면 SSD 디스크 및 /var/lib/etcd에 마운트된 전용 디스크에 있어야 합니다.

전제 조건

  1. 새 etcd 호스트를 추가하기 전에 etcd 구성 및 데이터를 모두 백업하여 데이터 손실을 방지하십시오.
  2. 비정상 클러스터에 새 호스트를 추가하지 않도록 현재 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
  3. 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 소프트웨어 채널에서 호스팅됩니다.

  4. 사용되지 않은 모든 etcd 멤버가 etcd 클러스터에서 제거되었는지 확인하십시오. scaleup 플레이북을 실행하기 전에 완료해야 합니다.

    1. 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를 복사하십시오.

    2. 다음 명령에서 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
  5. 현재 etcd 노드에서 etcd 및 iptables를 업그레이드하십시오.

    # yum update etcd iptables-services
  6. etcd 호스트의 /etc/etcd 구성을 백업하십시오.
  7. 새 etcd 멤버도 OpenShift Container Platform 노드이면 원하는 수의 호스트를 클러스터에 추가하십시오.
  8. 이 프로시저의 나머지 부분에서는 호스트를 한 개 추가했다고 가정하지만, 여러 호스트를 추가하는 경우 각 호스트에서 모든 단계를 수행하십시오.

4.3.1. Ansible을 사용하여 새 etcd 호스트 추가

프로시저
  1. 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
    1 2 3
    다음 라인을 추가하십시오.
    참고

    이전 etcd 호스트 항목을 인벤토리 파일의 새 etcd 호스트 항목으로 교체합니다. 이전 etcd 호스트 를 교체하는 동안 /etc/etcd/ca/ 디렉터리 사본을 생성해야 합니다. 또는 etcd 호스트 를 확장하기 전에 etcd ca 및 certs를 재배포할 수 있습니다.

  2. OpenShift Container Platform이 설치되어 있고 Ansible 인벤토리 파일을 호스팅하는 호스트에서 플레이북 디렉터리로 이동하여 etcd scaleup 플레이북을 실행하십시오.

    $ cd /usr/share/ansible/openshift-ansible
    $ ansible-playbook  playbooks/openshift-etcd/scaleup.yml
  3. 플레이북을 실행한 다음 새 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
  4. 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
  5. flanneld 서비스를 다시 시작하십시오.

    # systemctl restart flanneld.service
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.