2011년 5월 27일 금요일

Clustering [집단화 集團化]

“복수의 입출력 장치나 단말 장치 등을 하나의 집단(다발)으로 집중 제어하여, 이들 장치 상호간에 통신할 있고 단일 통신 채널을 공유하여 컴퓨터와 통신할 있게 하는 기술.
클러스터링 환경에서는 따라서 특정 장비에 문제가 생기거나 특정 장비에서 실행중인 어플리케이션에 문제가 발생하더라도 해당 장비의 문제로 국한시키고 이것이 특정 서비스 혹은 기능전체에 영향을 미치지 않도록 제어가 가능하기 때문에 대규모 시스템 혹은 안정적인 기능의수행이 필요한 대부분의 시스템들에 채용되고 있다.

일반적인 클러스터링 구현

클러스터링을 구현하는 방법은 기본적으로 가상 IP(Virtual IP) 기반한다. 서비스를 제공하는 실제 장비는 물리적인 IP 갖고, 앞단에 가상 IP 갖는 장비를 두고 장비에서 실제장비로 데이터 처리를 혹은 요청을 중계하는 방식을 갖는다. 따라서 서비스를 위해 외부에 공개된 네트워크 접속 정보는 가상화된 IP 근거한 정보가 제공되며 내부 시스템은 철저하게가려져있는게 일반적인 원칙이다. 통상 이와 같이 가상 IP 가지고 이를 각각의 물리적인 장비에 외부에서 요청된 처리를 중계해주는 역할을 스위치 장비에서 처리를 해주며 장비는일반적인 허브등과는 차별화된 기능을 수행한다. 스위치 이외에 일반적인 장비를 이용해서 소프트웨어적인 기법으로 이를 구현할 수도 있으며 특정한 목적이 필요한 경우에는 S/W적인기법을 이용한 스위치 장비를 사용하기도 한다.

상태에 따른 클러스터링의 종류

Active/Active 모델

대의 장비를 서로 서비스에 운용하면서 장비에 있는 어플리케이션이 서로 상태 정보를 공유함으로써 장비의 활용성을 높이고 높은 Throughput 있는 구조를 나타낸다. 통상 오라클이나 J2EE 엔진등이 이런 기반 기술을 지원한다.

Active/Standby 모델

실제 서비스는 장비에서 운용하고 다른 한대는 장애 대비용 시스템으로 사용한다.  만약한 장비에서 하드웨어 혹은 소프트웨어적인 결함이 발생되면 해당 장비의 기능이 통채로 대기중인 장비로 이전되며 대기중인 장비에서 기능 수행을 위한 어플리케이션이 실행된다. ( 상황에서 장애 장비에서 실행중인 데이터 처리가 유실될 있다.)  Active/Standby모델은 어플리케이션 자체가 이중화 방식을 지원하지 못하는 경우에 사용되며 경우에도데이터 처리를 넘겨주는 S/W 필요하다.

클러스터의 구성요소

클러스터는 노드와 관리자로 구성되어 있다. 노드는 프로세싱 자원을 제공하는 시스템이고,클러스터 관리자는 노드를 서로 연결하여 단일 시스템처럼 보이게 만드는 로직을 제공한다.

클러스터노드

클러스터 노드는 클러스터의 실질적인 작업을 처리하는 것을 말한다. 일반적으로 클러스터노드는 클러스터에 속하도록 구성해야 한다. 클러스터의 역할과 업무에 따라 해당 소프트웨어는 독특하게 제작된 것일 수도 있고, 일반적인 소프트웨어 수도 있다. 역할에 따른 특정 소프트웨어라면 공학 계산을 위한 노드에 맞는 프로그램일 수도 있으며, 일반적인 소프트웨어는 로드밸런싱을 위한 클러스터라면 아파치 같은 소프트웨어를 있을 것이다.

클러스터관리자

리눅스의 커널이 모든 프로세서에 대한 스케쥴과 자원관리를 하는 것처럼 클러스터 관리자역시 이런 관리자의 역할로써 노드에 대한 자원분배 관리를 있는 기능을 가지고 있다. 기본적으로 하나의 관리자가 필요하지만 때에 따라서는 클러스터 노드가 클러스터관리자 기능을 하기도 하며, 대규모 환경의 경우에는 여러대의 클러스터 관리자가 있기도하다.

클러스터의 종류

공유 프로세싱 : HPC(High Performance Computing)

일반적으로 리눅스 클러스터링이라고 불리는 클러스터링이다. beowulf 프로젝트로도 유명하다. beowulf 여러 시스템의 프로세싱 능력을 조합하여 대용량의 프로세싱 능력을 갖는하나의 시스템을 제공한다. 이것은 원래 과학용 시스템이나 CPU 위주의 용도로 설계된 것인데, 시스템에서는 API 따라 특별히 작성된 프로그램만 자신의 작업을 여러 시스템사이에 분배할 있다. , 프로그밍을 별도로 해야할 경우가 많아진다는 것이다.

부하조정 : Load Balancing

