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)를 묶어서 구성하면 특히 효과적이다.

소프트웨어의 신뢰성


소프트웨어의 신뢰성이란 표현을 간간히 듣는다. 소프트웨어가 얼마나 믿을만한가에 대한 표현을 그렇게 한 것이라고 생각한다.

신뢰성 하면 고장 및 고장율이 관련이 있다.

그런데, 소프트웨어에는 고장 상태라는 것이 존재하지 않는다. Logic자체가 개발자 혹은 사용자가 의도한 대로 동작하지 않아서 사용자 관점에서 보기에는 오류라고 생각할 수는 있지만, 실제로는 그 Logic은 개발자가 그렇게 행동하도록 시킨 것이다.

소프트웨어 관점에서 잘못된 동작은 두가지의 경우가 있을 수 있는데, 첫번째는 의도하지 않은 로직 오류, 두번째는 하드웨어의 고장이 소프트웨어에 영향을 미쳐서 발생하게 되는 로직의 오류이다.

이 두가지의 오류들은 소프트웨어 관점에서 봤을 때, 고장이라고 판단할 수 없으며 machine은 충실하고 묵묵하게 시키는 대로만 동작할 뿐이다.

이런 관점에서 봤을 때, Software FMEA를 하는 것이 어떤 의미가 있을까 싶기도 하다…그런 행위 자체가 실제로는 system과 관련있는 FMEA를 좀 더 depth있게 하려고 하는 것이 아닐까? 소프트웨어에는 고장(F)이란 없으니까 말이다. FM가 없으니 EA를 할 필요가 없는 것이다.

결론.

  • 소프트웨어는 고장을 일으키지 않는다. 고장은 하드웨어 및 시스템, 서비스 관점에서는 적절할 수 있으나, 소프트웨어 관점에서는 적절한 표현은 아니다.
  • 소프트웨어에 신뢰성이란 표현은 자제했으면 좋겠다.

메타인지


EBS 다큐 프라임에 나왔던 글에서 메타인지에 대한 내용이 있어서 검색을 해봤더니, 네이버캐스트에 좋은 글이 있어서 소개하고자 한다.

 

네이버캐스트

 

내용을 그대로 인용(스크랩)하려고 했는데,  말미에 저작권… 되어 있길래.. 소심하게 링크만 걸어둠..

 

관련 문헌

1. Flavell, J. H. (1979). Metacognition and cognitive monitoring. American Psychologist, 34, 906-911.

2. Reder, L. M. & Ritter, F. E. (1992). What determines initial feeling of knowing? Familiarity with questionterms, not with the answer. Journal of Experimental Psychology: Learning, Memory, and Cognition, 18, 435–451.