1.2. etcd 성능 이해


복제된 노드의 클러스터로 작동하는 일관된 분산 키-값 저장소로서 etcd는 하나의 노드를 리더로 선택하고 다른 노드를 리더로 선택하여 Raft 알고리즘을 따릅니다. 리더는 시스템 현재 상태의 현재 상태를 유지하고 맹인을 최신 상태로 유지합니다.

리더 노드는 로그 복제를 담당합니다. 클라이언트에서 들어오는 쓰기 트랜잭션을 처리하고 팔로우에게 브로드캐스트한 Raft 로그 항목을 작성합니다.

kube-apiserver 와 같은 etcd 클라이언트가 쿼럼이 필요한 작업을 요청하는 etcd 멤버(예: etcd 멤버가 follower인 경우)에 연결하면 트랜잭션이 리더로 이동해야 함을 나타내는 메시지를 반환합니다.

etcd 클라이언트가 값 작성과 같이 쿼럼이 필요한 리더의 작업을 요청하면 리더는 로컬 Raft 로그를 쓰는 동안 클라이언트 연결을 열린 상태로 유지 관리하고, 팔로우에게 로그를 브로드캐스트하고, 대다수가 실패 없이 로그를 커밋하도록 승인할 때까지 기다립니다. 리더는 승인을 etcd 클라이언트에 전송하고 세션을 종료합니다. 실패 알림은 미용사로부터 수신되고 합의가 충족되지 않으면 리더는 클라이언트에게 오류 메시지를 반환하고 세션을 종료합니다.

etcd의 OpenShift Container Platform 타이머 조건

OpenShift Container Platform은 각 플랫폼에 최적화된 etcd 타이머를 유지 관리합니다. OpenShift Container Platform에는 각 플랫폼 공급자에 최적화된 검증 값이 지정되어 있습니다. platform=none 또는 platform=metal 값이 있는 기본 etcd 타이머 매개변수는 다음과 같습니다.

- name: ETCD_ELECTION_TIMEOUT 
1

  value: "1000"
  ...
- name: ETCD_HEARTBEAT_INTERVAL 
2

  value: "100"
Copy to Clipboard Toggle word wrap
1
이 시간 초과는 후속 노드가 리더가 되기 전에 하트비트를 관찰하지 않고 대기하는 시간입니다.
2
리더가 여전히 리더임을 알리는 빈도입니다.

이러한 매개변수는 컨트롤 플레인 또는 etcd에 대한 모든 정보를 제공하지 않습니다. etcd 클러스터는 디스크 대기 시간에 민감합니다. etcd는 로그에 대한 제안을 유지해야 하므로 다른 프로세스의 디스크 작업으로 인해 fsync 대기 시간이 길어질 수 있습니다. 그 결과 etcd에서 하트비트가 누락되어 요청 시간 초과 및 일시적으로 리더 손실이 발생할 수 있습니다. 리더 손실 및 복원 중에 Kubernetes API는 클러스터에 영향을 미치는 이벤트 및 불안정성을 유발하는 요청을 처리할 수 없습니다.

etcd에서 디스크 대기 시간 영향

etcd 클러스터는 디스크 대기 시간에 민감합니다. 컨트롤 플레인 환경에서 etcd에서 etcd가 경험하는 디스크 대기 시간을 이해하려면 유연한 I/O Tester(fio) 테스트 또는 제품군을 실행하여 OpenShift Container Platform에서 etcd 디스크 성능을 확인합니다.

중요

fio 테스트만 사용하여 특정 시점에서 디스크 대기 시간을 측정합니다. 이 테스트는 프로덕션 환경에서 etcd에서 발생하는 장기 디스크 동작 및 기타 디스크 워크로드를 고려하지 않습니다.

다음 예와 같이 최종 보고서가 etcd에 대해 디스크를 적절하게 분류하는지 확인합니다.

...
99th percentile of fsync is 5865472 ns
99th percentile of the fsync is within the suggested threshold: - 20 ms, the disk can be used to host etcd
Copy to Clipboard Toggle word wrap

대기 시간이 긴 디스크를 사용하는 경우 다음 예와 같이 etcd에 대한 디스크가 권장되지 않음을 알리는 메시지가 표시됩니다.

...
99th percentile of fsync is 15865472 ns
99th percentile of the fsync is greater than the suggested value which is 20 ms, faster disks are suggested to host etcd for better performance
Copy to Clipboard Toggle word wrap

