[Network] 12회차 스터디
『IT 엔지니어를 위한 네트워크 입문』 책을 읽고 정리하는 스터디입니다.
이번 주는 12장을 읽어온 후 스터디를 진행했습니다.
일시 : 2023년 5월 1일(월) 비대면 진행
스터디장 : 우다현(C)
작성자 : 참여자 모두
참여자 : 우다현(C), 김수민(M), 김민석(M), 이채민(M)
1. 우다현
새롭게 알게 된 점
- 부하 분산이란?
- 서비스 규모가 커지면 물리나 가상 서버 한 대로는 모든 서비스를 수용할 수 없게 된다.이런 문제점을 해결하기 위해 L4나 L7 스위치라는 로드 밸런서를 통해 부하를 분산한다.
- 로드밸런서에는 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 서비스 요청을 분산시켜 부하를 분산한다.
- 로드 밸런서에는 서비스를 위한 가상 IP(VIP)를 하나 제공하고 사용자는 각 서버의 개별 IP 주소가 아닌 동일한 가상 IP를 통해 각 서버로 접근한다.
- 방법
- 로드밸런서도 부하를 다수의 장비에 분산시키기 위해 가상 IP 주소를 갖게 된다.
- 서비스를 제공하는 서버의 IP인 리얼 IP(RIP)와 로드 밸런서에서 서비스를 대표하는 VIP가 있다.
- VIP에는 리얼 IP가 바인딩되어 있고 사용자가 VIP로 서비스를 요청하면 해당 VIP에 연결된 리얼 IP로 해당 요청을 전달한다.
- 서비스를 제공하는 서버의 IP인 리얼 IP(RIP)와 로드 밸런서에서 서비스를 대표하는 VIP가 있다.
- 로드밸런서도 부하를 다수의 장비에 분산시키기 위해 가상 IP 주소를 갖게 된다.
- 헬스 체크
- 로드 밸런서에서는 부하 분산을 하는 각 서버의 서비스를 주기적으로 헬스 체크해 정상적인 서비스 쪽으로만 부하를 분산하고 비정상적인 서버는 서비스 그룹에서 제외해 트래픽을 보내지 않는다.
- 서비스 그룹에서 제외된 후에도 헬스 체크를 계속 수행해 다시 정상으로 확인되면 서비스 그룹에 해당 장비를 다시 넣어 트래픽이 서버 쪽으로 보내지도록 해준다.
- 방식
- ICMP
- TCP 서비스 포트
- TCP 서비스 포트 : Half Open
- HTTP 상태 코드
- 콘텐츠 확인
- 주기와 타이머
- 로드 밸런서에서는 부하 분산을 하는 각 서버의 서비스를 주기적으로 헬스 체크해 정상적인 서비스 쪽으로만 부하를 분산하고 비정상적인 서버는 서비스 그룹에서 제외해 트래픽을 보내지 않는다.
- 부하 분산 알고리즘
- Round Robin
- Least Robin
- Weighted Round Robin
- Weighted Least Connection
- Hash
- 로드 밸런서 구성 방식
- 원암 구성
- 로드 밸런서가 중간 스위치 옆에 연결되는 구성
- 서버로 들어가거나 나오는 트래픽이 로드밸런서를 경유하거나 경유하지 않을 수 있다.
- 인라인 구성
- 서버로 가는 경로 상에 로드 밸런서가 연결되는 구성
- 트래픽이 흐르는 경로에 로드 밸런서가 있어서 서버로 향하는 트래픽이 로드 밸런서의 서비스를 받는지 여부와 상관 없이 로드 밸런서를 모두 통과한다.
- 원암 구성
- 로드 밸런서 동작 모드
- 트랜스패런트 모드
- 로드 밸런서가 OSI 2계층 스위치처럼 동작하는 구성이다.
- VIP 주소와 실제 서버가 동일 네트워크 사용
- 라우티드 모드
- 라우팅 역할 수행
- DSR(Direct Server Return) 모드
- 사용자의 요청이 로드 밸런서를 통해 서버로 유입된 후에 다시 로드 밸런서를 통하지 않고 서버가 사용자에게 직접 응답하는 모드
- 트랜스패런트 모드
- 유의사항
- 원암 구성 동일 네트워크 사용
- 동일 네트워크에서 서비스 IP 호출
- HAProxy 설정
어려웠거나 이해하지 못한, 혹은 궁금한 점
그림으로 설명된 로드밸런서 동작 모드에 대한 이해를 더 해보려 합니다.
추가 내용
AWS의 로드 밸런싱 내용을 추가로 조사하였습니다.
로드 밸런싱이란 무엇인가요? - 로드 밸런싱 알고리즘 설명 - AWS
- 로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스입니다.
2. 김수민
새롭게 알게 된 점
- 12.1 대규모 서비스 제공을 위해 로드 밸런서는 필수 서비스이다. 로드 밸런서는 헬스 체크를 수행하여 서비스가 가능한 서버로만 요청을 분산한다.
- 12.6.3 DSR 모드 - 루프백 인터페이스 활용법
- 12.7 로드 밸런서 유의 사항 - p512 요청하지 않은 IP 주소에서 보낸 응답 패킷은 처리하지 않고 폐기한다.
- 12.8 HAProxy를 사용한 로드 밸런서 설정 - p513 HAProxy는 기존 하드웨어 로드 밸런서의 역할을 일반 서버에서 직접 수행하게 해주는 오픈 소스 기반의 소프트웨어 로드 밸런서이다. 하드웨어 로드 밸런서에서 제공되는 기능을 소프트웨어로 제공하므로 일종의 NFV(Network Function Virtualization)라고 볼 수 있다.
어려웠거나 이해하지 못한, 혹은 궁금한 점
- L7 스위치
추가 내용
- https://www.youtube.com/watch?v=hsXeDPT66Ao
- 1:51 네트워크 운영자가 서비스의 대역폭 용량을 최적화하고 최고 효율성 비즈니스에서 높은 자격을 갖춘 사용자 경험을 제공하는 현명한 결정을 내리는데 도움이 됩니다.
3. 김민석
새롭게 알게 된 점
로드밸런싱 : 서버를 분산하고 가해지는 부하를 적절하게 분산하는 작업
L4 : Transport 계층을 사용, port 기반 부하 분산
L7 : Application 계층을 사용, URL 기반 부하 분산
FWLB(Firewall Load Balancing)
: 세션을 인식하고 일정한 규칙을 이용하여 방화벽 세션을 분산하는데 한 번 방화벽을 지나갔던 세션이 다시 같은 방화벽을 거치도록 트래픽을 분산한다.
로드밸런서는 가상 IP를 만들어 부하를 다수의 장비에 분산시킨다.
로드밸런서의 VIP에 설정된 서비스 포트와 실제 서버의 서비스 포트는 반드시 같을 필요가 없다.
[헬스 체크]
ICMP를 통해 서버가 동작하는지 체크한다.
로드 밸런서에 설정된 서버의 서비스 포트를 확인하는 것이 가장 기본적인 헬스 체크 방법이다.
TCP Half Open 방식은 초기의 3방향 핸드셰이크와 동일하게 SYN을 보내고 SYN, ACK을 받지만 이후 ACK 대신 RST를 보내 세션을 끊는다.
부하 분산 알고리즘에서 해시 방식은 클라이언트가 같은 서버에 지속적으로 접속하도록 하기 위해 해시 알고리즘을 사용해 얻은 결괏값으로 어떤 장비로 부하를 분산할지를 결정하는 부하 분산 방식이다. 즉 , 세션을 유지해야 하는 서비스에 적합한 분산방식이다.
로드 밸런서의 구성 방식은 2가지가 있다. 원암 구성, 인라인 구성
원암 구성 : 로드 밸런서가 중간 스위치 옆에 연결되는 구성
- 부하 분산을 이용할 때 로드 밸런서를 경유하고 이용하지 않을 때 경유하지 않는다.
인라인 구성 : 서버로 가는 경로 상에 로드 밸런서가 연결되는 구성
- 모든 트래픽이 로드 밸런서를 경유한다.
로드 밸런서 동작 방식 3가지
- 트랜스패런트 : 로드 밸런서에서 서비스하기 위해 사용하는 VIP 주소와 실제 서버가 동일한 네트워크를 사용한다. (원암과 인라인 둘 다 사용 가능)
- 라우티드 : 라우팅 역할을 수행한다. (원암과 인라인 둘 다 사용 가능)
- DSR : 사용자의 요청이 로드 밸런서를 통해 서버로 유입된 후에 다시 로드 밸런서를 통하지 않고 서버가 사용자에게 직접 응답하는 모드 (원암으로만 구성)
어려웠거나 이해하지 못한, 혹은 궁금한 점
추가 내용
L4/L7 스위치의 대안, 오픈 소스 로드 밸런서 HAProxy
4. 이채민
새롭게 알게 된 점
- 부하 분산
- 서비스 규모가 커지면 물리나 가상 서버 한 대로는 모든 서비스를 수용할 수 없게 됨
- 단일 서버로 구성 시 해당 서버의 Application, os, hardware에 장애가 발생하는 경우 정상적인 서비스 제공 불가
⇒ 이러한 문제점을 해결하기 위한 개념이 ‘로드 밸런서’(Load Balancer)
- 로드 밸런서
- 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 서비스 요청을 분산시켜 부하를 분산하는 방식
- 다양한 헬스 체크 방식을 통해 서버의 서비스 정상 여부 판단 가능
- ICMP(ping)
- TCP 서비스 포트
- TCP 서비스 포트 - Half Open
- HTTP 상태 코드
- 콘텐츠 확인(문자열 확인)
- 헬스 체크 주기도 고려해야 함
- 주기
- 응답 시간
- 시도 횟수
- 타임아웃
- 서비스 다운 시의 주기
- 부하 분산 알고리즘
- 라운드 로빈
- 최소 접속 방식
- 가중치 기반 라운드 로빈
- 가중치 기반 최소 접속 방식
- 해시
- 로드 밸런서 구성 방식
- 원암 구성
- 로드 밸런서가 스위치 옆에 있는 형태
- 마치 한쪽 팔을 벌린 형태의 구성과 같아 원암 구성이라 부름
- 서버로 들어가거나 나오는 트래픽이 로드 밸런서를 경유하거나 경유하지 않을 수 있음
- 인라인 구성
- 로드밸런서가 스위치에서 서버까지 가는 일직선상 경로에 있는 형태
- 트래픽이 흐르는 경로에 로드 밸런서가 있어서 서버로 향하는 트래픽이 로드 밸런서의 서비스를 받는지 여부와 상관없이 로드 밸런서를 모두 통과
- 구성이 직관적이고 이해하기 쉬움
- 원암 구성
- 로드 밸런서 동작 모드
- 트랜스패런트 or 브릿지
- 트랜스패런트 모드 : 로드 밸런서가 OSI 2계층 스위치처럼 동작하는 구성⇒ 기존 망의 트래픽 흐름에 미치는 영향 없이 로드 밸런서를 손쉽게 구성할 수 있음
- ⇒ 로드 밸런서에서 서비스하기 위해 사용하는 VIP 주소와 실제 서버가 동일한 네트워크를 사용하는 구성
- 라우티드
- 라우티드 : 로드 밸런서가 라우팅 역할을 수행하는 모드⇒ 원암 구성과 인라인 구성에서 모두 구성 가능
- ⇒ 로드 밸런서를 기준으로 사용자 방향과 서버 방향이 서로 다른 네트워크로 분리된 구성
- DSR
- Direct Server Return : 사용자의 요청이 로드 밸런서를 통해 서버로 유입된 후에 다시 로드 밸런서를 통하지 않고 서버가 사용자에게 직접 응답하는 모드⇒ 사용자가 요청하는 패킷에 대해서만 관여한다.
- ⇒ 로드 밸런서를 경유하지 X → 원암으로 구성
- ⇒ 로드 밸런서에는 응답 트래픽이 유입되지 X
- 트랜스패런트 or 브릿지
어려웠거나 이해하지 못한, 혹은 궁금한 점
추가 내용
- L4 로드밸런서 vs L7 로드밸런서 : https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
- OSI 7계층에 따른 로드 밸런싱의 종류
- L4 : Transport 계층을 사용, IP주소와 포트 번호 부하 분산이 가능
- L7 : Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능
- 아래 그림 참고
스터디 내용
1. 질문
2. 모두 함께 읽어본 자료
1. AWS 로드 밸런싱
- 로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스입니다.
로드 밸런싱이란 무엇인가요? - 로드 밸런싱 알고리즘 설명 - AWS
2. L7 스위치
- https://www.youtube.com/watch?v=hsXeDPT66Ao
- 1:51 네트워크 운영자가 서비스의 대역폭 용량을 최적화하고 최고 효율성 비즈니스에서 높은 자격을 갖춘 사용자 경험을 제공하는 현명한 결정을 내리는데 도움이 됩니다.
3. 사내 개발용 Ncloud(ncloud.nhncorp.com) 서비스에 HAProxy를 적용한 사례
L4/L7 스위치의 대안, 오픈 소스 로드 밸런서 HAProxy
4. L4 로드밸런서 vs L7 로드밸런서
https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
5. OSI 7계층에 따른 로드 밸런싱의 종류
- L4 : Transport 계층을 사용, IP주소와 포트 번호 부하 분산이 가능
- L7 : Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능
- 아래 그림 참고
'Study > Computer Science' 카테고리의 다른 글
[Network] 13회차 스터디 - 네트워크 디자인, 가상화 기술, 가상화 서버를 위한 네트워크 (0) | 2023.05.16 |
---|---|
[Network] 11회차 스터디 - 이중화 기술 (0) | 2023.05.03 |
[Network] 10회차 스터디 - 서버의 방화벽 설정/동작 (0) | 2023.03.28 |
[Network] 9회차 스터디 - 보안 (0) | 2023.03.21 |
[Network] 8회차 스터디 - 서버 네트워크 기본 (0) | 2023.03.09 |