반응형
서버는 클라이언트가 접근시 하나의 포트를 Open 하여 연결시켜서 작업을 시작합니다.
하지만 서버가 열수 있는 IO의 수량에는 한계가 있어서 많은 사람이 사용하는 컴퓨터에서는 문제가 발생할 수도 있습니다.
물론 서버의 IO가 최대한 열릴일은 거진 없습니다. 그전에 뻗어버릴테니...-_-;
(메모리 부족, CPU과열, 서비스가 너무 느려서 불가능등...)
그래서 나온것이 서버를 여러대 두어 동일한 서비스를 가능하도록 하며, 사용자에게는 그것을 못느끼게 하는 방안이 나왔습니다.
결론은 서버를 분할하되 그 앞부분에 그 서버의 운영을 관리할 관리자를 두는것입니다. 여기가 몰리면 저기로 가라고 하는 안내자처럼 말입니다.
(결론은 돈입니다.)
첫번째 방법으로는 DNS 라운드-로빈(Round-Robin)입니다.
라운드 로빈방식은 실제 서버의 연결 갯수나 반응시간등은 고려 하지 않으며 단순히 여러개의 서버를 순차적으로 접근을 허용해주는 방식입니다.
이 방법의 문제점은 서버의 상태를 알지 못하기 때문에 한개의 서버가 죽어도 사용자를 그쪽으로 보내는 작업을 시도 하기 때문에
단순 서버의 부화만을 줄이기가 가능합니다.
서버의 아이피가 10.1.1.2~4번까지 일경우
첫번째 사용자가 들어올 경우 10.1.1.2
두번째 사용자가 들어올 경우 10.1.1.3
... 등으로 순차적으로 서버의 주소를 배분합니다.
[참고자료1] http://wiki.kldp.org/Translations/html/Virtual_Server-KLDP/scheduling.html
두번째 방법으로는 L4 switch를 이용한 방식입니다.
L4 switch는 OSI7 Layer 중 4번째인 Transport단을 처리,이용하여 서버의 유동적인 조율이 가능하며
앞의 라운드-로빈에서 로직적으로 가능했던 방법도 지원이 가능합니다.
자세한 방법은 아래부분에 주소를 기재한 참고 자료를 이용해보세요 참고자료3 을 보시면 l4 switch에 대한 자세한 설명이 있습니다.
아무래도 중요한 서비스라면 시스템이 죽어서 접근이 안되는 걸 방지하기 위해서 요즘은 L4 switch를 많이 사용하는 추세입니다.
[참고자료2] http://tong.nate.com/wlstjs/44025328
[참고자료3] http://documents.scribd.com/docs/1mqfgkl9lnfcyxfekmr6.pdf
반응형