본문 바로가기
카테고리 없음

[따라하며 배우는 서버 부하분산 입문] 서버 부하분산

by Lauren X Ming 2022. 1. 10.

서버 부하분산?

  • 서버에 걸리는 부하를 분산
    • 동일한 서비스를 제공하고 있는 복수의 서버에 작업을 분배
  • 서버 부하란 클라이언트 접속으로 인해 발생
    • 클라이언트 접속을 분산함으로써 처리 부하를 분산시킴

 

서버 부하분산이 필요한 이유

  1. 처리 능력 향상
    • scale-up : 서버 자체의 성능 향상
    • scale-out : 서버 수를 증가(유연성이 높아서 이 방법을 많이 사용)
  2. 장애 대처 능력 향상
    • 장애에 어느 정도 견딜 수 있느냐
      • 한 대의 서버가 다운되도 그 서버를 격리시켜 다른 서버가 서비스를 제공할 수 있게 됨
  3. 유지 관리 효율 향상
    • 소트프웨어 업데이트가 필요하다면, 한 대씩 작업이 가능해짐

 

서버 부하분산 방법

  1. DNS 라운드 로빈
    • DNS : ip - domain name 매핑된 데이터베이스를 가지고 있음.
    • 라운드 로빈 : 순서대로
    • DNS 라운드 로빈 : 복수의 ip 주소를 DNS 서버에 등록해두고, 클라이언트로부터 요청이 오면 등록된 ip를 순서대로 전달 
      • 도메인 네임이 똑같아도 접속하는 서버가 달라짐
      • 단점
        1. 서버 장애가 발생해도 알기 어려움
          • DNS 서버는 장애가 발생한 사실을 알 수 없기 때문에, 다운된 서버로 접속 시도하게 됨
          • 균등하게 부하분산 하지 않음
            • DNS는 캐시 기능을 가지고 있기 때문에, 캐시가 없어지기 전까지는 계속 같은 웹 서버에 접속 함
  2. OS 타입
    • OS 가 가지고 있는 자체 기능으로 부하분산 구현
      • window : NLB
      • 리눅스 : LVS
    • 단점
      • 클러스터 서비스의 부속 기능이기 때문에 복잡한 부하분산 구현이 어려움
      • 모드에 따라 관계없는 서버와도 통신됨
  3. 어플라이언스 타입
    • Load Balancer라는 장비를 사용해 구현
      • 벤더 ex. F5, Citirx, NetScale 등
    • 단점 : 비용
    • 장점
      1. 복잡한 트래픽을 유연하게 처리하는 것이 가능
      2. 전달 받은 연결을 효율화
      3. 암호화 -> 복호화

 

서버 부하분산의 진화