Published:
Updated:

깃허브 인터뷰 레포지토리

로드밸런서가 무엇인가요?

로드 밸런서(Load Balancer)는 여러 대의 서버를 두고 사용자가 한쪽으로 몰리는 것을 분산시켜주는 장치입니다.

그리고 1대의 서버에서 여러 대로 늘리는 것을 스케일 아웃(Scale Out)이라고 하며, 부하를 분산시켜주는 작업을 로드 밸런싱(Load Balancing)이라고 합니다.

L4 로드밸런서와, L7 로드밸런서의 차이에 대해 설명해 주세요.

작동 계층

  • L4: 전송 계층(OSI 모델의 4계층)에서 동작
  • L7: 애플리케이션 계층(OSI 모델의 7계층)에서 동작

사용 정보

  • L4: IP 주소와 포트 번호만을 활용
  • L7: URL, HTTP 헤더, 쿠키 등 애플리케이션 계층의 다양한 정보를 활용

주요 프로토콜

  • L4: TCP, UDP
  • L7: HTTP, HTTPS

처리 속도

  • L4: 패킷 헤더만 확인하므로 상대적으로 빠름
  • L7: 패킷 내용을 심층 분석하므로 L4에 비해 상대적으로 느림

주요 기능

  • L4: 단순한 부하 분산에 적합, 세부적인 요청 내용 분석 불가
  • L7: 섬세한 라우팅과 더 복잡한 로드밸런싱 가능

보안

  • L4: 기본적인 네트워크 레벨 보안
  • L7: 애플리케이션 레벨의 보안 기능 제공 가능(예: 웹 방화벽)

유연성

  • L4: 제한된 로드밸런싱 옵션
  • L7: 다양한 로드밸런싱 알고리즘 적용 가능

이러한 차이점으로 인해, L4 로드밸런서는 단순하고 빠른 트래픽 분산이 필요할 때 사용되며, L7 로드밸런서는 더 복잡하고 세밀한 트래픽 제어가 필요한 경우에 선택됩니다.

로드밸런서 알고리즘에 대해 설명해 주세요.

  • 라운드 로빈(Round Robin): 분배의 가장 기본적인 방식으로, 각 서버별로 돌아가면서 연결을 처리합니다.
  • 가중 라운드 로빈(Weighted Round Robin): 각 서벼별로 돌아가면서 연결을 처리하지만, 일부 서버는 큰 트래픽을 몰아 받는 방식입니다.
  • 랜덤(Random): 무작위로 분배되는 방식입니다.
  • 해시(Hash): 특정 클라이언트는 특정 서버에서만 처리하는 방식입니다.

로드밸런싱 대상이 되는 장치중 일부 장치가 문제가 생겨 접속이 불가능하다고 가정해 봅시다. 이 경우, 로드밸런서가 해당 장비로 요청을 보내지 않도록 하려면 어떻게 해야 할까요?

로드밸런서가 문제가 생긴 장치로 요청을 보내지 않도록 하기 위해서는 헬스 체크(Health Check) 기능을 활용해야 합니다.

정의

  • 로드밸런서의 헬스 체크는 연결된 서버들의 상태를 주기적으로 확인하는 중요한 기능입니다.
    • 이를 통해 로드밸런서는 정상적으로 작동하는 서버로만 트래픽을 분산시킬 수 있습니다.

작동 방식

  • 로드밸런서가 연결된 서버들에 주기적으로 요청을 보내 응답을 확인합니다.
  • 일반적으로 특정 웹페이지를 호출하여 사전에 지정한 문자열이 포함되어 있는지 체크합니다.

특징

  • 서버의 상태를 실시간으로 모니터링하여 장애 상황에 신속히 대응할 수 있습니다.
  • 비정상적인 서버로의 트래픽 분산을 방지하여 서비스의 안정성을 높입니다.

