Date: 8월 21, 2026
99.99% 가동률이 100% 가동률을 의미하지 않는 이유
손 소독제 용기를 자세히 살펴본 적이 있으신가요? 포장지 어딘가에 “세균 99.99% 제거”라는 문구가 눈에 띄게 적혀 있는 경우가 많습니다. 저처럼 여러분도 아마 “나머지 0.01%는 어떻게 되는 거지?”라는 당연한 질문을 떠올리셨을 겁니다. 그 마지막 0.01%는 왜 제거하기가 그렇게 어려운 걸까요? 고가용성(HA) 소프트웨어에서도 같은 질문을 마주하게 됩니다. HA 가동 시간에 대해 이야기할 때 99.99%라는 수치를 접해 보셨을 겁니다. 하지만 여전히 같은 질문이 남습니다. 왜 100% 가동 시간을 달성할 수 없는 걸까요?
먼저 99.99% 가동률이 실제로 무엇을 의미하는지 알아보겠습니다. 가동률은 애플리케이션이 실행 중이며 최종 사용자가 이용할 수 있는 시간을 의미합니다. 일반적으로 이는 1년 동안 측정됩니다. 99.99% 가동률을 달성하려면 다운타임이 52.60분을 넘지 않아야 합니다. 평균적으로 이는 다음과 같이 구성됩니다.
1년에 52분 36초
한 달에 4분 23초
일주일에 1분 0초
하루에 0분 8초
그건 아주 짧은 시간이지만, 아무것도 아니니까 대체 어디서 나오는 걸까요?
의도적인 가동 중지 시간 발생 원인
먼저 가장 근본적인 다운타임 원인 몇 가지를 살펴보겠습니다. 아무리 뛰어난 HA 소프트웨어라 하더라도 스위치오버와 같은 일반적인 작업을 수행하는 데는 항상 어느 정도의 시간이 소요됩니다. 의도적으로 스위치오버를 시작하면 아주 짧은 다운타임이 발생합니다. 계층 구조의 규모에 따라 몇 초에서 몇 분까지 걸릴 수 있습니다. 이러한 현상이 발생하는 이유를 이해하려면 스위치오버 시 어떤 일이 발생하는지 알아야 합니다. 리소스 수준에서 먼저 현재 활성 노드에서 해당 리소스를 완전히 서비스에서 제외한 다음 새 활성 노드에서 리소스를 완전히 서비스 상태로 전환해야 합니다. 애플리케이션에 따라 몇 가지 간단한 명령 실행으로 해결될 수도 있고, 길고 복잡한 정상 종료 작업을 수행한 후 다른 서버에서 느린 콜드 스타트를 거쳐야 할 수도 있습니다. 계층 구조 수준에서는 이러한 작업을 대부분 순차적으로 수행해야 합니다. 리소스에 하위 리소스가 있는 경우, 첫 번째 리소스를 서비스에서 제외하기 전에 하위 리소스를 먼저 완전히 서비스에서 제외해야 합니다. 다른 서버에서는 자식 서버들을 완전히 서비스 상태로 만들어야만 비로소 서비스를 시작할 수 있습니다. 복잡한 전환 프로세스를 가진 다단계 계층 구조의 경우, 이 과정이 상당히 길어질 수 있습니다. 이는 본질적이고 피할 수 없는 유형의 다운타임이지만, 다행히 대부분의 경우 최종 사용자는 약간 더 길어진 로딩 시간이나 짧은 재연결 시간 외에는 이를 알아차리지 못할 것입니다. 하지만 이러한 다운타임은 전체 다운타임 계산에 포함됩니다.
또 다른 본질적인 다운타임 유형은 유지보수입니다. 다행히 대부분의 유지보수는 고가용성 방식으로 수행할 수 있습니다. 즉, 백업 노드에서 먼저 유지보수를 수행하고, 시스템을 전환한 다음, 이전에 활성화되었던 시스템에서 유지보수를 수행하는 것입니다. 이렇게 하면 앞서 설명한 것처럼 어느 정도의 다운타임이 발생하지만 최소화할 수 있습니다. 하지만 고가용성 방식으로 수행할 수 없는 유지보수 유형도 있습니다. 이러한 경우에는 상당한 다운타임이 발생하여 연간 총 다운타임이 증가할 수 있습니다.
의도치 않은 가동 중단 원인
고가용성 소프트웨어의 주요 목적, 즉 재해 복구를 살펴보면 그 중요성이 더욱 부각됩니다. 모든 것이 계획대로 완벽하게 진행되더라도, 어떤 장애라도 발생하면 일정 시간의 다운타임이 발생할 수밖에 없습니다. 먼저 성공적인 페일오버 과정에서 다운타임이 어떻게 발생하는지 살펴보겠습니다. 장애로부터 제대로 복구하려면 먼저 장애를 감지하고 검증해야 합니다. 이는 균형을 맞추기가 어려운 작업입니다. 장애 감지에 너무 집중하면 실제로는 발생하지 않은 장애(오류)를 감지할 수 있고, 반대로 너무 소극적이면 장애 감지 속도가 느려질 수 있습니다. 대부분의 장애는 주기적으로 실행되는 프로세스를 통해 먼저 감지됩니다. 개별 리소스 장애의 경우, 일반적으로 검사 스크립트 실패로 감지됩니다. 전체 서버 장애의 경우, 하트비트 누락으로 감지되는 경우가 많습니다. 두 경우 모두, 단 한 번의 장애 발생만으로 즉시 복구를 시작하는 것이 아니라, 여러 번의 실패를 반복하여 실제 장애 여부를 확인합니다. 예를 들어, 보다 복잡한 리소스 상태 검사를 수행하는 심층 검사 스크립트는 기본적으로 5분마다 실행됩니다. 즉, 특정 오류를 감지하는 데 최대 5분이 소요될 수 있으며, 오류 유형에 따라 검증에는 더 오랜 시간이 걸릴 수 있습니다. 오류를 감지하고 검증한 후에는 오류 유형에 따라 로컬 복구를 여러 번 시도할 수 있습니다. 로컬 복구가 성공하면 가동 중지 시간을 줄일 수 있지만, 실패할 경우 페일오버 가동 중지 시간에 약간의 추가 시간이 발생합니다. 오류를 감지하고 검증한 후 로컬 복구를 시도하면 페일오버가 수행됩니다. 오류 유형에 따라 페일오버에는 앞서 설명한 스위치오버 가동 중지 시간과 비슷한 시간이 소요될 수 있습니다. 이러한 모든 잠재적 지연 요인을 합산하면 가동 중지 시간이 상당히 늘어날 수 있습니다. 다행히 대부분의 오류는 신속하게 감지할 수 있으며, 앞서 설명한 스위치오버와 마찬가지로 최종 사용자는 거의 알아차리지 못할 것입니다.
의도치 않은 다운타임의 두 번째 원인은 페일오버 실패입니다. 페일오버 실패는 자격을 갖춘 기술자가 개입하여 시스템을 올바르게 재안정화해야 하므로 다운타임을 크게 증가시킬 수 있습니다. 이러한 실패는 드물지만 발생할 수 있습니다. 다행히도 이러한 실패는 거의 대부분 예방할 수 있습니다. 페일오버가 계획대로 진행되도록 하는 가장 좋은 방법은 사전에 테스트하는 것입니다. 설정을 잘못 구성하는 것은 매우 쉽지만, 페일오버 테스트를 실행하기만 하면 이러한 문제를 발견할 수 있습니다. 페일오버 성공을 보장하는 또 다른 방법은 클러스터가 가능한 한 자주 페일오버할 수 있도록 준비하는 것입니다. 즉, 백업 시스템이 실행 중이고 리소스가 ISP(In Service Protected) 상태인지 확인해야 합니다. 예를 들어, 미러링 상태가 아닌 DataKeeper 미러는 ISP 상태가 아니므로 장애 발생 시 페일오버할 수 없습니다. 리소스 전환이 가능하도록 하려면 DataKeeper가 가능한 한 자주 미러링되도록 하고, 다른 리소스도 마찬가지로 최신 상태를 유지하며 장애 조치에 대비해야 합니다.
의도치 않은 다운타임의 마지막 원인은 LifeKeeper가 제어할 수 없는 문제입니다. 네트워크 문제는 성공적인 페일오버와 실패한 페일오버 모두를 유발할 수 있지만, 시스템 설정 방식에 따라 겉보기에는 정상 작동하는 클러스터에 접근할 수 없게 만들 수도 있습니다. 마찬가지로, 기본 클라우드 또는 가상화 소프트웨어 문제도 LifeKeeper의 범위를 벗어나는 문제를 야기할 수 있습니다. 이러한 문제를 방지하려면 시스템을 최대한 분리하여 LifeKeeper가 이러한 문제에 대응할 수 있도록 해야 합니다. 모든 시스템이 동일한 가용 영역(AZ) 또는 동일한 네트워크에 있는 클러스터는 시스템이 분산되어 있는 클러스터보다 문제에 훨씬 더 취약합니다. LifeKeeper가 제어할 수 없는 또 다른 문제 영역은 내부 애플리케이션 문제와 인적 오류입니다. 예를 들어, 중요한 데이터가 실수로 삭제되면 LifeKeeper가 감지하거나 수정할 수 없는 최종 사용자에게 문제가 발생할 수 있습니다. 백업 소프트웨어를 사용하면 이러한 유형의 문제에서 복구하는 데 도움이 되지만 손실된 가동 시간을 되돌릴 수는 없습니다. 마지막으로, 고가용성이 악의적인 공격자 및 사이버 보안 위협으로부터 반드시 보호해 주는 것은 아닙니다. 특정 공격으로 인해 가동 시간이 손실될 수 있습니다. 이러한 문제를 예방하려면 신뢰할 수 있는 바이러스/악성코드 방지 소프트웨어 제품군을 사용하는 것이 좋습니다.
피할 수 있는 가동 중단 원인
앞서 여러 부분에서 언급했듯이, 시스템 다운타임의 원인은 대부분 예방 가능합니다. 모든 유형의 예방 가능한 다운타임을 여기서 다 설명하지는 않겠지만, 가장 흔한 몇 가지 원인을 강조하겠습니다.
클러스터 토폴로지와 설계를 처음 구상할 때 고려해야 할 몇 가지 사항이 있습니다. 두 노드 모두 자신이 기본 노드라고 인식하는 스플릿 브레인 현상은 쿼럼을 활용하여 방지할 수 있습니다. 일반 애플리케이션을 개발하는 경우, 오류를 실제로 감지할 수 있도록 빠른 검사 및 심층 검사 스크립트를 작성하고 사용해야 합니다. 마지막으로, 여러 개의 NIC와 네트워크를 통해 실행되는 여러 통신 경로를 설정해야 합니다.
시스템 설정이 잘못되면 다운타임이 발생할 수 있습니다. 몇 가지 원인은 이미 설명했습니다. 첫째, 보호 대상 애플리케이션, 기본 운영 체제, 고가용성 소프트웨어가 모두 최신 버전으로 업데이트되어 있는지 확인하십시오. 이미 수정된 버그로 인해 다운타임이 발생하는 경우가 많은데, 이는 충분히 예방할 수 있었던 문제입니다. 둘째, 클러스터 설정 후 및 정기적으로 스위치오버 및 페일오버 테스트를 수행하십시오. 이러한 테스트를 통해 성공적인 페일오버를 방해할 수 있는 많은 문제를 사전에 감지하고 예방할 수 있습니다. 셋째, 항상 백업 노드가 가동되어 시스템을 인계받을 준비가 되어 있는지 확인하십시오.
시스템 구성이 잘못되면 시스템 다운타임이 발생할 수 있습니다. 이를 방지하기 위해 LifeKeeper와 DataKeeper는 성능, 하트비트 간격, 리소스 점검 및 재시도 설정을 최적화할 수 있는 조정 가능한 매개변수를 제공합니다. 기본 설정으로도 충분한 경우가 많지만, 변경 사항이 미치는 영향과 필요성을 명확히 이해한 후에 변경해야 합니다. SIOS 지원팀의 권장 사항은 풍부한 전문 지식을 바탕으로 하므로, 시스템 안정성을 보장하기 위해 항상 SIOS 지원팀의 지침을 우선적으로 따르십시오.
저자: 카터 챈들러, SIOS 부소프트웨어 엔지니어
허가를 받아 재게재되었습니다.SIOS
