SafeKit 검색

SafeKit farm 클러스터에서 로드 밸런싱 가상 IP 주소 테스트

이 가이드는 SafeKit Farm (Farm 모듈, 가상 IP 주소의 로드 밸런싱)이 네트워크에서 올바르게 작동하는지 확인하는 방법(노드 간 연결 분산, 디스패칭 노드 중단 시 가상 IP(VIP) 경로 재설정)을 설명합니다.

1. 주요 원칙

전제 조건: Farm 의 모든 노드는 동일한 레이어 2 IP 서브넷(LAN 또는 원격 사이트 간에 확장된 VLAN)에 있어야 합니다.

  • 가상 IP(VIP)는 Farm 의 각 노드에 로컬로 구성됩니다. Farm 노드에서 시작될 때 해당 주소의 네트워크 카드에 물리적 IP 주소의 별칭으로 설정됩니다.
  • 단일 노드인 디스패칭 서버는 가상 IP(VIP)에 대한 네트워크 트래픽을 수신합니다(vmac_directed 구성, SafeKit 기본값). 이 노드의 MAC 주소는 ARP 테이블(동일 서브넷의 라우터, 게이트웨이, 클라이언트)에서 가상 IP(VIP)와 연결된 주소입니다.
  • 이 노드의 커널 필터는 패킷의 목적지 MAC 주소를 처리 노드의 MAC 주소로 다시 작성하여 Farm 의 노드에 TCP 연결을 분산합니다(목적지 IP 주소는 가상 IP(VIP)로 유지됨). 응답은 연결을 처리하는 노드에서 클라이언트로 직접 전송됩니다.
  • 필터가 수행하는 배포는 결정론적 입니다. 처리 노드는 구성된 로드 밸런싱 규칙에 따라 클라이언트의 ID에서 계산됩니다.
    • 클라이언트 IP 주소 기준(filter="on_addr"): 특정 클라이언트는 항상 동일한 노드에서 서비스를 받으므로 세션 친화성이 보장됩니다.
    • 클라이언트 TCP 포트 (filter="on_port")의 경우: 동일한 클라이언트의 각 TCP 연결은 다른 노드에서 처리될 수 있습니다. 이것은 모자이크 (섹션 2)에 사용되는 규칙이며, 따라서 단일 워크스테이션의 모든 노드를 보여줍니다.
  • 디스패칭 서버가 중지되면 다른 노드가 이 역할을 인계받아 GARP (Gratuitous ARP)를 전송하므로 네트워크가 가상 IP(VIP)를 자체 MAC 주소와 연관시킵니다.

따라서 테스트해야 할 사항은 다음과 같습니다.

  1. 연결이 모든 노드에 올바르게 분산되어 있는지
  2. 디스패치 서버가 변경될 때 네트워크(라우터, 게이트웨이, 가상화)가 GARP 고려해야 한다는 것입니다.

2. 필수 구성 요소: SafeKit 모자이크

모자이크 는 SafeKit에서 제공하는 테스트 페이지입니다. 가상 IP(VIP)에 여러 TCP 연결을 열고 각 연결에 대해 응답한 노드의 이름을 표시합니다. 이를 통해 배포 상태를 한눈에 확인할 수 있습니다.

  1. Farm 모듈의 userconfig.xml 파일에서 <vip> 섹션에 SafeKit 웹 서버 포트에 대한 로드 밸런싱 규칙을 추가합니다. 포트 9010에서 HTTP를 사용하는 SafeKit 웹 서버의 예시는 다음과 같습니다.

    <loadbalancing_list>
      <group name="FarmProto">
        <rule port="9010" proto="tcp" filter="on_port"/>
      </group>
    </loadbalancing_list>
    

    SafeKit 웹 서버와 콘솔이 HTTPS로 전환된 경우 9010을 9453으로 바꾸십시오.

  2. 모든 노드에 구성을 적용합니다.

  3. Farm 외부의 클라이언트 워크스테이션에 있는 브라우저에서 다음 주소에 연결합니다.

    http://<VIP>:9010/safekit/mosaic.html
    

    그런 다음 Farm 모듈 이름을 입력하고 테스트를 실행합니다. 모자이크 의 각 셀에는 TCP 연결에 응답한 노드의 이름이 표시되며, 동일한 노드에서 제공하는 모자이크 블록을 명확하게 보여주기 위해 각 노드에 색상이 연결됩니다.

    HTTPS의 경우, 포트 9453의 로드 밸런싱 규칙과 함께 https://<VIP>:9453/safekit/mosaic.html 사용하십시오.