종류

  • Active Health Check
    • 로드밸런서가 주기적으로 특별한 요청을 보내 서버 상태를 확인합니다.
    • 실제 사용자 요청 전에 문제를 감지할 수 있어 먼저 대응이 가능합니다.
  • Passive Health Check
    • 실제 사용자 요청에 대한 서버의 응답을 모니터링합니다.
    • 별도의 추가 트래픽 없이 서버 상태를 파악할 수 있습니다.

주의사항

  • 헬스 체크 간격과 타임아웃 설정이 중요합니다.
    • 너무 짧으면 일시적 문제로 서버가 제외될 수 있고, 너무 길면 실제 장애 감지가 늦어질 수 있습니다.
  • 모든 서버가 동시에 헬스 체크에 실패하면 로드밸런서는 상태와 관계없이 모든 서버로 트래픽을 분산시킬 수 있습니다.

로드밸런서 장치를 사용하지 않고, DNS를 활용해서 유사하게 로드밸런싱을 하는 방법에 대해 설명해 주세요.

라운드 로빈 DNS

로드밸런서 장치 없이, DNS 서버만을 이용하여 하나의 도메인 이름에 여러 개의 IP 주소를 연결하는 방식입니다.

  • 사용자가 도메인 이름을 요청할 때마다 DNS 서버는 연결된 IP 주소들 중 하나를 순차적으로 반환합니다.
    • 이를 통해 여러 서버에 트래픽을 분산시켜 부하를 분산할 수 있습니다.
  • 장점
    • 구성이 간단해서 추가적인 하드웨어나 소프트웨어 없이 DNS 설정만으로 구현 가능합니다.
    • 확장성이 좋아서 새로운 서버를 추가하거나 제거하기 쉽습니다.
  • 단점
    • 서버 상태 모니터링이 제한적입니다.
      • 특정 서버에 문제가 생겨도 DNS는 이를 즉시 감지하지 못할 수 있습니다.
    • DNS 캐싱으로 인해 특정 서버에 트래픽이 집중될 수 있습니다.
      • DNS 캐싱: DNS 쿼리 결과를 일시적으로 저장하는 프로세스

서브넷 마스크와, 게이트웨이에 대해 설명해 주세요.

서브넷 마스크

서브넷 마스크는 IP 주소를 네트워크 ID와 호스트 ID로 나누는 데 사용되는 구분자입니다.

Screenshot 2024-09-24 at 22 11 39

  • 특징
    • IP 주소와 동일한 형식(예: 255.255.255.0)으로 표현됩니다.
    • 이진수로 표현했을 때 네트워크 부분은 1, 호스트 부분은 0으로 구성됩니다.
    • IP 주소와 서브넷 마스크를 AND 연산하면 해당 네트워크의 주소를 얻을 수 있습니다.
  • 목적
    • 네트워크 분할: 대규모 네트워크를 작은 서브넷으로 나누어 효율적인 관리가 가능합니다.
    • 브로드캐스트 도메인 축소: 네트워크 트래픽을 줄이고 성능을 향상시킵니다.
    • IP 주소 할당 최적화: 필요한 만큼의 IP 주소만 할당하여 주소 낭비를 방지합니다.

Screenshot 2024-09-24 at 22 12 54

게이트웨이

게이트웨이는 서로 다른 네트워크 간의 통신을 가능하게 하는 네트워크 지점입니다.

  • 특징
    • 일반적으로 라우터나 공유기가 게이트웨이 역할을 수행합니다.
    • 네트워크 간 데이터 패킷을 전달하는 현관문과 같은 역할을 합니다.
    • IP 주소 형태로 표현되며, 네트워크 설정에서 확인할 수 있습니다.
  • 목적
    • 외부 네트워크 연결: 로컬 네트워크와 인터넷 같은 외부 네트워크를 연결합니다.
    • 프로토콜 변환: 서로 다른 프로토콜을 사용하는 네트워크 간 통신을 가능하게 합니다.
    • 보안: 내부 네트워크와 외부 네트워크 사이의 보안 경계 역할을 합니다.

NAT에 대해 설명해 주세요.

사설 IP 주소를 공인 IP 주소로 변환하는 프로세스입니다.

