서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

YoonWould!!

<인턴생활>/[인프라]

[용어]HA, 클러스터링, 이중화, RAID란 무엇인가?

Hading 2019. 4. 15. 16:48

HA (High Availability : 고가용성, 고가용도)

가용성은 시스템 고장 발생 시 얼마나 빠른 시간내에 치료가 되어 다시 정상적으로 서비스할 수 있는 상태인지를 분석하는 척도 입니다. 따라서 HA 구성이란 이러한 가용성을 극대화 시키는 구성을 말하는 것으로서 '클러스터링, 이중화, RAID'는 범위로 보면 HA 를 이루기 위한 방식이라 볼 수 있습니다.

하나의 컴퓨터 시스템이나 네트워크는 전체의 운영을 위해 모두가 사용 가능한 상태로 있어야만 하는 수많은 부품으로 구성되어 있기 때문에 HA를 구성하기 위한 계획은 '백업'이나 '장애극복 처리' 및 '데이터 저장' 및 '엑세스'에 집중되어 있습니다.

저장 장치의 경우 RAID가 그 중 하나의 접근방법이며 SAN 같은 방법을 이용합니다.

고 가용성 전문가들은 만일 어떤 시스템에 HA가 요구된다면 그 시스템의 모든 부분이 잘 설계되고 실제 사용전에 완전하게 시험이 되어야 한다고 강조합니다.

클러스터링 (Clustering)

클러스터링이란 서버를 하나의 시스템처럼 관리 운영하기 위해 사용하는 기술 입니다. 클러스터 시스템의 응용분야는 고가용성 클러스터 시스템, 고성능 클러스터 시스템, 웹서버 클러스터 시스템이 있습니다.

고가용성 클러스터 시스템이란 PC또는 서버를 연결하는 목적이 가용성을 높이기 위한, 즉, HA를 높이기 위한 것을 얘기하는 것이고 고성능이나 웹서버 또한 비슷하게 이해될 수 있습니다.

MS 2003 제품군에서 제공하는 클러스터 서비스는 MSCS(Microsoft Cluster Service)라고 합니다.

Windows 2003 Enterprise Edt. 와 Datacenter Edt. 에서만 사용할 수 있는 이 서비스는 DB, 메시징 시스템, 파일 및 인쇄 서비스등 중요한 응용 프로그램에 뛰어난 가용성과 확장성을 제공합니다. 또한 클러스터에 있는 여러 서버 (노드 : node) 간의 통신은 안정적으로 유지됩니다.

오류나 유지관리 작업으로 인해 클러스터의 노드 중 하나가 사용되지 않는다면 즉시 다른 서버(노드)에서 장애조치 서비스를 제공하기 시작합니다.

이 서비스에 대한 ACCESS가 끊이지 않고 계속 지원됨으로 사용자는 장애사실을 알 수 없습니다.

상용서비스를 위한 제약사항이 있습니다.

1. AD Server (Active Directory Server)가 구성이 되어 있어야 합니다.

2. DB 및 파일서버에는 최소한 Raid 2 ~ Raid 5 가 구성되어 있어야 합니다.

3. DNS가 되어 있어야 합니다.

이중화 (Duplex 또는 Duplication)

HA를 높인다는 표현을 많이 하는데 어떻게 하면 될까요? 가장 기본적인 방법은 이중화(Duplication)를 구현하는 것입니다.

서버를 한대만 두는 것이 아니라 두대를 두는 것이죠? 이 경우 두대로 동시에 서비스를 할 수 도 있고 한대만 서비스를 하고

다른 한대는 여분으로 두었다가 한대에 장애가 발생하면 여분이 동작하게 하는 방법이 있습니다.

전자를 HOT이라고 하고 후자를 COLD라고 합니다.

레이드 (RAID : Redundant Array of Inexpensive Disks)

Inexpensive와 Independant가 혼용되어 사용됩니다.

RAID는 하드디스크 다시 말하면 저장장치를 이중화 (Duplication) 시키는 방법 입니다. 서버를 이중화 시키는 방식도 있지만

하드 디스크를 이중화 시킬 수 도 있습니다. 목적은 서버를 이중화 시키는 것과 유사합니다.

저장장치의 Fault로 인한 가용성 감소를 막기위하여 저장장치를 중복으로  구성해서 가용도를 높이기 위함 입니다.