클러스터 배포가 제안된 대기 시간을 충족하지 않는 etcd에 디스크를 사용하는 많은 데이터 센터에 걸쳐 있으면 서비스 영향을 미치는 오류가 발생할 수 있습니다. 또한 컨트롤 플레인에서 유지할 수 있는 네트워크 대기 시간이 크게 단축됩니다.

etcd에서 네트워크 대기 시간 및 지터의 영향

MTU(최대 전송 단위) 검색 및 검증 섹션에 설명된 툴을 사용하여 평균 및 최대 네트워크 대기 시간을 확보합니다.

하트비트 간격의 값은 멤버 간의 평균 Round-trip 시간 (RTT)의 최대 값이어야 합니다. 일반적으로 왕복 시간보다 약 1.5 배입니다. OpenShift Container Platform의 기본 하트비트 간격이 100ms인 경우 컨트롤 플레인 노드 간 제안된 RTT는 33ms 미만이며 최대 66ms(66ms x 1.5 = 99ms)입니다. 더 큰 네트워크 대기 시간으로 인해 서비스 영향을 미치는 이벤트 및 클러스터 불안정성이 발생할 수 있습니다.

네트워크 대기 시간은 구리, 광섬유, 무선 또는 Satellite와 같은 전송 네트워크의 기술, 전송 네트워크의 네트워크 장치의 수 및 품질 및 기타 요소를 포함하는 요인에 의해 결정됩니다.

정확한 계산을 위해 네트워크 지터가 있는 네트워크 대기 시간을 고려하십시오. 네트워크 지터 는 네트워크 대기 시간 또는 수신된 패킷 지연의 차이입니다. 효율적인 네트워크 조건에서는 지터가 0이어야 합니다. 네트워크 지터는 시간이 지남에 따라 실제 네트워크 대기 시간이 RTT + 또는 - Jitter이므로 etcd의 네트워크 대기 시간 계산에 영향을 미칩니다.

예를 들어, 최대 대기 시간이 80ms이고 30ms의 지터가 있는 네트워크는 110ms의 대기 시간을 경험하므로 etcd는 하트비트를 놓치게 됩니다. 이 조건으로 인해 요청 시간 초과 및 임시 리더 손실이 발생합니다. 리더 손실 및 재지정 중에 Kubernetes API는 클러스터에 영향을 미치는 이벤트 및 불안정성을 유발하는 요청을 처리할 수 없습니다.

etcd에서 합의된 대기 시간으로 인한 영향

절차는 활성 클러스터에서만 실행할 수 있습니다. 클러스터 배포를 계획하는 동안 디스크 또는 네트워크 테스트를 완료해야 합니다. 이 테스트에서는 배포 후 클러스터 상태를 확인하고 모니터링합니다.

etcdctl CLI를 사용하면 etcd에서 경험한 대로 지연 시간에 도달할 수 있습니다. etcd pod 중 하나를 확인한 다음 엔드포인트 상태를 검색해야합니다.

etcd 피어 라운드 트립 시간은 성능에 영향을 미칩니다.

etcd 피어 트립 시간은 네트워크 라운드 트립 시간과 동일하지 않습니다. 이 계산은 멤버 간에 복제가 얼마나 빨리 발생할 수 있는지에 대한 엔드 투 엔드 테스트 메트릭입니다.

etcd 피어 트립 시간은 모든 etcd 멤버 간에 클라이언트 요청을 복제하기 위해 etcd의 대기 시간을 보여주는 메트릭입니다. OpenShift Container Platform 콘솔은 다양한 etcd 지표를 시각화하는 대시보드를 제공합니다. 콘솔에서 모니터링 대시보드 를 클릭합니다. 드롭다운 목록에서 etcd 를 선택합니다.

etcd 피어 라운드 트립 시간을 요약하는 플롯은 etcd 대시보드 페이지 끝에 있습니다.

etcd에 데이터베이스 크기에 미치는 영향

etcd 데이터베이스 크기는 etcd 조각 모음 프로세스를 완료하는 시간에 직접적인 영향을 미칩니다. OpenShift Container Platform은 45% 이상의 조각화가 감지되면 한 번에 하나의 etcd 멤버에서 etcd 조각 모음을 자동으로 실행합니다. 조각 모음 프로세스 중에 etcd 멤버는 요청을 처리할 수 없습니다. 소규모 etcd 데이터베이스에서 조각 모음 프로세스는 1초 미만으로 수행됩니다. 더 큰 etcd 데이터베이스를 사용하면 조각화 시간에 직접 디스크 대기 시간이 영향을 미치므로 조각 모음 중에 작업이 차단되므로 대기 시간이 추가로 발생합니다.

