블로그를 보시면 알겠지만, 저는 메일쪽을 관련하는 일을 하고 있는 엔지니어입니다.
메일 (simple mail transfer protocol) 이라고 하면 정말 단순 명확했으면 좋겠지만,
전혀 심플하지도 않고, 복잡하기만 합니다. (는 잡설이구요...)

자 오늘 해볼 이야기는 HA를 구성하면 가장 문제가 되어질수 있는 스토리지단입니다.
(흠 오늘글은 조금 즉흥적인글이니 양해를 부탁 드리겠습니다)

일본 헤테나를 예를 들면 NFS를 통해서 스토리지 공유를 한다...(라고 써 있더군요)
근데 이 스토리지라는게 정말 광범위해서 어떻게 쓰이느냐에 따라서 어떻게 구성을 해야할지가 정말 중요합니다.

만약! db서버 이중화를 한다면 db이중화도 결국은 스토리지를 이중화 할것이냐 (물론 db이중화가 스토리지:파일시스템 으로 이중화가 되어질수만 있다면 정말 획기적이겠지만 그렇지 못합니다) 이부분은 차츰 나중에 이야기를 해보도록 하겠습니다 (갑자기 db이중화 이야기가 나오니 어려워지는군요)

저는 엔지니어 커뮤니티 사이트를 운영하고 있습니다.
이것은 엔지니어들만의 공간으로 많은 자료를 담고 있는데 이제 운영을 하다보니 상당히 중요한 위치에 서게 되었습니다. 그러다보니, 자연스럽게 이중화 이야기가 나왔습니다.

자 서버는 있습니다. 하지만 A서버가 죽었을때 B서버에서 어떻게 해당 내용을 전달할것이냐가 문제입니다.

방법은 여러가지가 있습니다.
1. rsync로 주기적으로 동기화를 시킨다던지
2. lsync로 실시간으로 동기화를 시킨다던지....(rsync의 변형형태로 좁은범위내에서는 상당히 유용합니다. 단! rsync와 비슷하므로 100% 동기화라고 보장하지 못합니다)
3. 디스크를 공유시키던지 (NFS던 GFS던...무엇이든 파일 시스템을 만든다면)

여기서 가장 중요한건 A서버가 죽었을때 B서버는 놀고 있다는 의미입니다.
이런경우에는 1/2번이 가장 저렴한 방법으로 HA를 구성할수 있는 방법일것입니다.

하지만, A/B서버가 동시에 job을 처리한다면 2번과 3번을 예의 주시해야합니다.
2번과 같은경우는 network상황이나, 서버의 상황에 따라 틀리지만, 1분 이내 (사이즈가 작고 사용량이 없다면) 2번케이스를 사용이 가능할것입니다.

하지만 진심으로 한다면 무엇인가 다른 File System이 필요하다는 결론입니다.
HA가 Active-Stand by의 구조도 있지만 정말 고가용성이 되어지는 active-active구조가 되어질것입니다.

앞단 두대의 서버에는 레알(?) 서비스 데몬들만 올라가고 최소한의 디스크로 서비스가 되어집니다. (앞단 장비 퍼포먼스가 빵빵하겠지요? 저같으면 SSD넣겠습니다.) 그리고 이 서버들은 SAN, NAS등의 디스크를 서로 공유하여 사용합니다.

3번의 경우가 발생되었습니다.
이러한 경우에 파일시스템 선택과, 공유스토리지운영 방법이 이슈가 되어질것입니다.
그리고 앞서 말했던 DB이중화 이야기도 슬슬 나올수가 있습니다.

디스크는! 단순 데이터를 저장하는 매체입니다.
하지만 앞단 서비스가 단순 apache를 통해서 html만 보여주는것이라면 상관이 없겠지만, 뭔가를 양쪽 서버에서 동시 다발적 한 파일에 write를 해야합니다.

"응? 그까이꺼 그냥 write하면 되지?"