이는 메커니즘에 따라서 RAID0 부터 RAID5까지 다양한 방식이 있습니다.

간단히 설명하면 RAID 1 (미러링 : Mirroring)은 물리적으로 두개의 하드디스크를 하나로 잡아줍니다. 하나에 기록하면

다른 하드디스크에 똑같은 사본이 저장됩니다.

RAID는 0,1,5만 기억하시면 됩니다.

1. RAID 0 (스트라이핑 : Striping)

2. RAID 1 (미러링 : Mirroring)

3. RAID 5 (스트라이핑 + 패러티 : Striping + Parity)

RAID 0 (Striping) 은 스트라이핑은 하드 디스크 여러개를 묶어서 하나처럼 쓰는 기술입니다.

대용량 디스크를 만들 수 있고 분리해서 읽고 쓰기 때문에 속도 또한 빨라 집니다.

DISK 0, 1, 2를 RAID 0으로 구성하면 읽고 쓰는 속도가 3배는 빨리 집니다.  단점은 하드 디스크 하나가 Fault가 나면 전부 다 날라갑니다.

이를 보완하는 것이 RAID 5 (Striping + Parity) 입니다.

RAID 1 (Mirroring)은 철저한 장애대비용 입니다. 똑같은 걸 두개 이상의 하드 디스크에 저장하는 것 입니다.

DISK 0, 1, 2를 RAID 1으로 구성하면 셋중에서 두대가 Fault가 나도 관계 없을 겁니다.

※ 실제 필드에서는 RAID 10 (Mirroring + Striping)을 많이 사용합니다.

RAID 5 (Striping + Parity)는 RAID 0 (Striping)과 패러티(Parity)를 합친 것 입니다.

Parity Drive는 쉽게 말해서 RAID 0으로 데이터를 분산시켜서 구성하는데 RAID 0의 단점을 보완하기 위해

복구용 정보를 보관하는 드라이브 입니다. 하나라 Fault가 나는 경우 복구가 불가능한 RAID 0의 단점을 보완하는 것이죠

[출처] HA, 클러스터링, 이중화, LAID란 무엇인가?

Clustering이란 두대 이상의 서버가 하나의 서버가 처리하는 것처럼 보이도록 서버들 간의 확립된 연결(Establishing Connectivity) 입니다. 이 클러스터링은 장애 대응 시스템(fail-over), 부하분산(load balance) 시스템 혹은 병렬처리 프로세싱에 사용될 수 있는 기술입니다.

한 예로, 장애 대응 시스템의 클러스터링은 응용프로그램과 서비스의 고가용성(High-Availability)을 유지하기 위해 동시 작동하는 서버들의 집합입니다.  예를 들어 어떤 이유에서 하나의 노드에 장애가 생기면 다른 노드는 그 처리를 받고 사용자에게 무중단의 서비스를 제공합니다.

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Clustering Diagram

클러스터 관리는 별도의 서버에서 수행되며 두 노드를 관리합니다. 이 관리서버는 주기적으로 두 노드에 상태 점검(Hearbeat)하여 하나의 노드에 장애가 발생시 다른 노드로 부하를 이전하는(Fail-Over) 역할을 수행합니다.

클러스터를 사용하려면 <업계에서 사용하는 클러스터링의 종류, 장단점을 알아야 합니다.

클러스터링의 장점

  • 클러스터링은 확장가능한 솔루션입니다. 이는 나중에도 자원을 추가할 수 있습니다.
  • 또한 Fail-over의 기본 속성이 있어 서버 작업 시 무중단으로 작업이 가능합니다.

클러스터링의 단점

  • 비용이 매우 높습니다. 하드웨어의 고 사양과 평범하지 않는 설계는 더 많은 비용이 요구되지만 비용대비 효과는 더 크게 작용합니다.
  • 더 많은 서버는 모니터링과 유지보수의 어려움으로 더 많은 비용이 발생합니다.
    노드간 데이터 동기화 등의 이유로 노드의 처리량도 non-clustering 보다 더 많은 부하가 발생합니다.

근래 컨설팅 중 HA를 위해 시스템 이중화한 사례를 소개할까 합니다.