etcd 데이터베이스의 크기는 네트워크 파티션이 일정 기간 동안 컨트롤 플레인 노드를 격리할 때 고려해야 할 요소이며 통신을 다시 설정한 후 컨트롤 플레인을 동기화해야 합니다.

시스템의 Operator 및 애플리케이션에 따라 다르기 때문에 etcd 데이터베이스의 크기를 제어하기 위한 최소 옵션이 있습니다. 시스템이 작동하는 대기 시간 범위를 고려할 때 etcd 데이터베이스의 크기당 동기화 또는 조각 모음의 영향을 설명하십시오.

영향의 크기는 배포에 따라 다릅니다. etcd 멤버는 조각 모음 프로세스 중 업데이트를 수락할 수 없으므로 조각 모음을 완료하는 시간으로 인해 트랜잭션 속도 저하가 발생합니다. 마찬가지로 변경 속도가 높은 대규모 데이터베이스의 etcd 재동기화 시간은 시스템의 트랜잭션 속도 및 트랜잭션 대기 시간에 영향을 미칩니다. 계획할 영향 유형에 대해 다음 두 가지 예를 고려하십시오.

데이터베이스 크기에 따른 etcd 조각 모음의 첫 번째 예는 1GB의 etcd 데이터베이스를 초당 80Mb에서 느린 7200 RPM 디스크에 작성하는 데 약 1분 40초가 걸리는 것입니다. 이러한 시나리오에서는 조각 모음 프로세스를 완료하는 데 최소한 이 시간이 걸립니다.

etcd 동기화에 데이터베이스 크기가 미치는 영향의 두 번째 예는 컨트롤 플레인 노드 중 하나의 연결을 끊는 동안 etcd 데이터베이스의 10%가 변경되면 동기화에서 최소 100MB를 전송해야 한다는 것입니다. 1Gbps 링크를 통해 100MB를 전송하는 데는 800ms가 걸립니다. Kubernetes API를 사용한 일반 트랜잭션이 있는 클러스터에서 etcd 데이터베이스 크기가 클수록 네트워크 불안정으로 인해 컨트롤 플레인 불안정성이 발생합니다.

OpenShift Container Platform에서 etcd 대시보드에는 etcd 데이터베이스의 크기를 보고하는 플롯이 있습니다. 또는 etcdctl 툴을 사용하여 CLI에서 데이터베이스 크기를 가져올 수 있습니다.

# oc get pods -n openshift-etcd -l app=etcd
Copy to Clipboard Toggle word wrap

출력 예

NAME      READY   STATUS    RESTARTS   AGE
etcd-m0   4/4     Running   4          22h
etcd-m1   4/4     Running   4          22h
etcd-m2   4/4     Running   4          22h
Copy to Clipboard Toggle word wrap

# oc exec -t etcd-m0 -- etcdctl endpoint status -w simple | cut -d, -f 1,3,4
Copy to Clipboard Toggle word wrap

출력 예

https://198.18.111.12:2379, 3.5.6, 1.1 GB
https://198.18.111.13:2379, 3.5.6, 1.1 GB
https://198.18.111.14:2379, 3.5.6, 1.1 GB
Copy to Clipboard Toggle word wrap

etcd에서 Kubernetes API 트랜잭션 비율의 영향

확장된 컨트롤 플레인을 사용하는 경우 Kebernetes API 트랜잭션 속도는 특정 배포의 특성에 따라 다릅니다. etcd 디스크 대기 시간, etcd 왕복 시간 및 API에 기록된 오브젝트의 크기에 따라 다릅니다. 결과적으로 확장된 컨트롤 플레인을 사용할 때 클러스터 관리자는 환경에 가능한 지속적인 트랜잭션 속도를 결정하기 위해 환경을 테스트해야 합니다. kube-burner 툴을 이 용도로 사용할 수 있습니다.

사용자 환경에 대한 Kubernetes API 트랜잭션 속도 확인

Kubernetes API의 트랜잭션 속도를 측정하지 않고 확인할 수 없습니다. 컨트롤 플레인을 로드하는 데 사용되는 툴 중 하나는 kube-burner 입니다. 바이너리는 OpenShift Container Platform 클러스터를 테스트하기 위한 OpenShift Container Platform 래퍼를 제공합니다. 클러스터 또는 노드 밀도를 테스트하는 데 사용됩니다. 컨트롤 플레인 테스트를 위해 kube-burner ocp 에는 cluster-density , cluster-density -v2 및 cluster-density- ms 라는 세 가지 워크로드 프로필이 있습니다. 각 워크로드 프로파일은 컨트롤을 로드하도록 설계된 일련의 리소스를 생성합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat