3부 9장 네임 서버, 로드밸런싱(최신기술)
DNS서버
DNS서버는 ip와 이름을 관리하는 전용 서버이고, 트리형태로 도메인 이름을 저장하고 있다.
로컬네임 서버가 작동하는 순서
1.주소창에 www.nate.com 을 입력
2.리눅스에서 etc/resolv.conf 파일을 열어 로컬네임서버 ip를 찾아서 (전화번호 찾기 위해 114찾는 중)
3.그래서 서버에 nate 물어봄.
4.로컬 네임서버는 1.ROOT네임서버 찾아보기, 2. COM네임서버 찾아보기(트리구조 아닌듯), 3.nate.com네임 서버 찾아보기(여기서 찾게됨)
5.클라이언트에게 nate.com 관련 ip 주소를 알려주게됨.
이 네트워크 분배방식에 대한 내용 있음.
로드 밸런싱(Load Balancing)
- 서버에 가해지는 부하를 분산해주는 장치 또는 기술
- 클라이언트와 서버풀 사이에 위치해 한 대의 서보로 부하가 집중되지 않도록 트래픽을 관리
- 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 관리
- 스케일 아웃으로 시스템 확장을 했다면, 반드시 동반되어야하는 기술
1) 로드 밸런싱 알고리즘
(1) 라운드 로빈 방식(RR, Round Robin)
- 서버에 들어온 요청을 순차적으로 배정
- 각 서버가 동일한 스펙을 가지고 있고, 세션이 오래 지속되지 않는 경우에 적합
(2) 가중 라운드로빈 방식(Weighted Round Robin)
- 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 우선적으로 배정
- 각각의 서버의 트래픽 처리 속도가 상이한 경우에 적합
(3) IP 해시 방식(IP Hash)
- 클라이언트의 IP 주소를 해시 함수를 통해 특정 서버에 매핑
- 사용자가 항상 동일한 서버로 연결되는 것을 보장
(4) 최초 연결 방식(Least Connection)
- 요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 우선적으로 배정
- 서버에 분배된 트래픽이 일정하지 않은 경우 적합
(5) 최소 응답시간 방식(Least Response Time)
- 서버의 현재 연결 상태와 응답시간을 모두 고려해 트래픽 배분
2) 로드 밸런서 종류
- OSI 7 계층에 따라 L1 로드밸런서부터 L7로드 밸런서까지 존재
- L4 로드밸런서부터 포트 정보를 바탕으로 로드를 분산하는 것이 가능하므로 L4와 L7이 가장 많이 활용
- 한 대의 서버에 다수의 서버 프로그램을 운영하는 경우 최소 L4 이상의 로드밸런서를 사용해야함
(1) L4 로드밸런서
- 네트워크 계층(IP)이나 전송 계층(TCP, UDP)의 정보를 바탕으로 로드 분산
- IP 주소, 포트번호, Mac 주소, 전송 프로토콜에 따라 로드 분산
(+) 데이터를 확인하지 않고 패킷레벨에서만 로드를 분산하기 때문에 빠르고 효율적
(+) 데이터의 내용을 복호화할 필요가 없으므로 안전
(+) 저렴
(-) 섬세한 라우팅 불가
(-) 사용자의 IP가 수시로 바뀌는 경우 연속적인 서비스 제공 불가
(2) L7 로드 밸런서
- 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산
- HTTP 헤더, 쿠키 등과 같은 사용자 요청을 기준으로 특정 서버에 트래픽 분산 가능
- 즉, 패킷의 내용을 확인하고, 그 내용에 따라 로드를 분산 가능
(+) 클라이언트의 요청을 보다 세분화해 서버에 전달
(+) 캐싱 기능 제공
(+) DOS같은 비정상적인 트래픽을 필터링할 수 있어 안전성이 높음
(-) 패킷 내용을 복호화 해야하므로 높은 비용
(-) 클라이언트와 로드밸런서가 인증서를 공유해야하기 때문에 보안상의 위험이 존재