3eung_h10n.log
로그인
3eung_h10n.log
로그인
소프트웨어 아키텍처 - 20(Dispatcher(Load Balancer) Architecture Style
박승현
·
2023년 10월 15일
팔로우
0
0
아키텍처
목록 보기
20/30
Dispatcher(Load Balancer) Architecture Style
개요
분산 컴퓨팅에서 사용되는 미들웨어 아키텍처
분산 컴퓨팅 환경에서 사용되는 아키텍처이고 서버 팜(farm)을 클라이언트에게 단일 서버처럼 보이도록 만듬
서버 팜이 고도로 확장 가능성과 고가용성을 달성
이 아키텍처를 통해 서버 팜은 클라이언트에게 하나의 단일 서버처럼 보이며, 이를 통해 높은 확장 가능성과 고가용성 달성
서버 부하 분산을 통한 높은 확장성과 가용성
이러한 미들웨어 아키텍처는 대규모 분산 시스템에서 서버 팜의 관리, 부하 분산, 확장성등을 개선하고 클라이언트와 서버 간의 투명한 상호작용을 지원
로드 밸런서 아키텍처 맥락
모든 요청을 처리하는 단일 서버는 높은 트래픽 양을 처리하기에 용량이 부족할 수 있음
하지만 스케일업(용량의 증가등)은 단기적인 해결책에 불과 서버 성능 향상에 비해 비용이 불균형적으로 높다
응용 프로그램 구성 요소는 저렴한 하드웨어와 운영체제를 기반으로 한 서버 팜의 여러 인스턴스로 처리
디스패처 아키텍처 스타일의 강제 사항
소프트웨어 측면에서 응용 프로그램은 다양한 서버에서 여러 인스턴스로 실행될 수 있도록 설계해야 함
응용 프로그램의 상태를 관리해야 하는 경우 분산 환경에서 관리가 어려울 수 있음
인프라 측면에서 처리 부하는 서버 그룹 간에 분산되어야 함(서버 로드 밸런싱)
디스패처 아키텍처 스타일 - Solition
구조
들어오는 요청은 클라이언트에게 투명한 전용 서버 로드 밸런서로 전달됨
가용성 또는 현재 서버 부하와 같은 매개변수를 기반으로 로드 밸런서는 어떤 서버가 해당 요청을 처리해야 하는지를 결정하고 선택된 서버로 요청을 전달
로드 밸런싱 알고리즘이 필요한 입력 데이터를 제공하기 위해 로드 밸런서는 서버의 상태 및 부하 정보를 검색하여 트래픽에 응답할 수 있는지 확인
Availability vs. Scalability(가용성과 확장성)
가용성(Availability)
가용성은 장애간 시간에 의해 정의
장애가 발생한 시간부터 다시 정상적으로 작동하기까지 걸리는 시간으로 판단(업타임_
업타임 기간 동안 시스템은 미리 정의된 명확한 시간 내에 각 요청에 응답해야함
고가용성은 기본적으로 시스템 내에서의 중복성이다 : 하나의 서버가 실패하는 경우 다른 서버가 해당 서버의 작업 부하를 투명하게 이어받음 이는 클라이언트에게 보이지 않는다
높은 가용성을 달성하기 위해서는 로드 밸런서가 서버를 모니터링하여 과부하나 다운된 서버로 요청을 보내지 않아야 함 추가로 로드 밸런서 자체도 중복이 되어야 함
확장성(Scalability)
확장성은 시스템이 단일 클라이언트 뿐만 아니라 수천개의 동시 클라이언트를 서비스할 수 있는 능력을 의미
고 학장성은 서버로 들어오는 요청을 서버들 사이에 분산함으로써 달성
높은 가용성을 달성하기
로드 밸런서 아키텍처 - Solution
구현
서버 로드 밸런싱 솔루션은 두 가지 유형으로 나눌 수 있음
전송 로드 밸런싱(Transport-level)
DNS 기반 접근 방식 또는 TCP/IP 수준 로드 밸런싱과 같이 응용 프로그램과 독립적으로 동작
응용프로그램 로드 밸런싱(Application-level)
응용 프로그램 페이로드를 사용하여 로드 밸런싱 결정
로드 밸런싱 솔루션은 소프트웨어 기반 로드 밸런서와 하드웨어 기반 로드 밸런서로 더 구체적으로 분류 가능
하드웨어 기반 로드 밸런서
특정 용도로 사용하기 위해 커스터마이즈된 응용 프로그램 특화 통합 회로(ASICs)를 포함한 전문 하드웨어 상자
주로 transport레벨의 로드 벨런싱을 위해 사용
일발적으로 소프트웨어 기반 로드 밸런서보다 빠르지만 비용이 높음
소프트웨어 기반 로드 밸런서
표준 운영 체제 및 개인용 컴퓨터에서 실행
주로 전용 로드 밸런서 하드웨어 노드 내에서 실행하거나 응용 프로그램 내에서 직접 실행
디스패처(로드 밸런서) 아키텍처 예시
DNS 기반 로드 밸런싱
하나의 호스트 이름에 여러개의 IP주소를 할당할 수 있는 DNS의 특성을 기반
DNS는 각기 다른 위치에 있는 여러 데이터 센터 간에 로드를 분산해야 하는 전역 서버 로드 밸런싱에 효율적
전용 데이터 센터 내에서 로드를 분산하기 위한 다른 서버 로드 밸런싱 솔루션과 결합
TCP/IP 서버 로드 밸런싱
낮은 수준의 레이어 스위칭에서 작동
Linux Virtual Server(LVS)가 있음
구현
캐싱
낮은 수준의 서버 로드 밸런서 솔루션인 LVS와 같은 솔루션은 응용 프로그램의 상황에 따라 한계에 도달할 수 있음
캐싱은 동일한 데이터를 반복적으로 가져오는 비용을 피하기위해 중요한 확장성 원칙
캐시는 이전 데이터 검색 작업에서 발생한 중복 데이터를 일시적으로 보유하는 저장소
서버 측에서 캐시를 사용하는 경우 캐시로 인한 잘못된 요청 문제가 발생할 수 있음
캐시를 전역 공간에 배치하여 해결
memcached는 여러 대의 컴퓨터에 걸쳐 큰 캐시를 제공하는 분산 캐시 솔루션
박승현
KMU SW
팔로우
이전 포스트
소프트웨어 아키텍처 - 19(Proxy Architecture Style)
다음 포스트
소프트웨어 아키텍처 - 21(P2P Architecture Style)
0개의 댓글
댓글 작성