2009년 08월 23일
고가용성 - 시스템 공부를 위한 중요한 과제.
현재 수많은 시스템들이 가동되고 있습니다. 주로 우리가 쓰는 포탈사이트 서버라던가 각 회사마다 가지고 있는 전산 시스템 등등이 있군요. 이러한 시스템을 관리하는 관리자들은 이용중인 서비스를 정지 없이 제공하기 위해서 서버의 수많은 기술들을 이용합니다. 그 일환으로 내결함성과 확장성을 갖춘 시스템과 신뢰성이 높은 소프트웨어를 구매하고 최종적으로 더 높은 가용성을 얻기 위해 쓰이는 방식 중 하나가 제가 주로 쓰려고 하는 클러스터 입니다.
이를 위해서 다음 4가지에 대해 제대로 알아보도록 해야 합니다.
○가용성 (Availability)
○신뢰성 (Reliability)
○내결함성 (Fault Tolerance)
○확장성 (Scalability)
여러모로 공부하신 분들은 들어보셨을 것입니다. 이 용어들을 우선적으로 정리해 보겠습니다.
1. 가용성
가용성이란 일년에 어느 정도 정지 없이 서비스가 가동되었는지를 백분율로 계산한 것이다. 어느 시스템의 경우에는 일년에 총 5시간 정도의 시스템 정지가 발생했었고 또 어떤 시스템은 10분 이라고 할 것이다. 이런 것들을 전부 수치화 시킨 것이다.

X는 일년은 분으로 환산한 값인 525600을 이용하고, N은 일년중에 오류에 의해 서비스가 중단된 시간(예기치 않은 시간)을 분으로 환산하여 이용한다. N을 나타낼 때 주의할 것은 계획된 유지 보수에 의해 서비스가 중단된 시간은 N에서 제외한다. H/W 교체나 정기보수나 정기점검의 경우에는 이용자에게 공지한 다음에 서비스를 중지한 상태이므로 예기치 않은 시간이 아니게 된다. 그러므로 제외한다.
예를 들어 예외치 않은 서비스 중지 시간이 52.5분일 경우 다음과 같이 계산한다.

이렇게 계산해서 나타난 %가 이 시스템의 가용성이다. 다음 표는 대략적인 가용성과 정지시간을 나타내 준 것이다.

시스템 관리자는 시스템을 구축하기 위해서 계획단계 시점에서부터 시스템이 어느정도의 가용성을 필요로 하는지를 먼저 결정한다. 이때, 고려할 사항으로서 구축할 시스템이 미션 크리티컬(Mission Critical) 인지 비즈니스 크리티컬(Business Critical)인지를 구분해야 한다.
이 두 개념은 일반적으로 사람의 생명이나 재해 유발 가능성을 가지고 평가합니다. 즉, 구축하는 시스템이 오랜 시간 정지하였을 경우 사람의 생명이 위험하거나 큰 재해가 발생한다면, 이 시스템은 미션 크리티컬로 구분합니다.
미션 크리티컬 시스템의 예.
○ 발전소 관제시스템(원자력, 수력 등...)
○ 항공 관제 시스템
○ 119 응급 콜 센터(Emergency Call Center) 시스템 등의 응급 시스템
이같은 시스템이 요구하는 가용성은 99.999~100% 로 하는 것이 좋습니다. (가능한 한 정지시간이 짧아야만 하는 시스템.)
이와 반대로 비즈니스 크리티컬은 이름 그대로 회사 수익이나 생산성 등에 영향을 미치는 시스템입니다. 주로 99.9~99.99%의 가용성을 요구합니다.
비즈니스 크리티컬의 예.
○ 인트라넷 전자 경제 시스템
○ 인터넷 전화 상거래 시스템
○ 공장 자동화 시스템(FA) 등의 자동화 시스템.
대부분의 시스템 관리자라면 자신이 관리하는 시스템이 비즈니스 크리티컬이라도 99.999% 이상의 가용성을 가지길 원할 것이지만 99.999%의 가용성을 위해 소요되는 비용이 기하급수적으로 증가하기 때문에 비즈니스 크리티컬에서는 크게 보지 않는 것이다.
(99.999%를 'Five 9s' 라고 하며, 모든 시스템 관리자들이 희망하는 이상적인 고가용성 상징하는 수치이다.)

2. 신뢰성
신뢰성은 H/W(하드웨어)가 얼마나 오랜 시간 동안 오류에 의해 정지 없이 안정적인 서비스를 제공하는지를 정의하는 것으로, 일반적으로는 컴퓨터를 구성하는 각각의 하드웨어마다의 평균 가용 시간(MTBF: Mean Time Between Failure)을 이용해서 표현한다. 예로 필자가 가지고 잇는 예전 시게이트 64G SCSI 하드는 신뢰성이 '1200000MTBF' 라고 되어 있다. 이것을 년단위로 하면 약 137년. 즉, 137년동안 오류없이 안정적인 서비스를 제공할 수 있단 것이 된다. 이와 같이 하드웨어에 표기된 MTBF는 그 제품의 평균 수명이라고 생각하면 쉽다.

