37.2.2. 새 etcd 호스트 수동 추가
마스터 노드에서 etcd를 정적 포드로 실행하지 않으면 다른 etcd 호스트를 추가해야 할 수도 있습니다.
프로시저
현재 etcd 클러스터 수정
etcd 인증서를 생성하려면 값을 사용자 환경의 값으로 교체하여 openssl
명령을 실행하십시오.
다음과 같이 일부 환경 변수를 생성하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고etcd_v3_ca_*
로 사용되는 사용자 정의openssl
확장에는 $SAN 환경 변수가subjectAltName
으로 포함됩니다. 자세한 내용은/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 list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
--peers
매개변수 값에 활성 etcd 멤버의 URL만 지정하십시오.
etcd가 클러스터 피어를 청취하는 IP 주소를 확보하십시오.
ss -l4n | grep 2380
$ ss -l4n | grep 2380
Copy 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:2380
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
member list
명령을 다시 실행하고 피어 URL에 더 이상 localhost가 포함되지 않도록 하십시오.
새 호스트를 etcd 클러스터에 추가하십시오. 새 호스트는 아직 구성되지 않았으므로 새 호스트를 구성할 때까지 상태는
unstarted
로 남아 있습니다.주의각 멤버를 추가하고 한 번에 하나씩 온라인 상태로 만들어야 합니다. 각 멤버를 클러스터에 추가할 때 현재 피어의
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_URLS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전에 멤버 시스템을 etcd 노드로 사용한 경우 /etc/etcd/etcd.conf 파일에서 현재 값을 덮어써야 합니다.
구문 오류 또는 누락된 IP 주소가 있는지 파일을 확인하십시오. 그렇지 않으면 etcd 서비스가 실패할 수 있습니다.
vi ${PREFIX}/etcd.conf
# vi ${PREFIX}/etcd.conf
Copy 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-services
Copy 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 etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 버전
etcd-2.3.7-4.el7.x86_64
이상이 설치되어 있는지 확인하십시오.etcd 포드 정의를 제거하여 etcd 서비스가 실행 중이지 않은지 확인하십시오.
mkdir -p /etc/origin/node/pods-stopped mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
# mkdir -p /etc/origin/node/pods-stopped # mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
Copy 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 새 호스트에서 etcd를 시작하십시오.
systemctl enable etcd --now
# systemctl enable etcd --now
Copy 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
섹션에서 마스터 구성을 수정하십시오. OpenShift Container Platform에서 데이터를 저장하는 데 사용하는 etcd 서버 목록에 새 etcd 호스트를 추가하고 실패한 etcd 호스트를 제거하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마스터 API 서비스를 다시 시작하십시오.
모든 마스터에서 다음을 수행하십시오.
master-restart api master-restart controllers
# master-restart api # master-restart controllers
Copy 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:2379
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flanneld
서비스를 다시 시작하십시오.systemctl restart flanneld.service
# systemctl restart flanneld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow