고가용성이란 무엇입니까?

고가용성이란 무엇입니까?

2022-06-01 last update

5 minutes reading Load Balancing Conceptual High Availability

소개


핵심 시스템 서비스의 신뢰성과 고성능 인프라에 대한 수요가 끊임없이 증가함에 따라 확장성과 고가용성이라는 두 용어는 더 이상 유행할 수 없다.증가하는 시스템 부하를 처리하는 것은 흔히 볼 수 있는 문제이지만 정지 시간을 줄이고 단일 고장을 없애는 것도 중요하다.고가용성은 대규모 인프라 시설 설계의 질로 다음 문제를 해결했다.
이 가이드에서는 고가용성이 무엇을 의미하는지, 인프라의 신뢰성을 높이는 방법에 대해 설명합니다.

고가용성이란 무엇입니까?


계산에서 가용성이란 서비스가 사용할 수 있는 시간대와 시스템이 사용자의 요청에 응답하는 데 필요한 시간을 설명하는 데 쓰인다.고가용성은 시스템 또는 구성 요소의 품질로 주어진 시간 내에 높은 수준의 조작 성능을 확보할 수 있다.

가용성 평가


가용성은 일반적으로 특정 시스템이나 구성 요소가 주어진 시간 내에 정상적으로 작동하는 시간을 나타내는 백분율로 표시되며, 이 중 100%는 시스템에 장애가 발생하지 않았다는 것을 나타낸다.예를 들어 1년 동안 99퍼센트의 가용성을 보장하는 시스템은 최대 3.65일의 정지 시간(1%)을 가질 수 있다.
이 값들은 계획 내와 계획 외의 유지보수 기간, 그리고 가능한 시스템 고장으로부터 복구하는 시간을 포함하여 몇 가지 요소에 따라 계산된다.

고가용성은 어떻게 작동합니까?


고가용성은 인프라 시설의 고장 응답 메커니즘이다.그것의 작업 방식은 개념적으로 매우 간단하지만, 통상적으로 전문적인 소프트웨어와 설정이 필요하다.

고가용성은 언제 중요합니까?


강력한 운영 시스템을 구축할 때 가동 중지 시간과 서비스 중단을 최소화하는 것은 일반적으로 매우 우선순위입니다.시스템과 소프트웨어가 아무리 신뢰할 수 있어도 응용 프로그램이나 서버의 다운타임을 초래할 수 있습니다.

인프라스트럭처의 고가용성을 실현하는 것은 이러한 유형의 이벤트의 영향을 줄이는 유용한 전략이다.고가용성 시스템은 서버 또는 구성 요소 장애로부터 자동으로 복구됩니다.

무엇이 시스템을 고도로 사용할 수 있습니까?


고가용성의 목표 중 하나는 인프라에서 단일 장애 지점을 제거하는 것입니다.단일 고장은 기술 창고의 구성 요소로 사용할 수 없게 되면 서비스가 중단됩니다.따라서 프로그램의 정상적인 기능에 필요한 모든 구성 요소는 중복이 없으면 단일 고장으로 간주됩니다.

단일 장애 지점을 제거하기 위해 스택의 모든 계층은 이중화를 대비해야 합니다.예를 들어 부하 평형기 뒤에 같은 두 개의 불필요한 웹 서버로 구성된 기초 구조를 가지고 있다고 가정하십시오.클라이언트로부터의 데이터는 평균 웹 서버 사이에 분포되지만, 그 중 한 서버가 다운되면 부하 평형기는 모든 데이터를 나머지 온라인 서버로 리셋합니다.
이 장면의 웹 서버 층은 단일 고장이 아닙니다. 왜냐하면:
  • 동일한 작업의 예비 구성 요소가 배치됨
  • 이 층의 맨 위에 있는 메커니즘(부하 평형기)은 구성 요소의 고장을 감지하고 제때에 복구할 수 있도록 행동을 조정할 수 있다
  • 그러나 부하 평형기가 오프라인 상태가 되면 어떤 상황이 발생합니까?
    묘사된 장면에서 부하 균형층 자체는 여전히 단점 고장으로 현실 생활에서 적지 않다.그러나 남은 단점 고장을 없애는 것은 도전적일 수 있다.여분을 실현하기 위해 추가 부하 평형기를 쉽게 설정할 수 있지만, 부하 평형기 위에 고장 검측과 복구를 실현할 수 있는 뚜렷한 점이 없다.
    이중화만으로는 고가용성을 보장할 수 없습니다.고장을 감지하고 창고의 구성 요소를 사용할 수 없을 때 조치를 취해야 합니다.
    불필요한 시스템의 고장 검측과 복구는 위에서 아래로 하는 방법으로 실현할 수 있다. 맨 윗층은 그 다음 층의 고장을 감시하고 감시한다.우리 앞의 예시 장면에서 부하 평형기는 맨 윗층이다.만약 그 중 웹 서버 (밑바닥) 를 사용할 수 없다면, 부하 평형기는 이 특정 서버로 다시 지정해 달라는 요청을 중지할 것입니다.

    이런 방법은 왕왕 더욱 간단하지만 한계가 있다. 당신의 기초 구조에서 맨 윗층이 존재하지 않거나 닿을 수 없는 부하 평형기층이 바로 이런 상황이다.외부 서버에서 부하 평형기를 위한 고장 검출 서비스를 만들면 새로운 단일 고장만 만들 수 있습니다.
    이런 상황에서 분포식 방법이 필요하다.여러 개의 불필요한 노드는 하나의 집단으로 연결되어야 하며, 그 중에서 각 노드는 동등한 고장 검측과 복구 능력을 갖추어야 한다.

    그러나 부하 평형기에는 이름 서버의 작업 방식 때문에 추가적인 복잡성이 있다.로드 밸런서 장애 복구는 일반적으로 이중 로드 밸런서로 페일오버하는 것을 의미하며, 도메인 이름을 이중 로드 밸런서의 IP 주소로 지정하려면 DNS 변경이 필요합니다.이러한 변경은 인터넷에 전파되는 데 상당한 시간이 걸릴 수 있으며, 이로 인해 시스템이 심각하게 정지될 것이다.
    가능한 해결 방안은 사용DNS round-robin load balancing이다.그러나 이러한 방법은 클라이언트 응용 프로그램에 페일오버를 남기기 때문에 신뢰할 수 없다.
    더욱 튼튼하고 신뢰할 수 있는 해결 방안은 유연한 IP 주소를 다시 비추는 시스템을 사용하는 것이다. 예를 들어 floating IPs.필요에 따라 IP 주소를 재매핑하여 필요할 때 쉽게 재매핑할 수 있는 정적 IP 주소를 제공하여 DNS 변경에서 고유한 전파 및 캐시 문제를 제거합니다.도메인 이름은 동일한 IP 주소와 연결될 수 있으며 IP 주소 자체는 서버 간에 이동합니다.
    이것이 바로 부동 IP를 사용하는 고가용성 인프라의 외관입니다.

    고가용성을 위해서는 어떤 시스템 구성 요소가 필요합니까?


    실천에서 높은 가용성을 실현하려면 반드시 몇 가지 구성 요소를 자세히 고려해야 한다.고가용성은 소프트웨어 구현뿐만 아니라 다음과 같은 요소에도 달려 있습니다.
  • 환경: 모든 서버가 동일한 지역에 있는 경우 지진이나 홍수 등 환경 조건에 따라 시스템 전체가 다운될 수 있습니다.다른 데이터 센터와 지역에 중복 서버를 보유하면 신뢰성이 높아집니다.
  • 하드웨어: 고가용성 서버는 하드 드라이브와 네트워크 인터페이스를 포함하여 단전과 하드웨어 고장에 적응할 수 있어야 한다.
  • 소프트웨어: 운영 체제와 응용 프로그램 자체를 포함한 전체 소프트웨어 스택은 시스템을 다시 시작해야 할 의외의 고장을 처리할 준비를 해야 한다.
  • 데이터: 데이터 손실과 불일치는 여러 가지 요인으로 인해 발생할 수 있으며 하드디스크 고장에만 국한되지 않는다.고가용성 시스템은 고장이 났을 때의 데이터 안전을 고려해야 한다.
  • 네트워크: 계획된 외부 네트워크 중단은 고가용 시스템의 또 다른 고장 가능성이다.중요한 것은 발생할 수 있는 고장에 대해 불필요한 네트워크 정책을 제정해야 한다는 것이다.
  • 고가용성을 구성하는 데 사용할 수 있는 소프트웨어는 무엇입니까?


    고가용 시스템의 각 층은 소프트웨어와 설정 방면에서 서로 다른 수요를 가지고 있다.그러나 응용 프로그램 단계에서 부하 평형기는 모든 고가용성 설정을 만드는 기본 소프트웨어이다.
    HAProxy(고가용성 프록시)는 여러 차원에서 부하 균형을 처리할 수 있고 database servers를 포함한 다양한 유형의 서버에 적용되기 때문에 부하 균형의 흔한 선택이다.
    시스템 창고에서 응용 프로그램의 입구점(일반적으로 부하 평형기)을 위해 신뢰할 수 있는 불필요한 해결 방안을 실현하는 것이 매우 중요하다.앞에서 말한 바와 같이 이러한 단점 고장을 없애기 위해서 우리는 부동 IP 뒤에서 부하 평형기 집단을 실현해야 한다.Corosync와 Pacemaker는 UbuntuCentOS 서버에서 이러한 설정을 만드는 데 자주 사용됩니다.

    결론


    고가용성은 신뢰성 공정의 중요한 서브집합으로 시스템이나 구성 요소가 주어진 시간 내에 높은 수준의 운행 성능을 확보하는 데 목적을 둔다.언뜻 보기에는 그것의 실현이 상당히 복잡해 보일 수도 있다.그러나 신뢰성을 높여야 하는 시스템에 큰 이익을 가져다 줄 수 있다.