적응형 과부하 보호

적응형 과부하 보호 (Adaptive overload protection)

Enterprise — 적절한 Vault Enterprise 라이선스가 필요합니다.

적응형 과부하 보호는 클라이언트 요청이 서로 다른 서버 리소스를 압도해 가용성이 나빠지는 것을 방지하는 Vault Enterprise의 기능 묶음입니다.

출처: 문서

본문

과부하 방지 (Preventing overload)

Vault는 현재 쓰기 요청이 Vault 서버를 압도하지 못하게 하는 한 가지 유형의 적응형 과부하 보호를 지원합니다.

이 보호 조치는 "적응형(Adaptive)"이라는 이름처럼, 사용자가 튜닝하지 않아도 현재 워크로드와 가용 하드웨어 리소스에 맞춰 최적의 성능을 유지하도록 자동으로 그리고 지속적으로 조정됩니다.

초기 설정 시 적절한 한계값을 부하 테스트하고 튜닝하는 것은 사용자에게 시간이 많이 걸리는 일입니다. 설치 중에 클러스터를 신중하게 튜닝하더라도, 실제 워크로드와 하드웨어 성능은 시간이 지나며 변합니다. 고정 튜닝은 곧 최적이 아니게 되거나 과부하 방지 효과가 전혀 없어질 수 있습니다.

예를 들어 고장 나는 하드웨어 때문에 디스크 지연 시간이 늘어나면 서버의 가용 처리량이 줄어들 수 있습니다. 디스크가 최고 성능일 때 설정된 고정 한계값은 성능이 저하된 시스템을 과부하에서 보호하지 못합니다. Vault Enterprise는 현재 부하와 성능 특성에 적응적으로 대응함으로써 과부하에 대한 장기적인 보호를 제공합니다.

과부하의 유형 (Types of overload)

Vault Enterprise 클러스터에서 성능 병목이 될 수 있는 리소스는 많습니다. 서로 다른 형태의 적응형 과부하 보호는 특정 구성 요소와 워크로드를 대상으로 합니다. 덕분에 각각 해당 하위 시스템의 필요에 맞게 세심하게 특화되고 튜닝될 수 있습니다. 아래 섹션들은 특정 하위 시스템의 과부하를 방지하고 특정 유형의 과부하로부터 보호하는 구체적인 메커니즘을 설명합니다.

쓰기 과부하 보호 (Write overload protection)

Vault Enterprise에서는 복제를 다른 클러스터로 보낼 수 있도록 모든 쓰기가 WALBackend를 거칩니다. 이는 복제를 사용하지 않더라도 마찬가지입니다. Vault는 이런 쓰기에 대해 배칭(batching) 또는 "그룹 커밋(group commit)"을 수행해 처리량을 높입니다. 주어진 스토리지 백엔드에서 최적의 처리량은 다음 배치를 채울 만큼 충분한 쓰기 요청이 큐에 있을 때 얻어집니다. 하지만 배치에 들어갈 수 있는 것보다 더 많은 요청이 큐에 있으면, 모든 쓰기가 여러 다른 배치 뒤에서 기다려야 하므로 지연 시간이 빠르게 증가하기 시작합니다.

어떤 경우에는 Vault의 하드웨어 용량을 초과하는 쓰기 요청이 갑자기 몰려, 쓰기가 큐를 통과하기도 전에 모든 요청이 타임아웃될 만큼 오래 큐에 대기하기도 합니다. 이렇게 되면 Vault가 가능한 한 빠르게 요청을 처리하고 데이터를 저장하고 있음에도 불구하고 클라이언트에게 사실상 사용 불가능하게 됩니다. 아래의 100% 로그인 워크로드에 대한 테스트 결과가 이를 보여줍니다.

이런 과부하 시나리오는 복제와 관련된 WAL이 쓰이는 것을 지연시켜 복제 지연(replication lag)을 유발할 수도 있습니다. 이 지연은 복제된 클러스터 사이에 데이터 불일치를 일으킬 수 있습니다.

적응형 쓰기 과부하 보호는 이런 시나리오를 방지합니다. 쓰기 큐의 현재 상태를 지속적으로 모니터링하고, 세심하게 튜닝된 알고리즘으로 가용 하드웨어에서 처리량을 극대화하면서도 지연 시간을 통제하고 불필요한 거부를 최소화할 만큼의 큐잉만 허용합니다. 보조 클러스터로 데이터를 복제하는 데 필요한 쓰기는 항상 처리되어 복제 지연을 피합니다.

쓰기 과부하 보호는 Vault Enterprise 1.17에서 베타 기능으로 추가되었고 기본적으로 비활성화되어 있었습니다. Vault 1.18.0부터는 통합 스토리지(integrated storage)를 사용할 때만 기본적으로 활성화됩니다. 적응형 과부하 보호는 Consul 및 기타 스토리지 백엔드에서는 사용할 수 없습니다.

기능을 비활성화하려면 adaptive_overload_protection 설정 스탠자를 사용하세요.

메트릭 (Metrics)

운영자는 쓰기 과부하 보호 컨트롤러와 관련된 메트릭을 모니터링할 수 있습니다. 가장 유용한 것은 reject_fraction으로, 최적의 처리량과 안정성을 유지하기 위해 거부해야 하는 쓰기 요청의 비율에 대한 컨트롤러의 현재 추정치를 나타냅니다.

wal.write_controller.reject_fraction 메트릭 참조 문서를 확인하세요.

클라이언트의 과부하 처리 (Client handling of overloads)

Vault가 용량에 도달하면 새 요청은 재시도 가능한 503 - Service Unavailable로 즉시 거부됩니다. 이 오류를 올바르게 처리하기 위한 추가 고려 사항은 "Vault 서버 일시적 과부하(Vault Server Temporarily Overloaded)" 문서를 참조하세요.

더 알아보기 (Learn more)