모자이크 사용하여 SafeKit farm 의 가상 IP 주소를 테스트합니다.

" SafeKit farm 솔루션 시연 " 섹션에서 모자이크 테스트 비디오를 시청하세요.

3. 테스트 1 – 연결 분포

단계

  1. 모든 노드에서 Farm 시작합니다(UP 상태).
  2. 클라이언트 워크스테이션에서 모자이크 엽니다.

예상 결과: 모자이크 Farm 의 모든 노드 이름이 표시되며, 각 처리 노드마다 다른 색상이 지정됩니다.

이는 업스트림 라우터 또는 게이트웨이가 MAC 주소를 통해 노드 중 하나에 도달하며, 이 노드가 연결을 올바르게 분배한다는 것을 증명합니다.

4. 테스트 2 – 디스패칭 서버 변경

이 테스트는 디스패칭 서버가 중지될 때 Farm 계속 응답하는지 확인합니다.

단계

  1. Farm 을 중지합니다. 즉, SafeKit의 모든 노드를 중지합니다.
  2. 단일 노드를 시작합니다. 이 노드가 디스패칭 서버가 됩니다. → 예상 결과: 모자이크 이 노드만 표시됩니다.
  3. 다른 노드를 시작합니다. → 예상 결과: 모자이크 모든 노드가 표시됩니다.
  4. 디스패칭 서버 역할을 하는 첫 번째 노드를 중지합니다. → 예상 결과: 모자이크 나머지 노드가 표시됩니다.

이 테스트의 한계: 4단계에서 올바른 결과가 나왔다고 해서 GARP 작동한다는 증거는 아닙니다. 다른 노드에서 Farm 모듈이 시작되면(3단계) 가상 IP 주소가 해당 노드에 구성되고, 이로 인해 네트워크에 메시지가 생성되어 가상 IP 주소/MAC 주소 연결이 이미 재라우팅될 수 있습니다. GARP 실제로 테스트하는 것은 3단계와 4단계뿐입니다.

Farm 의 다른 노드(디스패치 서버가 아닌 노드)를 중지하면 배포의 재구성만 테스트됩니다.

5. 테스트 3 – arp -a 사용하여 GARP 재라우팅 확인

테스트 4와 함께 이 테스트는 GARP 실제로 확인합니다. 디스패칭 서버를 중지하기 전에 MAC 주소를 기록한 다음, 가상 IP(VIP)/MAC 연결이 변경되었는지 확인합니다.

이 테스트는 모자이크 표시하는 클라이언트 워크스테이션 Farm 과 동일한 IP 서브넷에 있는 경우에만 가능합니다.

클라이언트와 Farm 사이에 라우터가 있는 경우 클라이언트의 ARP 테이블에는 가상 IP(VIP)가 포함되지 않고 Farm 네트워크에 도달하는 데 사용되는 게이트웨이 주소가 포함됩니다. 이 경우 네트워크 팀과 함께 라우터 또는 게이트웨이의 ARP 테이블을 확인하십시오.

단계

  1. 모든 노드에서 Farm 시작합니다.
  2. 클라이언트 워크스테이션에서 arp -a 실행하고 가상 IP(VIP)와 연결된 MAC 주소를 기록합니다. 이 주소는 디스패칭 서버를 식별합니다.
  3. 이 MAC 주소를 가진 Farm 노드를 중지합니다.
  4. 모자이크 나머지 노드에서도 여전히 작동하는지 확인하세요.
  5. arp -a 다시 실행하여 새로운 가상 IP(VIP)/MAC 연결을 읽고 새로운 디스패칭 서버를 식별합니다.

6. 테스트 4 – Wireshark(Windows) 또는 tcpdump(Linux)를 사용한 엔드투엔드 확인

클라이언트와 Farm 노드에서 패킷을 캡처하여 가상 IP(VIP)에 대한 TCP 연결을 추적할 수 있습니다. Windows 시스템에서는 Wireshark를 사용하고 Linux 시스템에서는 tcpdump를 사용합니다.

