High Availability에 대한 스크랩


출처: 마이크로 소프트 테크넷

가상화 기술을 검토 혹은 도입하고자 하는 고객들의 가장 큰 걱정은 역시나 장애에 대한 측면입니다. 기존에 20대의 물리적인 머신이 있을 경우에, 장애가 발생하면 문제가 발생한 해당 머신 한대에 대해서만 영향을 끼치고, 이에 대해서만 해결하면 되지만, 가상화의 경우에는 물리적인 머신 1대가 여러대의 가상 머신을 가지고 있으므로, 장애가 발생하면 이 여파는 실로 표현할 수 없을 정도로 클 수 밖에 없습니다. 이러한 이유로 가상화 도입을 주저하시는 경우가 많습니다.

테스트/개발 서버를 가상화로 이전하는 현재의 시장 상황에서, 현업 환경에 가상화를 도입하고자 할 때는 꼭 고가용성(High Availability) 기능이 뒤따라야만 하고, 필수적으로 같이 다녀야만 합니다. 고가용성없는 가상화는 폭탄을 안고 있는 것과 동일한 형태(?)라고 생각할 수도 있겠네요.

그렇다면, 고가용성이 필요한 이유는 바로 다운 타임(Downtime)에 대한 대비라는 뜻에는 다들 동감하실거라 생각합니다. 다운 타임에는 크게 두종류가 있을 수 있습니다.

  • 예정된 다운 타임(Planned Downtime) : 서버의 유지 보수 작업, 하드웨어 교체와 같은 예정된 시간의 다운 타임을 의미하며, 이미 어느정도 공지 후 작업, 또는 업무 시간 이후에 작업을 하기 때문에, 이에 대한 여파는 아주 크지는 않습니다.
  • 갑작스런 다운 타임(Unplanned Downtime) : 서버의 하드웨어 문제, 혹은 소프트웨어의 문제로 인한 운영 체제의 문제, 이로 인한 서비스 불가, 다시 말해 예상치도 못한 다운 타임이 이에 해당되며, 이에 대한 여파는 매우 크다고 볼 수 있습니다.

 

http://teinsin.tistory.com/644

2.3 HA Clustering

HA(High Availability)는 고가용성을 의미한다. HA와 클러스터(Cluster)라는 용어는 엄밀히 말하면 다르지만, 고가용성이라는 의미로 혼용해 사용하고 있다. 아마도 몇몇 HA 제품들의 명칭에 클러스터라는 단어가 사용되고 있기 때문일 것이다.

HA는 복수의 시스템 노드를 이용하여 적은 비용으로 높은 가용성(Availability)을 얻는 이중화 기술이며 SLB와 다른 점은 데이터의 신뢰성이 요구되는 서비스 특성상 하나의 resource(공유 디스크 볼륨, 서비스 IP 주소)를 운용해야 한다는 것이다.

HA의 목적은 서비스의 다운타임(99.99%의 가용성을 갖는다 해도 다운타임은 1년에 52분이나 된다)을 최소화함으로써 가용성을 극대화하자는 것이다. 운영 서버에 장애가 발생하더라도, 대기 서버가 즉시 서비스를 대신 처리해 준다면 서비스의 다운타임은 최소화될 수 있다. HA는 관리자가 없을지라도 운영 서버의 장애를 모니터링해 대기 서버가 처리할 수 있도록 함으로써 중단 없이 서비스를 제공하는 역할을 한다.

가. HA 기술의 원리

1) 노드 간 감시

HA 클러스터로 구성된 두 대 이상의 시스템(각각을 node라 부름)은 노드 간에 상대 시스템의 상태를 체크한다. 대개 노드 간에는 HeartBeat을 체크할 수 있는 Direct링크를 구성하여 운영하며, 하드웨어 장애(전원, CPU, 메모리, 디스크)와 네트워크 장애(랜카드, 케이블), 그리고 프로세스 장애(DB 및 각종 애플리케이션)를 감지하여 사전에 정의된 에러에 해당되면 장애노드의 모든 서비스를 내리고 대기 중인 노드에서 그 서비스를 수행한다.

2) Resource의 공유와 절체

HA 클러스터에 소속되어 대기 중인 노드는 현재 서비스를 수행하고 있는 노드의 모든 애플리케이션을 기동할 수 있어야 하므로, 서비스 디스크 볼륨(외부 저장장치)에 접근할 수 있어야 하고 서비스 ip 주소를 부여할 여분의 랜카드를 확보하고 있어야 한다. 또한 서비스를 기동할 때 필요한 프로그램과 Configuration이 완비되어 있어야 한다.

장애가 확인되면 대기중인 노드는 공유볼륨 접근을 확인하고 여분의 랜카드에 ip 주소를 할당한 후 애플리케이션을 로딩(웹서버를 띄우거나 DB를 기동하고 Listener를 여는 것 등)한다.

나. HA 클러스터링의 종류

1) Hot Standby(Active-Standby)

– 순전히 대기만을 위한 시스템 노드가 준비되어야 한다. 대기 노드는 공유 볼륨에 접근이 가능한 상태에서 필요한 경우 애플리케이션을 미리 로드해 놓을 수 있지만 서비스를 위한 접속점(ip address, listener)은 활성화되지 않아야 한다.

– 서비스 노드에서 장애가 감지되고, 그것이 사전에 정의된 절체 사유에 해당되면 대기 노드는 절체(Takeover) Procedure를 발행하면서 접속점을 열어 서비스를 시작한다.

– Hot Standby 방식에서 장애 노드의 문제가 모두 해소되었을 경우 원래 노드로 다시 서비스를 자동 절체하는 Auto Failback(또는 Failover) 기능은 서비스 특성에 따라 활성화 또는 비활성화시킬 수 있다.

– 장애 포인트가 적기 때문에 절체 성공률이 높고 절체 후 부하 처리에서 장점이 있는 반면 대기 노드의 자원(Resource)을 서비스에 활용하지 못하기 때문에 비경제적이라는 단점도 있다.

2) Mutual Standby(Active-Active)

– 복수의 노드에서 각 노드는 모두 서비스를 제공하다가 장애 노드가 발생하면 그 서비스를 다른 노드에서 병행 처리해 주는, 독립서비스 & 상호대기 방식이다. 예를 들면 node1은 웹서버로, node2는 메일서버로 사용하다가 node1에 장애가 발생하면 node2는 웹서버와 메일서버를 함께 수행하다가 node1의 장애가 해소되면 서비스를 다시 하나씩 나누어 수행한다.

– 모든 노드는 서비스 노드이면서 동시에 대기 노드 역할을 겸한다.

– 모든 노드는 대기 서비스를 실제로 서비스할 경우에 장애 노드가 복구될 때까지 부하를 감당할 수 있는 최소한의 Resource를 확보하여야 한다.

– 통상 이 방식에서 Auto Failback 기능은 사용하지 않는다.

– 모든 노드에서 서비스가 진행되기 때문에 장애 포인트가 많고 절체 후에도 부하를 감당하지 못해 다운될 수 있는 단점이 있지만 모든 시스템을 서비스에 활용할 수 있다는 경제적 장점도 있다. 무거운 서비스(DB)와 가벼운 서비스(웹, DNS)를 묶어서 구성하면 특히 효과적이다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s