주로 라우터나 방화벽에서 구현되며, 내부 네트워크와 외부 네트워크 사이의 통신을 가능하게 합니다.

주요 기능

  • IP 주소 변환
    • 내부 네트워크의 사설 IP 주소를 외부 네트워크의 공인 IP 주소로 변환합니다.
    • 이를 통해 하나의 공인 IP 주소로 여러 대의 내부 기기가 인터넷에 접속할 수 있습니다.
  • 보안 강화
    • 내부 네트워크의 구조를 외부에서 직접 볼 수 없게 하여 보안을 강화합니다.
    • 외부에서 내부 네트워크로의 직접적인 접근을 차단합니다.
  • IPv4 주소 부족 문제 해결
    • 제한된 수의 공인 IP 주소를 효율적으로 사용할 수 있게 합니다.
    • IPv6의 도입으로 NAT의 필요성이 줄어들 수 있습니다.

종류

  • 정적 NAT (Static NAT)
    • 내부 IP 주소와 외부 IP 주소가 1:1로 매핑됩니다.
    • 주로 내부 서버를 외부에 공개할 때 사용합니다.
  • 동적 NAT (Dynamic NAT)
    • 내부 IP 주소와 외부 IP 주소가 동적으로 매핑됩니다.
    • 사용 가능한 공인 IP 주소 풀에서 필요에 따라 할당합니다.
  • PAT (Port Address Translation)
    • 가장 흔히 사용되는 NAT 유형입니다.
    • 여러 내부 IP 주소를 하나의 외부 IP 주소로 변환하며, 포트 번호로 구분합니다.

서브넷 마스크의 표현 방식에 대해 설명해 주세요.

표기법

  • 점 십진법 표기법 (Dotted Decimal Notation)
    • 가장 일반적인 표현 방식입니다.
    • 예: 255.255.255.0
    • 가장 읽기 쉽고 일반적으로 사용됩니다.
  • 이진법 표기법
    • 32비트의 이진수로 표현합니다.
    • 예: 11111111.11111111.11111111.00000000
    • 네트워크와 호스트 부분을 명확히 구분할 수 있습니다.
  • CIDR(Classless Inter-Domain Routing) 표기법
    • IP 주소 뒤에 슬래시(/)와 네트워크 비트 수를 표기합니다.
    • 예: 192.168.0.0/24
    • 간결하고 네트워크 크기를 쉽게 파악할 수 있습니다.
  • 16진수 표기법
    • 덜 흔하지만 가끔 사용됩니다.
    • 예: 0xFFFFFF00
    • 압축된 형태로 표현할 수 있습니다.

서브넷 마스크의 원리

  • 네트워크 부분은 1로, 호스트 부분은 0으로 표시됩니다.
  • IP 주소와 서브넷 마스크를 AND 연산하면, 네트워크 주소를 얻을 수 있습니다.

그렇다면, 255.0.255.0 같은 꼴의 서브넷 마스크도 가능한가요?

255.0.255.0과 같은 형태의 서브넷 마스크는 일반적으로 사용되지 않으며, 표준적인 네트워크 구성에서는 유효하지 않습니다.

올바른 구조

  • 서브넷 마스크는 항상 왼쪽부터 연속된 1의 비트로 시작하고, 나머지는 0으로 채워져야 합니다.
  • 올바른 서브넷 마스크의 예로는 255.0.0.0, 255.255.0.0, 255.255.255.0 등이 있습니다. (순서대로 A, B, C 클래스의 기본 서브넷 마스크)

255.0.255.0 같은 꼴이 유효하지 않은 이유

  • 라우팅 문제: 이러한 마스크는 네트워크 주소와 호스트 주소를 명확히 구분할 수 없어 라우팅에 문제를 일으킵니다.
  • 네트워크 분할의 비효율성: 불연속적인 비트 패턴은 네트워크를 효율적으로 분할하지 못합니다.
  • 표준 위반: 이는 인터넷 표준 프로토콜과 네트워킹 장비의 설계 원칙에 위배됩니다.

Leave a comment