WEB, WAS, DB는 A(Active)/A 구조로 tire간 클러스터링 구조이며 서비스를 위한 Daemon은 A/P(Passive) 구조입니다. 이로 인해 L4는 A/P 구조이며 SVC의 Daemon을 감지하여 A/P 방식으로 트래픽을 제어합니다.

결과적으로 Active SVC1는 L4로 트래픽을 보내 재귀호출 하는 방식이 되어버립니다. 서버 자체적으로 해결할 수 있는 프로세싱이 불필요 트래픽과 부하가 발생하게 됩니다.

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

서비스 flow

이를 보완하기 위해 HA Cluster 구성을 위한 여러 솔루션 중 본 글에서는 요즘 OpenSource에 사용중인 “Pacemaker”를 다뤄보겠습니다.

Pacemaker는 Cluster 관리를 위해 근래 apache storm, openstack 등에 사용하는 분산 코디네이터 입니다.

Pacemaker 는 크게 5가지 기능이 있습니다.

  • 응용프로그램 모니터링 및 제어기능 : 프로세스(리소트 에이전트:RA)를 모니터링 하고 제어합니다.
  • 네트워크 모니터링 및 제어기능 : 클러스터 노드에 주기적으로 ping을 전송하여 연결 상태를 모니터링 합니다.
  • 노드 모니터링 기능 : Heartbeat을 이용하여 노드를 모니터링하고 STONITH(Shoot The Other Node In The Head : Fencing Daemon) 기능은 통신 불가한 노드의 전원을 가제로 중지하여 split-brain(클러스터 내의 모든 노드들은 자신이 Primary 노드라고 인식하여 네트워크의 일시적 단절, 과반수 이상의 노드가 장애를 일으키는 현상)을 피합니다.
  • 자기 감시 기능 : Pacemaker 관련 프로세스 감시합니다.
  • 디스크 모니터링 및 제어기능 : 지정된 디스크 읽기를 정기적으로 실시, 액세스 상태를 모니터링 합니다.

그 외에 다양한 구성의 HA 클러스터에 대응합니다.

  • 서비스 수준의 실패 시 노드와 서비스를 탐지하고 복구합니다.
  • 공유 스토리지가 필요없이 스토리지에 종속되지 않습니다.
  • 스크립트로 클러스터링 할 수 있다면 어떠한 서비스에도 종속되지 않습니다.
  • 데이터 무결성을 보장하는 펜싱(STONITH)을 지원합니다.
  • 대형, 소형 클러스터를 지원합니다.
  • 중앙 컨트롤 형식의 quorate(quorum)과 계층구조의 resource-driven cluster 모두 지원합니다.
  • 거의 대부분의 이중화 구성을 지원합니다.
  • 자동으로 복제된 설정은 임의의 노드에서 업데이트 할수 있습니다.
  • 동일지역이나 원격지에 걸처 광범위하게 클러스터를 구성할수 있습니다.
  • 멀티 노드에서 활성화할 서비스에 대해 복제 기능 지원을 합니다.
  • 서비스에 대한 멀티모드(master/slave, primary/secondary)를 지원합니다.
  • 통합된 클러스터 관리 도구를 제공합니다.

보통 데이터 전환 방식과 노드 수에 따른 분류 두가지 방식이 쓰입니다.

데이터 전환 방식으로는 공유 구성, 비공유구성(PG-REX, twitter나 Instagram에서 사용하는 DRDB)와 노드 수에 따른 분류로는 1+1(Active/Standby구조), N+1(다수의Active노드와 하나의 Standby노드), N+M(다수의 Active노드와 다수의 Standby노드)로 분류합니다.

코어 컴포넌트는 다음과 포함합니다.

  • Pacemaker : 핵심이며, 노드의 클러스터 집합에서 상호 관련 서비스를 시작, 복구를 조정하는 분산 상태를 유지합니다.
  • Corosync : Corosync API는 노드 멤버에게 메시지(노드의 프로세스 상태)와 quorum을 제공합니다.
  • libQB : 재사용을 통해 노드의 성능을 주목적으로 하는 라이브러리 입니다. 이는 고성능의 로깅, 트레이싱, ipc, 폴링을 제공합니다.
  • Resource Agents : Pacemaker가 서비스를 관리할 수 있는 추상 개념입니다. 논리적으로 클러스터가 start, stop, 상태 점검을 위한 로직을 포함합니다.
  • Fence Agents : Pacemaker가 장애상태인 노드를 분리할 수 있는 추상 개면입니다. 노드의 전원을 끄거나 네트워크 혹은 공유 스토리지의 엑세스를 막음으로 팬싱 기능을 수행합니다.
  • OCF specification