신뢰성을 표현하는 또 하나의 용어로는 평균 복구 시간(MTTR: Mean Time To Recovery)가 있습니다. 이 용어는 하드웨어가 오류가 발생하였을 때, 오류를 복구하여 정상 동작하는데 걸리는 시간을 의미합니다. 평균 가용 시간과 평균 복구 시간을 시스템에 적용하여 다음과 같은 수식을 이용해 가용성을 계산할 수도 있다.

한 예로, 특정 시스템이 10000시간 동안 오류없이 작동하다가 하드웨어나 소프트웨어에 의해 오류가 발생하여 서비스가 중단되었다. 관리자가 오류를 해결하는 데 2시간을 소모했다. 그렇다면 다음과 같은 계산으로 가용성을 표현할 수 있다.

그러므로 고가용성 시스템을 만들거나 유지하기 위해, MTBF가 높은 하드웨어를 구입하여 신뢰성 높은 시스템을 구축하는 것이 좋은 방법이다.
3. 내결함성
내결함성은 시스템을 구성하는 하드웨어나 소프트웨어에 오류가 발생해도 서비스의 중단 없이 지속적인 서비스를 제공할 수 있는 능력을 뜻한다. 이런 내결함성을 제공하는 대표적인 하드웨어는 다음과 같다.
내결함성을 제공하는 대표적인 H.W
○ 하드디스크 : RAID 1, 0+1, 5
○ 네트워크 카드 : Network Teaming
○ 메모리 : RAID 메모리
○ 전원 공급 장치 : 다중 전원 공급 장치, UPS
○ SAN : 다중 경로 SAN
내결함성의 특징으로는 특정 구성 요소에 오류가 발생하여도 전혀 서비스에 지장을 주지 않아야 한다는 것이다. 대표적인 예로 볼수 있는 것이 하드디스크를 구성하는 RAID 이다. RAID 1의 경우에는 하나의 디스크가 결함이 되어도 다른 디스크를 이용하셔 사용할 수 있다. 반면에 RAID 0은 여러개의 디스크에 데이터를 분산 저장하므로 하나의 디스크가 결함이 되면 시스템 전체적으로 위협적이 된다. 몇 분이 아니라 몇시간을 들여서 오류를 복구해야 하는 사태가 되는 것이다. 그러므로 고가용성을 위해서는 시스템을 구성하는 하드웨어에 대해 최대한의 내결함성을 제공해야 한다.
4. 확장성
하나의 시스템으로는 여러 사용자 (혹은 수많은 사용자)의 요구사항을 처리하는 데에는 한계가 따른다. 이를 극복하기 위해서는 여러 방안이 있다. (너무 여러가지 방안들이 있다. 동일한 하드웨어 시스템이어도 각 기업들 마다 구성해서 쓰는 방식도 차이가 생기기 때문이다.) 그래서 대표적으로 클러스터 방식에 대해서 예기를 해보겠다. (현재 필자의 주 공부대상.)클러스터를 이용하여 분산처리 환경을 만드는 것이다. (분산처리환경은 그리드 컴퓨팅이나 클라우드 컴퓨팅 기술들도 여러모로 있다. 그러나, 설명을 편히 하기 위한 것일 뿐이다.) 그전에 확장성을 언급하기 위해 기본적으로 사용되는 용어를 정리한다.
○Scaling Up : 시스템에 병목 현상이 발생할 경우에 부족한 리소스(CPU, 메모리, 하드디스트 등)를 추가하는 것을 의미한다. 이를 위해서는 시스템을 처음 구매할 때, 차후 리소스 별로 어느 정도까지 Scaling Up 가능한 지 확인 후 구입한다.
○Scailng Out : 하나의 시스템에서 처리할 수 있는 용량을 넘어서 사용자의 부하가 걸릴 경우에는 시스템을 추가하여 사용자의 부하를 여러 시스템에서 분산처리하도록 구현하는데, 이를 Scaling Out 이라고 한다.
시스템으로 이용하는 하드웨어나 사용하는 OS에 따라 클러스터 노드를 얼마나 확장할 수 있는지가 결정되기도 한다.
...시스템 공부에 여러모로 필요한 고가용성을 정리하면서 기본적인 것을 살펴봤군요....;;
오류 있으면 말씀 남겨주세요...;;
# by | 2009/08/23 23:17 | IT이야기.(서버) | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]