라고 생각하시면 안됩니다.
nfs서버에는 nfslock라는 데몬이 있습니다. 이것이 바로 file lock을 컨트롤 하는 녀석입니다. (NAS역시 동일하기때문에 생략합니다, 단 SAN은 네트워크 스토리이지 공유스토리지가 아님을 명심해야합니다)

그럼...............
A서버에서 서로 다른 데몬이 a.out의 파일에 write하는 경우의 kernel이 하는짓과
A서버 B서버에서 서로 다른 데몬이 공유스토리지에 a.out의 파일에 write하는짓의 차이점중 둘중 하나만 이해하시면 제가 말하고자 하는 스토리지와 파일 시스템의 정의가 무엇인지 알게 되어질것입니다.

(To Be continue)
저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

도대체 고가용성이 뭐냐?
라고 묻는 분들이 있습니다. 그런 분들을 위해서 가장 간단하고도 심플한 구조에 대해서 언급을 하고자 합니다.

제일 단순한 구조는 Active - Stand by구조입니다.
몇몇가지 demon과 script만 짤 능력이 한번쯤은 해볼만한 작업일것입니다.

1. 가장 단순한 구조

인터넷 망----------Active Server (운영서버)
                    |
                    ------Stand by Server (휴면상태의 서버)

단순합니다... 위 구조가 Active - Stand by서버의 기본입니다.

조건은 아래와 같습니다.
1. 사용자는 운영서버로 접근을 하여 일을 처리한다.
2. 휴면상태 서버는 평소때에는 놀고 있다. (결국은 놀고 있다는 소리)

이 구조일때 Active Server에서 자기 자신의 헬스체크를 주기적으로 합니다.
만약 apache가 올라가져 있는 서버라고 할때, curl툴을 사용하여 정상적인 응답을 주는지에 대한 확인을 하면 되어집니다. (curl 툴이 아니라 script로 짠 프로그램도 가능합니다) - 나중에 이야기가 되어지겠지만 이 부분은 대부분은 L4에서 되어집니다. (DNS가 될수도 있습니다)

Active-Stand by의 Fail Over
1. 누군가는 헬스 체크를 하고 있어야 한다. (운영서버이던, 휴면서버이던)
2. 헬스 체크를 하여 Fail (장애)가 발생되어지면 Active Server는 모든 서비스를 중단하고 휴면상태 서버가 Active로 올라가야한다.
3. Active Server가 내려갈때 IP addr주소가 변경되어져야 한다 (임시 아이피?식으로)
4. Stand By가 올라갈때에는 IP addr주소가 Active 서버의 주소를 가져온다

FailOver만 보았을때 어떤 프로그램을 사용해야하고, 어떤 스크립트가 필요한지 감이 올것이라고 생각합니다.
순서는 아래와 같습니다.

1. Active Server Fail(장애발생)
2. Active Server Service stop && IP ADDR 변경
3. 1/2번 동작이 완료가 되어지면 Stand by서버는 Event값을 받아 IP Addr 주소 인계 (Active서버의)
4. 여기부터 Stand by서버가 Active서버가 되어지면서 Service up

=======================================================================================

단순하게 생각하면 위 구조가 HA가 되어지는 가장 기본적인 구조일것입니다.

여기에는 사실 많은 문제가 존재하고 있습니다.
1. data의 공유는 어떻게 처리할것인가?
2. IP주소 인계는 어떻게 할것인가? (서비스 이전)
3. Service Fail check는 어떻게 할것인가?

말씀 드리지만 이것은 가장 기본적인 구조를 설명하기 위한 방법입니다.
이러한 식으로 고가용성(HA) 구성을 진행해 나가는것입니다.

이에 대한 script / demon 는 별도로 제공하지 않겠습니다.
왜냐하면 추후에 위 관련되어진 데몬들, configure, Service health Check에 관련되어진 내용이 나타나기때문입니다.

한줄 요약하자면 이렇습니다.
서비스 장비가 죽어버리면 휴면상태 서버가 서비스를 진행하면 된다!

잠깐짬을 내어 Active - Stand By에 대해서 언급을 하였습니다. 가장 기본이 되어지는 구조이니 이해될때까지 3번만 반복하시면 될것입니다
저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