내부 컴포넌트의 구성은 다음과 같습니다.

  • CIB : Cluster Information Base
  • CRMd : Cluster Resource Management daemon
  • LRMd : Local Resource Management daemon
  • PEngine or PE : Policy Engine
  • STONITHd : Fencing daemon
서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Pacemaker Stack

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Internal Components

Linux-HA Japan Community에는 2가지 패턴 조합을 권장하고 있습니다.

  • 근래 버전의 환경 : 리소스 제어로 Corosync 2.x, 클러스터 제어로 Pacemaker 1.1 (PCS : Pacemaker, Corosync configuration System)
  • 오래전 버전의 환경 : 리소스 제어로 Pacemaker 1.0, 클러스터 제어로 Heartbeat 3.x
  • Pacemaker와 DRDB 조합의 비용 효과적인 HA 구성입니다.
서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Active/Passive 이중화

  • 모든 노드들은 Fail-over 구성입니다.
서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Active/Active 이중화

  • Active/Passive 클러스터 구조의 공유 스토리지는 sync를 통해 하드웨어 비용절감을 상당수 절약할 수 있습니다.
서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

스토리지 Fail-over

Active/Passive 구조에서 ip, 서비스(http), storage(docurmnt root)의 HA 구성 후 fail-over 테스트에 대한 결과 간단한 예입니다.

환경 구성은 clusterlabs 사이트를 참고 하세요. http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html-single/Clusters_from_Scratch/index.html

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

시나리오 구성도

pcmk-1(Active) :  192.168.100.123, 192.168.100.122(vip)

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-1 service : http

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-1 storage : /var/www/html

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

cluster status

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

관리 리소스는 ClusterIP, WebService, WebFileSystem 입니다.

노드 pcmk-1 Active 노드에서 서비스 되고 있습니다.  Passive 노드의 ip와 서비스, 스토리지 상태를 보면

pcmk-2(Passive) : 192.168.100.124

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-2 service : http : 존재하지 않음

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-2 storage : /var/www/html : 존재하지 않음

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

장애 상황을 만들어(pcmk-1 shutdown) 리소스들이 모두 fail-over 되는지 확인합니다.

pcmk-2에서 pcmk-1로 ping 테스트

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-2 IP : 192.168.100.124, 192.168.100.122(vip)

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-2 service : http

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

pcmk-2 storage : /var/www/html

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

cluster status

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

관리 리소스 ClusterIP, WebService, WebFileSystem 모두 pamk-2 서버로 fail-over 되어 pcmk-2 노드가 Master 역할을 수행합니다.

예전 VCS(Veritas Cluster Server, 현재 Veritas InfoScale)라는 솔루션을 다뤄본 적이 있습니다. Pacemaker가 상용 제품의 세세한 기능까진 포함하지 않지만 소규모 단위의 클러스터링 구성은 pacemaker만으로도 충분한 구성이 가능합니다. 현재 twitter나 instagram의 대용량 서비스(deep-dive한 구성은 필수), snapshot버전이지만 Apache Storm, OpenStack(Control Node)에 적용으로 SOA, MSA의 loose coupling 구조에서의 유연한 scaling 아키텍처에 만족할 만한 저비용 고성능 HA 솔루션이 아닐까 합니다.

[참고사이트]

  • http://clusterlabs.org
  • http://linux-ha.osdn.jp/
  • http://www.tecmint.com

namoosori

안녕하세요. 나무소리 입니다. 나무소리는 넥스트리(주)의 교육 브랜드 입니다.넥스트리가 지난 20년 동안 쌓아온 개발 및 교육 경험들을 나무소리를 통해 많은 분들과 공유 하려고 합니다.앞으로 저희 나무소리를 통해 보다 나은 교육을 경험 하실 수 있도록 구성원 모두 최선을 다하겠습니다.

서버 이중화 클러스터링 - seobeo ijunghwa keulleoseuteoling

Subscribe to Nextreesoft

Get the latest posts delivered right to your inbox

Great! Check your inbox and click the link to confirm your subscription.

Please enter a valid email address!