Computer Science/Network

[Network] 부하 분산 시스템(Load Balancing System)

LeeJaeJun 2023. 12. 22. 23:48
728x90
반응형

- 부하 분산 시스템(Load Balancing System)

부하 분산 시스템은 네트워크나 서버 클러스터와 같은 컴퓨팅 시스템에서 작업 부하를 공평하게 분산시키는 방식을 말합니다. 이를 통해 시스템의 성능과 가용성을 향상시킬 수 있습니다. 부하 분산 시스템은 다수의 서버 또는 컴퓨터 리소스를 이용하여 작업을 분배하고, 요청을 처리하는 데에 사용됩니다.

  1. 서버 기반 부하 분산: 이 방식은 여러 대의 서버를 구성하고, 클라이언트의 요청을 이러한 서버에 고르게 분배하는 방식입니다. 일반적으로 로드 밸런서라는 특수한 장치나 소프트웨어가 요청을 분배합니다. 이를 통해 각 서버의 작업 부하를 분산시키고, 서버의 성능을 최대한 활용할 수 있습니다.
  2. 네트워크 기반 부하 분산: 이 방식은 로드 밸런서가 네트워크 계층에서 동작하여 IP 주소나 포트 번호 등을 기반으로 요청을 분배합니다. 네트워크 스위치나 로드 밸런서가 여러 대의 서버에 요청을 전달하는 방식입니다.
  3. 애플리케이션 기반 부하 분산: 이 방식은 애플리케이션 자체에서 로직을 구현하여 부하를 분산시킵니다. 예를 들어, 애플리케이션 계층에서 요청을 받고, 다른 서버에 작업을 할당하는 방식입니다. 이를 통해 애플리케이션 내에서 작업 부하를 균형있게 분배할 수 있습니다.

주요한 이점은 다음과 같습니다:

  • 성능 향상: 작업 부하를 여러 대의 서버에 분산시킴으로써 전체적인 성능이 향상될 수 있습니다. 각 서버는 부하를 분담하므로 개별 서버의 성능 한계를 초과할 수 있습니다.
  • 가용성 향상: 여러 대의 서버를 사용함으로써 시스템의 가용성이 향상됩니다. 만약 한 대의 서버가 고장이 발생하더라도 다른 서버가 작업을 계속 처리할 수 있습니다.
  • 확장성: 새로운 서버를 추가함으로써 시스템을 확장할 수 있습니다. 부하 분산 시스템은 서버를 수평적으로 확장하는 데에 용이합니다.
  • 오류 격리: 부하 분산 시스템은 서버 간에 작업 부하를 분산시키므로, 한 대의 서버에서 오류가 발생해도 전체 시스템에 큰 영향을 주지 않습니다.

 

- Health check

Health check은 컴퓨터 시스템이나 네트워크의 상태와 작동 여부를 확인하는 절차나 기능을 말합니다. 주로 시스템이 정상적으로 작동하고 있는지 확인하고, 장애나 문제가 있는 경우 조치를 취할 수 있도록 도와줍니다.

일반적으로는 다음과 같은 방식으로 구현됩니다:

  1. Ping 체크: 컴퓨터나 네트워크 장비에 ICMP(Internet Control Message Protocol) 패킷을 보내 응답을 받아 접속 가능 여부를 확인합니다. 이는 해당 시스템이 네트워크 상에서 응답하는지를 확인하는 가장 기본적인 방법입니다.
  2. 포트 체크: 특정 포트로의 연결을 시도하여 연결 가능 여부를 확인합니다. 예를 들어, 웹 서버의 80번 포트로 연결을 시도하여 웹 서비스의 정상 작동 여부를 확인할 수 있습니다.
  3. 서비스/응용 프로그램 체크: 헬스 체크 도구를 사용하여 특정 서비스나 응용 프로그램의 상태를 확인할 수 있습니다. 이는 서비스가 실행 중인지, 응답하는지, 정상적으로 작동하는지 등을 확인하는 데에 사용됩니다.
  4. 로드 밸런서 체크: 로드 밸런서를 사용하는 경우, 헬스 체크는 각 서버의 상태를 확인하여 트래픽을 분배할 때 사용됩니다. 로드 밸런서는 서버에 헬스 체크를 수행하고, 응답이 없거나 장애가 있는 경우 해당 서버에 대한 트래픽을 분배하지 않습니다.

 

- 무정지 시스템

무정지 시스템(Zero-downtime system)은 서비스나 애플리케이션이 중단 없이 계속해서 작동하는 시스템을 말합니다. 이는 시스템 유지보수, 업데이트, 하드웨어 장애 등으로 인해 서비스 중단이 최소화되는 것을 목표로 합니다. 무정지 시스템은 사용자들에게 연속적인 서비스 제공과 함께 시스템 가용성을 보장하는 중요한 요소입니다.

  1. 장애 허용(Resilience): 장애가 발생해도 시스템이 부분적인 중단 없이 작동할 수 있도록 설계합니다. 이는 여러 대의 서버, 네트워크, 데이터베이스 등을 사용하여 복제, 백업, 격리 등의 메커니즘을 활용하는 것을 의미합니다.
  2. 확장성(Scalability): 시스템에 대한 수평적 확장을 지원하여 트래픽 증가에 대응할 수 있도록 합니다. 이는 서버 클러스터링, 로드 밸런싱, 자동 확장 등의 기술을 이용하여 성능과 용량을 조절합니다.
  3. 무중단 배포(Continuous Deployment): 새로운 소프트웨어 업데이트나 구성 변경을 시스템에 적용할 때 중단 없이 진행할 수 있도록 합니다. 이는 롤링 업데이트, 컨테이너화, 블루-그린 배포 등의 방법을 사용합니다.
  4. 헬스 체크(Health Checking): 시스템 구성 요소의 상태를 주기적으로 확인하여 문제를 조기에 감지하고 대응합니다. 헬스 체크는 모니터링, 자가 치유 메커니즘 등을 포함합니다.
  5. 로깅과 분석(Logging and Analytics): 로그 데이터와 분석 도구를 활용하여 시스템의 동작과 성능을 모니터링하고 문제를 해결합니다. 이를 통해 시스템의 운영과 개선에 필요한 통찰력을 얻을 수 있습니다.

 

