기술나눔

LVS-DR 클러스터 배포

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

LVS-DR(Linux Virtual Server - Direct Routing)은 Linux 가상 서버의 작업 모드이며 로드 밸런싱 클러스터를 구현하는 데 자주 사용됩니다.
LVS-DR 작동 방식:
Director Server(로드 밸런서)는 클러스터에 대한 액세스 입구 역할을 하지만 게이트웨이 역할을 하지는 않습니다. 전체 클러스터에 대한 접속에 대응하기 위해서는 Director Server와 Real Server(실제 서버) 모두 VIP(가상 IP 주소)로 구성되어야 하며, 동일한 네트워크에 데이터가 반환되어야 합니다. 클라이언트는 Director Server를 거칠 필요가 없습니다. 클라이언트는 대상 VIP에게 요청을 보냅니다. 로드 밸런서는 이를 수신한 후 로드 밸런싱 알고리즘에 따라 백엔드의 실제 서버를 선택합니다. IP 패킷을 수정하거나 캡슐화하지 않고 데이터의 MAC 주소를 변경합니다. 백엔드 실제 서버의 MAC 주소로 프레임을 전송한 다음 LAN을 통해 전송합니다. 백엔드 실제 서버는 이 프레임을 수신하고 캡슐화를 해제한 후 대상 IP가 로컬 머신과 일치하는지(VIP는 미리 바인딩되어 있음) 찾아 메시지를 처리한 다음 메시지를 다시 캡슐화하고 응답 메시지를 호스트로 전송합니다. lo 인터페이스를 통해 물리적 네트워크 카드가 전송되고 클라이언트는 응답 메시지를 받게 되며 클라이언트는 정상적인 서비스를 받았다고 생각하고 어떤 서버가 이를 처리했는지 알 수 없습니다. 네트워크 세그먼트를 통과하는 경우 패킷은 라우터를 통해 인터넷을 통해 사용자에게 반환됩니다.


LVS-DR의 기능은 다음과 같습니다.
1. Director Server와 Real Server는 동일한 물리적 네트워크에 있어야 합니다.
2.Real Server는 개인 주소 또는 공용 네트워크 주소를 사용할 수 있습니다. 공용 네트워크 주소를 사용하는 경우 인터넷을 통해 RIP에 직접 액세스할 수 있습니다.
3. Director Server는 클러스터에 대한 액세스 입구 역할을 하지만 게이트웨이 역할을 하지는 않습니다.
4. 모든 요청 메시지는 Director Server를 통과하지만 응답 응답 메시지는 Director Server를 통과할 수 없습니다.
5. Real Server의 게이트웨이는 Director Server IP를 가리키는 것이 허용되지 않습니다. 즉, Real Server에서 보낸 데이터 패킷이 Director Server를 통과하는 것이 허용되지 않습니다.
6. 실제 서버의 lo 인터페이스에서 VIP의 IP 주소를 구성합니다.


LVS-DR의 ARP 문제 및 해결 방법:
LVS-DR 로드 밸런싱 클러스터에서는 로드 밸런서와 노드 서버가 동일한 VIP 주소로 구성되어 있어 ARP 통신 장애가 발생합니다. ARP 브로드캐스트가 클러스터로 전송되면 로드 밸런서와 노드 서버 모두 이를 수신합니다. 이 문제를 해결하려면:
VIP에 대한 ARP 요청에 응답하지 않도록 노드 서버를 처리합니다. 가상 인터페이스 lo:0을 사용하여 VIP 주소를 전달하고 커널 매개변수 arp_ignore=1을 설정하여 시스템이 대상 IP가 로컬 IP인 ARP 요청에만 응답하도록 할 수 있습니다.
Real Server가 메시지(소스 IP가 VIP)를 반환하고 이를 라우터를 통해 전달할 때 Linux는 기본적으로 IP 패킷의 소스 IP 주소(예: VIP)를 ARP 요청 패킷의 소스 IP 주소로 사용하지 않고 전송 인터페이스의 IP 주소를 사용하면 라우터가 ARP 항목을 업데이트하여 디렉터의 VIP가 무효화될 수 있습니다. 해결책은 노드 서버를 처리하고 커널 매개변수 arp_announce=2를 설정하여 시스템이 IP 패킷의 소스 주소를 사용하여 ARP 요청의 소스 주소를 설정하지 않고 전송 인터페이스의 IP 주소를 선택하도록 하는 것입니다.