최근에 대규모 웹사이트 구축에 필수적으로 사용되는 기술로 여러대의 웹서버 노드를 두고중앙의 관리툴에서 부하를 분산하게 해주는 기술이다. 기술의 특징은 노드 통신이 필요 없다는 것이다. 부하 조정을 이용하면 노드는 자신의 용량이나 로드에 맞게 요청을처리할 있기도 하고, 클러스터 관리자에서 할당한 양의 프로세스를 처리할 수도 있다.

Fail-Over

Fail-Over 부하조정과 비슷하다. 하지만 조금 틀린 것이 있는데 부하조정의 경우에는 모든 노드가 한꺼번에 동작을 하는 것이고, Fail-OVer 경우에는 평소엔 동작을 하지 않고Primary 서버가 문제가 발생했을 시에 백업서버로써 가동을 하는 것이다. 부하조정을 응용하면 부하조정과 Fail-Over 기능을 동시에 하게 수가 있다.

고 가용성

아무리 시스템 관리자가 뛰어난 실력을 지니고, 부지런하다고 해도, 서버는 기계이기 때문에 간혹 문제를 발생하기도 한다. 어떤 경우에는 관리자도 어떻게 없는 상황이 발생하기도 한다. 이런 경우에 최대한 가용성을 높이기 위한 방법이 바로 클러스터링이다. 이런높은 가용성을 만들기 위해 위의 Fail-Over 기술을 사용한다. 가용성은 업타임(작동가능시간) 백분율로 계산된다. 일반 서버의 경우 99% 업타임을 갖지만, 높은 가용성을 목적으로 하는 시스템은 최대 99.99% 업타임을 가질 있다. 시간은 일년을 기준으로 했을 52 미만이면 되는 수치이다. 52 다운이면 어머어마한 시간 같지만 실제로이정도의 가용성을 보이는 서버는 굉장히 중요하고 손이 많이간 서버일 것이다.

클러스터 부하조정 스케쥴링 알고리즘

Round-Robin Scheduling (라운드 로빈 스케쥴링)

그대로 라운드 로빈 방식이며, 서버의 상황이나 네트웍 상황, 모든 상황을 무시한채 단순하게 요청을 전달해주는 형태이다. 실제로 서버의 사양이 모두 동일하고, 같은 네트웍 상이라면 가장 단순하고 효율적일 수도 있다.

Weighted Round-Robin Scheduling (가중치기반 라운드 로빈 스케쥴링)

가중치란 것은 어떤 특정한 것에 가중치를 둔다는 말이다. 서버에서도 특정서버의 스펙이굉장히 뛰어나다던지 아니면 다른 서버보다 기타 환경이 나아 많은 요청을 전달하고 싶을 해당 서버에 가중치를 주어 많은 요청을 처리할 있도록 하는 방식이다. 가중치가 있는 라운드 로빈 스케쥴링을 사용하면 실제 서버에서 네트웍 접속을 필요가 없고 동적 스케쥴링 알고리즘보다 스케쥴링의 과부하가 적으므로 많은 실제 서버를 운영할 수있다. 그러나 요청에 대한 부하가 매우 많을 경우 실제 서버사이에 동적인 부하 불균형 상태가 생길 있다.

Least-Connection Scheduling (최소 접속 스케쥴링)

최소 접속 스케쥴링은 가장 접속이 적은 서버로 요청을 직접 연결하는 방식을 말한다. 각서버에서 동적으로 실제 접속한 숫자를 세어야하므로 동적인 스케쥴링 알고리즘중의 하나이다. 비슷한 성능의 서버로 구성된 가상 서버는 아주 요구가 서버로만 집중되지 않기 때문에, 접속부하가 매우 경우에도 아주 효과적으로 분산을 한다. 가장 빠른 서버에서 많은 네트웍 접속을 처리할 있다. 그러므로 다양한 처리 용량을 지닌 서버로 구성했을 경우에도 훌륭하게 작동 한다는 것을 한눈에 있을 것이다. 그렇지만 실제로는TCP TIME_WAIT 상태 때문에 아주 좋은 성능을 수는 없다. TCP TIME_WAIT는보통 2분이다. 그런데 접속자가 아주 많은 사이트는 2분동안에 몇천개의 접속을 처리해야 경우가 있다. 서버 A 서버 B보다 처리용량이 두배일 경우 서버 A 수천개의 요청을 처리하고 TCP TIME_WAIT 상황에 직면하게 된다. 그렇지만 서버 B 몇천개의 요청이 처리되기만을 기다리게 된다. 그래서 최소 접속 스케쥴링을 이용할 경우 다양한 처리용량을 지닌 서버로 구성 되었을 경우 부하분산이 효율적으로 되지 못할 있는 것이다.

Weighted Least-Connection Scheduling (가중치 기반 최소 접속 스케쥴링)

가중치 기반 최소 접속 스케쥴링은 최소 접속 스케쥴링의 부분으로서 각각의 실제 서버에 성능 가중치를 부여할 있다. 언제라도 가중치가 높은 서버에서 많은 요청을 받을수 있다. 가상 서버의 관리자는 각각의 실제 서버에 가중치를 부여할 있다. 가중치의 비율인 실제 접속자수에 따라 네트웍 접속이 할당된다. 기본 가중치는 1이다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...