고가용성 시스템 설계 방법

고가용성 시스템 설계 방법

일부 웹 애플리케이션과 일부 데스크톱 애플리케이션이 프로덕션 환경의 서버에서 실행되고 있다고 가정해 보겠습니다.

프로덕션 환경에서는 단 1분의 가동 중지 시간도 허용되지 않습니다. 현재 나는 HA Cluster system이 목적으로 어떤 것이 사용되는지만 알고 있습니다. 이것이 시스템 종료를 방지하는 유일한 방법인지, 아니면 이 외에 다른 방법이 사용되는지 알고 싶습니다.

Google과 같은 대기업은 단 1초의 가동 중지 시간도 허용하지 않기 때문에 고가용성을 위해 무엇을 사용합니까?

감사해요

답변1

기본적으로 애플리케이션을 실행하는 데 필요한 모든 서비스에 대해 자동 장애 조치(failover)를 원합니다.

한 가지 해결책은 다음과 같은 접근 방식일 수 있습니다.

  1. 두 시스템 모두에 Keepalived가 설치되어 있습니다.
  2. HAP LB 2에 대한 장애 조치가 포함된 로드 밸런서로서의 HAProxy. keepalived로 모니터링됨
  3. HAP 뒤의 Apache/NGINX. 하나가 실패하면 HAP는 이를 모니터링하고 다른 서버의 Apache/NGINX로 리디렉션합니다.
  4. MySQL 마스터/마스터 복제, 로드 밸런싱 및 HAP를 통해 모니터링

기본적으로 HAProxy는 시스템의 로드를 분산시키고 서비스가 실행 중인 경우에만 서비스 중 하나로 전달합니다.

찾고 있는 아키텍처는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

답변2

상황에 따라 다릅니다. 모든 애플리케이션과 모든 수준의 OSI 모델에 대해 자체 HA 시스템을 만들어야 합니다.

하지만 시작하려면 백엔드가 포함된 ha-proxy, keepalived 및 nginx에 대해 배울 수 있습니다.

답변3

시스템은 가장 약한 링크만큼만 강력합니다.

일반적인 프로덕션 환경에서는 모든 것이 여러 개 존재합니다. 소규모 웹 클러스터는 로드 밸런서, 여러 개의 역방향 프록시, 여러 개의 http 서버, 마스터/슬레이브 또는 마스터/마스터 데이터베이스 노드로 구성될 수 있습니다. 이 설정에서는 단일 로드 밸런서가 약한 링크가 됩니다. 죽으면 아무것도 작동하지 않습니다. 대규모 환경에서는 이를 복제하지만 규모가 더 커집니다.

궁극적으로 네트워크 설계는 사용 목적에 따라 달라집니다.

관련 정보