- GSLB

GSLB(Global Server Load Balancing)는 전 세계 여러 지역에 분산된 서버를 효율적으로 관리하고 트래픽을 분산시키는 기술입니다. GSLB는 여러 개의 데이터 센터나 지역에 위치한 서버들 간에 부하 분산과 고가용성을 제공하여 사용자에게 빠르고 안정적인 서비스를 제공할 수 있도록 돕습니다. DNS 체계를 활용하는 구조입니다. 또한 각 서버들의 콘텐츠는 CDN을 활용해 동기화 하는 것이 대부분 입니다.

  1. 부하 분산: GSLB는 다양한 위치에 분산된 서버들 간에 트래픽을 균등하게 분산시킵니다. 이를 통해 각 서버의 작업 부하를 분담하여 성능을 향상시킬 수 있습니다.
  2. 지역 기반 라우팅: GSLB는 사용자의 위치 정보를 기반으로 최적의 서버로 트래픽을 라우팅합니다. 사용자가 가장 가까운 지역에 위치한 서버로 연결되므로 응답 시간을 최소화하고 대역폭을 효율적으로 사용할 수 있습니다.
  3. 장애 감지와 투명한 장애 복구: GSLB는 서버나 데이터 센터의 장애를 실시간으로 감지하고, 해당 장애가 발생한 경우 트래픽을 다른 가용한 서버로 자동으로 전환합니다. 이를 통해 사용자들은 서비스 중단 없이 지속적인 액세스를 유지할 수 있습니다.
  4. DNS 기반 구현: 대부분의 GSLB 시스템은 DNS(Domain Name System)를 기반으로 동작합니다. DNS 쿼리에 응답하여 사용자의 위치, 서버의 가용성 등을 고려하여 최적의 IP 주소를 반환합니다.

GSLB는 대규모 웹 사이트, 클라우드 서비스, 글로벌 기업의 분산된 인프라 등에서 사용됩니다. 이를 통해 사용자들은 지연 시간이 짧고 안정적인 서비스를 제공받을 수 있으며, 기업은 효율적인 부하 분산과 고가용성을 달성할 수 있습니다.

 

- CDN

CDN(Content Delivery Network)은 전 세계적으로 분산된 서버 네트워크를 활용하여 콘텐츠를 빠르고 효율적으로 전달하는 기술입니다. CDN은 웹 콘텐츠, 이미지, 동영상, 애플리케이션 등 다양한 형태의 콘텐츠를 다룹니다.

  1. 지리적으로 분산된 서버: CDN은 전 세계 다양한 위치에 서버를 배치하여 콘텐츠를 저장하고 전송합니다. 이를 통해 사용자와 가까운 서버에서 콘텐츠를 제공하여 응답 시간을 최소화합니다.
  2. 캐싱(Caching): CDN 서버는 자주 요청되는 콘텐츠의 사본을 저장하여 동일한 요청에 대해 원본 서버로부터 다시 가져오지 않고 즉시 응답합니다. 이를 통해 대역폭 사용량을 줄이고 응답 시간을 단축합니다.
  3. 프록시 서버: CDN 서버는 원본 서버의 역할을 수행하여 사용자의 요청을 대신 처리합니다. 이를 통해 원본 서버의 부하를 분산시키고 안정적인 서비스를 제공합니다.
  4. 동적 콘텐츠 가속화: CDN은 동적으로 생성되는 콘텐츠도 캐싱하여 전송 속도를 향상시킵니다. 이를 위해 원본 서버와 연계하여 콘텐츠를 업데이트하고 필요한 경우 동적으로 생성합니다.

CDN은 다음과 같은 이점을 제공합니다:

  • 빠른 콘텐츠 전송: 지리적으로 가까운 서버에서 콘텐츠를 제공하여 응답 시간을 단축합니다.
  • 대역폭 절약: 캐싱과 압축 기술을 활용하여 대역폭 사용량을 줄입니다.
  • 부하 분산: 다수의 서버로 콘텐츠 요청을 분산시켜 서버의 부하를 분담합니다.
  • 고가용성: 서버 장애 시 다른 서버로 요청을 전달하여 서비스 중단을 최소화합니다.
728x90
반응형

'Computer Science > Network' 카테고리의 다른 글

[Network] TCP 에러제어  (2) 2023.12.23
[Network] VPN  (2) 2023.12.22
[Network] UPnP  (2) 2023.12.22
[Network] 포트 포워딩(Port Forwarding)  (1) 2023.12.22
[Network] 공유기  (2) 2023.12.22