고가용성 아키텍처는 개별 구성 요소의 장애에도 불구하고 IT 시스템의 지속적인 작동을 보장하는 데 필요합니다. 주요 원칙은 중복성(redundancy), 로드 밸런싱(load balancing), 자동 복구(failover)를 통해 단일 장애 지점을 제거하는 것입니다.
고전적인 고가용성 시스템 구성에는 서버 클러스터, 복제된 데이터베이스, 로드 밸런서 및 모니터링 시스템이 포함됩니다. 대규모 시스템에는 다양한 데이터 센터에 복제본을 배치하는 지리적 분산이 적용됩니다.
여러 upstream을 가진 nginx 구성 예:
upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; least_conn; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } }
주요 특징:
데이터베이스가 복제된 경우, 복제본 간의 데이터 일관성을 항상 보장할 수 있습니까?
아니요, 일관성은 선택된 복제 모델(강한/최종 일관성)에 따라 다릅니다. 예를 들어, 최종 일관성의 경우 동기화 지연으로 인해 일부 복제본에서 "구버전" 데이터가 발생할 수 있습니다.
로드 밸런서가 백엔드의 가용성 문제를 스스로 수정할 수 있습니까?
아니요, 로드 밸런서는 작동하지 않는 서버를 풀에서 제외할 수만 있지만, 이를 복구할 수는 없습니다. 자동 복구를 위해 추가 서비스(예: Kubernetes와 같은 오케스트레이션 시스템)가 사용됩니다.
서버 클러스터를 설정하는 것만으로 고가용성을 충분히 보장할 수 있습니까?
아니요, 네트워크 인프라, 스토리지 및 스택의 다른 구성 요소의 고가용성을 모니터링하는 것도 중요합니다. 모든 부분에서의 계획 오류는 전체 시스템을 위협할 수 있습니다.