고가용성을 확인하면서 여러가지를 고민을 했습니다.
사실 고가용성....말부터가 야리꾸리 한것이 쉽게 접근할수 없는것이 사실이고...

장비도 비싸면서 평소때에는 개뿔도 없고...(응?)
장애 터지면 더 단일서버보다 더 골치 아픈것이 고가용성입니다.

안정화가 되어진 시스템에 고가용성을 도입한답시고, 더 큰장애를 일이키는곳을 보아온지라, 만약 단일장비로도 충분한 여유가 있다면 단일장비로 버티는것이 어떨까하는 의견입니다...
(이 부분은 개인적인 견해이므로 무시하셔도 됩니다. 그냥 제 경험이 그렇다는것이니까요)

고가용성 cata.는 Network, Kernel, Application, Prog. 등 여러가지가 복합적으로 결합되어져 나타는 부분인지라, 카타를 설정을 해두고, 실제 운용글들은 각각에 맞는 Cata.에 넣을것입니다.

그 중 몇가지 사전 지식을 확인을 하는 차원입니다.

1. Network 지식 (L4, L7이 무슨짓을 하는녀석인지)
2. Linux Network를 주무를수 있는지 (VIP)
3. demon setting가능 여부 (IPVS, keepalivecd 등과 같은것들) - 아파치, 삼바, mysql, Java등도 포함됩니다.
4. 그리고 잡식 (....잡다한 지식....이건 답이 없네요...낄낄)

등의 지식을 알고 진행이 되어집니다.

첫번째로, Network부분부터 진행이 되어질것이며, 네트워크로부터 모든 고가용성이 시작이 되어진다고 생각하여도 과언이 아닐것으로 판단이 되어집니다.

두번째로, config수정 부분 (각종 프로그램 설치 가이드는 제공여부가 확실치 않습니다. 저도 테스트 환경이 부족한것은 사실이며, 이 부족한 테스트 환경을 벗어날수가 없기에)

세번째로, 잡식입니다.
사실 위 두가지를 진행하다보면 Kernel을 수정해야하는 경우도 생길것이고 (튜닝이던 혹은 프로그램 수정이던간에), 꼬우면 프로그램도 짜야합니다. (script language던 C이던) 에러코드에 대한 정확한 원인 분석도 해야합니다. 이 에러코드를 찾다보면 또 다시 원점으로 돌아가 Kernel을 뜯어본다던지 하는 불행한 경우가 생기거나, Network Packet를 분석해야할일도 분명 생길것입니다.

순서는 랜덤으로 진행을 하며 저도 "서버/인프라를 지탱하는 기술"과 제 잡식을 섞어가면서 글을 올릴수 있도록 하겠습니다. 진행은 총 3~6개월정도가 되어질것으로 보여집니다.
저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

고가용성으로 넘어가면서 이중화 구성이니(?), HA구성이니(?), L4가 어쩌구 저쩌구......

사실 실전으로 투입되어지기 전까지는 알기가 어려운 내용이기도 이중화와 관련되어진 이야기는 여러군데에서 나온다

1. 장비 이중화 (H/W)
2. 어플리케이션 이중화 (APP)
3. data이중화 (...? mysql이나 oracle과 같은?)

HA구성역시도 마찬가지이다..

여러가지 구성방안이 있고, 사실 실습전에는 뭐라고 이야기하기도 어려운 내용인지라 어찌 풀어나가야할지 고민스럽기도 한 부분이지만, 내가 아는 범위 ~ 혹은 책자를 통해서 이중화 이야기를 써 내려가볼려고 한다.

아직 분류도 없어서 뭐라고 쓰기에 어렵지만..
요즘 다들 고가용성에 눈을 돌리다보니 한번 읆어 내려가봐야겠다.

어떤 이중화 방법이 있는지와, 어떤 구성이 가능한지에 대해서
(사실 나도 책을 보고 공부를 하면서 하는부분이라...-_-;)
저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

티스토리 툴바