알아볼 내용
- 가용성
- 이중화
- 로드 밸런싱
가용성 (Availability) : 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율
- 안정성 : 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성
- 가용성은 안정성의 정도를 나타내는 용어로 다음과 같이 정의됨
- uptime : 정상적인 사용 시간
- downtime : 정상적인 사용이 불가능한 시간
- 일반적으로 고가용성 (High Availability, HA), 즉 안정적이라고 평가받으려면 99.999% 이상이 목표
- downtime이 1개월에 26.3초, 1년에 5.26분 정도
- downtime의 원인
- 과도한 트래픽으로 인한 서비스 다운
- 예기지 못한 SW 오류, HW 장애
- 보안 공격
- 자연재해 등…
- 문제가 발생하더라도 계속 기능할 수 있는 능력인 ‘결함 감내 (fault tolerance)‘를 키워야 함
이중화 (Network Duplication) : 결함 감내를 통해 가용성을 높이기 위해 예비를 마련하는 방법
- 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상, 즉 단일 장애점 (Single Point Of Failure, SPOF) 을 이중화
- 다중화 : 이중화의 일반화된 개념
- 이중화 구성 방식
- 액티브/스탠바이 : 한 시스템은 가동, 한 시스템은 백업으로 대기
- 액티브 시스템에 문제 생기면 failover를 통해 스탠바이 시스템이 동작
- 안전한 방식이지만 성능상 큰 변화는 없음
- 액티브/액티브 : 두 시스템 모두를 가동
- 부하 분산 및 성능상 이점 누릴 수 있음
- 한 시스템에 문제 발생하면 다른 시스템에 부하 급증에 문제 생길 수 있음
- 액티브/스탠바이 : 한 시스템은 가동, 한 시스템은 백업으로 대기
- 이중화/다중화 사례 : 티밍 (teaming)과 본딩 (bonding)
- 여러 개의 NIC를 이중화/다중화하여 더 뛰어나고 성능 안정적인 하나의 인터페이스처럼 보이게 하는 기술
- 티밍은 주로 윈도우, 본딩은 주로 리눅스에서 사용하는 용어
로드 밸런싱 : 트래픽의 고른 분배를 위해 사용되는 기술
- 일반적으로 서버에서 고가용성이 중요한데 트래픽을 어떻게 분배해야할지는 또 다른 문제
- 로드 밸런서에 의해 수행
- ‘L4 스위치’, ‘L7 스위치’ 같은 네트워크 장비로도 수행 가능
- 로드 밸런싱 기능을 제공하는 소프트웨어 (HAProxy, Envoy, Nginx) 설치하면 일반 호스트도 사용 가능
L4 스위치, L7 스위치
L4 스위치 : OSI 7계층의 전송 계층(L4, Transport Layer)에서 작동하는 스위치
- IP 주소 및 포트 번호(소스 및 목적지)를 기반으로 패킷 전달 결정
- TCP/UDP 헤더 정보 사용하여 부하 분산 및 트래픽 관리
- 빠른 처리 속도 및 높은 성능 보장
- 네트워크 부하 분산 및 서버 이중화 역할 수행
대표 프로토콜 : TCP, UDP
주요 기능 : 로드 밸런싱, 세션 관리, 연결 유지
L7 스위치 : OSI 7계층의 응용 계층(L7, Application Layer)에서 작동하는 스위치
- 패킷 내의 응용 계층 데이터를 분석하여 정밀한 라우팅 및 전달 결정
- HTTP/HTTPS 프로토콜 분석 및 콘텐츠 기반 라우팅 가능
- 세부적인 정책 적용 (URL 필터링, 보안 검사 등)
- SSL 종료 및 관리 수행 가능
- 지능적이고 유연한 트래픽 관리 가능하지만 상대적으로 성능 저하 발생 가능
대표 프로토콜 : HTTP, HTTPS, FTP, SMTP
주요 기능 : 콘텐츠 기반 로드 밸런싱, 보안 검사, URL 기반 라우팅
- 일반적으로 이중화나 다중화된 서버와 클라이언트 사이에 위치
- 로드 밸런싱 알고리즘
- 라운드 로빈 : 서버를 돌아가며 부하 전달
- 최소 연결 : 연결이 적은 서버부터 우선적으로 부하 전달
- 서버 간 성능이 다른 경우는 가중치를 고려한 가중치 라운드 로빈, 가중치 최소 연결 알고리즘을 활용
실제로 클라이언트와 서버 사이에는 수많은 서버 존재
- 오리진 서버 : 최종적으로 클라이언트와 메시지를 주고 받는 대상, 즉 자원을 생성하고 클라이언트에게 권한 있는 응답을 보낼 수 있는 HTTP 서버
- 인바운드 메시지 : 오리진 서버를 향하는 메시지
- 아웃바운드 메시지 : 클라이언트를 향하는 메시지
- 대표적인 HTTP 중간 서버 : 프록시 (포워드 프록시), 게이트웨이 (리버스 프록시)
프록시 (proxy) : 클라이언트가 선택한 메시지 전달 대리자
- 클라이언트와 가까이 위치
- 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능 제공
게이트웨이 (gateway, 리버스-프록시) : 아웃바운드 연결에 대해 오리진 서버 역할을 하지만 수신된 요청을 변환하여 다른 인바운드 서버들로 전달하는 중개자
- 네트워크 외부에서 보면 오리진 서버처럼 보이지만 요청을 보내면 다른 오리진 서버에게 요청 전달
- 오리진 서버들에 더 가까이 위치
- 캐시 저장, 로드 밸런서 역할