IP 주소뿐만 아니라 패킷의 MAC(이더넷) 헤더를 살펴봐야 합니다. 디스패칭 서버의 커널 필터는 패킷의 목적지 MAC 주소를 처리 노드의 MAC 주소로 다시 작성하여 연결을 분산합니다. 목적지 IP 주소는 전체 경로를 따라 가상 IP(VIP)로 유지됩니다.

동일한 SYN 패킷에 대해 확인해야 할 사항:

단계패킷 캡처 위치관찰된 MAC 주소
1. 클라이언트가 가상 IP(VIP)로 전송합니다.고객클라이언트 MAC → 디스패칭 서버의 MAC
2. 디스패칭 서버가 연결을 전달합니다.디스패칭 서버디스패치 서버 MAC → 처리 노드의 MAC
3. 처리 노드가 수신합니다.처리 노드서버 MAC → 노드 MAC 전송
4. 노드는 클라이언트에 직접 응답합니다.처리 노드노드 MAC → 클라이언트 MAC
5. 클라이언트가 응답을 받습니다.고객노드 MAC → 클라이언트 MAC

클라이언트 워크스테이션이 Farm 과 다른 서브넷에 있는 경우, Farm 노드에서 보이는 “클라이언트 MAC"은 클라이언트 워크스테이션의 MAC 주소가 아니라 두 서브넷을 연결하는 게이트웨이 (라우터)의 MAC 주소입니다.

디스패칭 서버를 중지한 후 캡처를 반복합니다(테스트 2, 4단계). 이제 1단계에서 새 디스패칭 서버의 MAC 주소가 표시되어야 합니다.

7. 테스트할 워크스테이션

이 동작은 클라이언트와 Farm 간의 네트워크 경로에 따라 달라집니다. 아키텍처와 관련된 각 클라이언트 유형에서 테스트 1과 2를 실행합니다.

고객 위치검사 내용
Farm 과 동일한 서브넷에 있는 클라이언트GARP를 통한 클라이언트 ARP 테이블 업데이트(3가지 테스트 가능)
다른 서브넷의 클라이언트(라우터, 게이트웨이, 하이퍼바이저 가상 네트워크)라우터 또는 게이트웨이의 GARP 처리
Farm VM도 호스팅하는 하이퍼바이저의 클라이언트 VM내부 스위칭 및 라우팅도 처리하는 하이퍼바이저의 가상 스위치 동작

8. 예상 결과 요약

테스트조치예상 결과
1모든 노드 UP, 모자이크모든 노드가 표시됩니다.
2.2단일 노드가 시작되었습니다.이 노드만 표시됩니다.
2.3모든 노드가 시작되었습니다.모든 노드가 표시됩니다.
2.4디스패치 서버가 중지되었습니다.나머지 노드는 영구적인 중단 없이 나타납니다.
3중지 전후의 arp -a가상 IP(VIP)와 연결된 MAC 주소가 변경됩니다.
4중지 전후의 Wireshark 또는 tcpdump 캡처클라이언트는 새 디스패칭 서버의 MAC 주소로 전송합니다.

9. 문제 해결

SafeKit farm 솔루션 시연

SafeKit 동영상: 네트워크 부하 분산 및 가상 IP 관리 (5:03)

이 비디오에서는 2노드 클러스터에 단일 진입점을 제공하기 위해 가상 IP 주소를 구현하는 방법을 알아봅니다. SafeKit은 가상 IP를 자동으로 관리하여 네트워크 부하 분산을 간소화하고, 클라이언트 트래픽이 노드 전반에 분산되도록 하며, 장애 조치 시 즉시 리디렉션되도록 보장합니다. 이 데모에서는 Windows에서 Apache를 사용하지만, 이 솔루션은 다른 애플리케이션에서도 동일하게 작동합니다.

챕터

  1. 🎬 아키텍처: 공유 가상 IP를 위해 2개의 노드 준비하기 (0:13)
  2. 🎬 구성: farm.safe 모듈 및 가상 IP 주소 설정 (2:20)
  3. 🎬 검증: 서버 충돌 시 장애 조치 테스트 및 가상 IP 리디렉션 (2:30)

단계별 구현

자세한 내용은 다음과 같습니다.

SafeKit AI Chat SafeKit AI