3장. Keepalived의 로드 밸런서 사전 요구 사항 설정
keepalived
를 사용하는 로드 밸런서는 LVS 라우터와 실제 서버의 두 가지 기본 그룹으로 구성됩니다. 단일 장애 지점을 방지하려면 각 그룹에 두 개 이상의 멤버가 있어야 합니다.
LVS 라우터 그룹은 Red Hat Enterprise Linux를 실행하는 두 개의 동일하거나 매우 유사한 시스템으로 구성되어야 합니다. 하나는 활성 LVS 라우터 역할을 하는 반면 다른 하나는 핫 대기 모드에 남아 있으므로 가능한 동일한 기능을 가깝게 유지해야 합니다.
실제 서버 그룹에 대한 하드웨어를 선택하고 구성하기 전에 사용할 로드 밸런서 토폴로지를 결정합니다.
3.1. NAT 로드 밸런서 네트워크
NAT 토폴로지를 사용하면 기존 하드웨어를 사용할 수 있지만 모든 패킷이 로드 밸런서 라우터를 통과하고 풀에서 나가기 때문에 대용량 로드를 처리할 수 있는 기능이 제한됩니다.
- 네트워크 레이아웃
- NAT 라우팅을 사용하는 로드 밸런서의 토폴로지는 공용 네트워크에 대한 하나의 액세스 지점만 필요하므로 네트워크 레이아웃 관점에서 가장 쉽게 구성할 수 있습니다. 실제 서버는 사설 네트워크에 있으며 LVS 라우터를 통해 모든 요청에 응답합니다.
- 하드웨어
- NAT 토폴로지에서는 각 실제 서버는 LVS 라우터에만 응답하므로 하나의 NIC만 있으면 됩니다. 반면 LVS 라우터는 두 네트워크 간에 트래픽을 라우팅하려면 각각 두 개의 NIC가 필요합니다. 이 토폴로지는 LVS 라우터에서 네트워크 병목 현상을 생성하므로 각 LVS 라우터에서 Gigabit 이더넷 NIC를 사용하여 LVS 라우터에서 처리할 수 있는 대역폭을 늘릴 수 있습니다. Gigabit 이더넷이 LVS 라우터에서 사용되는 경우 실제 서버를 LVS 라우터에 연결하는 모든 스위치에는 부하를 효율적으로 처리하기 위해 두 개 이상의 Gigabit 이더넷 포트가 있어야 합니다.
- 소프트웨어
- NAT 토폴로지는 일부 구성에 iptables 를 사용해야 하므로 Keepalived 외부에 많은 양의 소프트웨어 구성이 있을 수 있습니다. 특히 FTP 서비스와 방화벽 마크를 사용하려면 요청을 올바르게 라우팅하기 위해 LVS 라우터를 수동으로 구성해야 합니다.
3.1.1. NAT를 사용하여 로드 밸런서에 대한 네트워크 인터페이스 구성
NAT를 사용하여 로드 밸런서를 설정하려면 먼저 LVS 라우터에서 공용 네트워크와 사설 네트워크의 네트워크 인터페이스를 구성해야 합니다. 이 예에서 LVS 라우터의 공용 인터페이스(
eth0
)는 203.0.113.0/24 네트워크에 있고 실제 서버(eth1
)에 연결되는 개인 인터페이스는 10.11.12.0/24 네트워크에 있습니다.
중요
작성 시 NetworkManager 서비스가 로드 밸런서와 호환되지 않습니다. 특히 SLAAC에서 IPv6 주소를 할당할 때 IPv6 VIP가 작동하지 않는 것으로 알려져 있습니다. 이러한 이유로 여기에 표시된 예제에서는 구성 파일과 네트워크 서비스를 사용합니다.
활성 또는 기본 LVS 라우터 노드에서 공용 인터페이스의 네트워크 구성 파일인
/etc/sysconfig/network-scripts/ifcfg-eth0
은 다음과 같습니다.
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=203.0.113.9 NETMASK=255.255.255.0 GATEWAY=203.0.113.254
LVS 라우터의 개인 NAT 인터페이스에 대한 구성 파일
/etc/sysconfig/network-scripts/ifcfg-eth1
은 다음과 같습니다.
DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=10.11.12.9 NETMASK=255.255.255.0
VIP 주소는 정적 주소와 달라야 하지만 범위는 동일합니다. 이 예에서 LVS 라우터의 공용 인터페이스에 대한 VIP를 203.0.113.10으로 구성할 수 있으며 개인 인터페이스의 VIP는 10.11.12.10일 수 있습니다. VIP 주소는
/etc/keepalived/keepalived.conf
파일의 virtual_ipaddress
옵션에 의해 설정됩니다. 자세한 내용은 4.1절. “기본 Keepalived 구성”의 내용을 참조하십시오.
또한 실제 서버가 NAT 인터페이스의 VIP로 요청을 다시 라우팅하는지 확인합니다.
중요
이 섹션의 샘플 이더넷 인터페이스 구성 설정은 유동 IP 주소가 아닌 LVS 라우터의 실제 IP 주소를 위한 것입니다.
기본 LVS 라우터 노드의 네트워크 인터페이스를 구성한 후 백업 LVS 라우터의 실제 네트워크 인터페이스를 구성합니다(네트워크의 다른 IP 주소와 충돌하지 않도록 주의하십시오).
중요
백업 노드의 각 인터페이스가 기본 노드의 인터페이스와 동일한 네트워크를 제공하는지 확인합니다. 예를 들면 다음과 같습니다. eth0 기본 노드의 공용 네트워크에 연결하므로 백업 노드의 공용 네트워크에도 연결해야 합니다.
3.1.2. 실제 서버에서 라우팅
NAT 토폴로지에서 실제 서버 네트워크 인터페이스를 구성할 때 가장 중요한 것은 LVS 라우터의 NAT 유동 IP 주소에 대한 게이트웨이를 설정하는 것입니다. 이 예에서 이 주소는 10.11.12.10입니다.
참고
네트워크 인터페이스가 실제 서버에 가동되면 시스템은 공용 네트워크에 ping하거나 연결할 수 없습니다. 이는 정상입니다. 그러나 LVS 라우터의 개인 인터페이스(이 경우 10.11.12.9)의 실제 IP를 ping할 수 있습니다.
실제 서버의 구성 파일
/etc/sysconfig/network-scripts/ifcfg-eth0
에서는 다음과 유사합니다.
DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=10.11.12.1 NETMASK=255.255.255.0 GATEWAY=10.11.12.10
주의
실제 서버에
GATEWAY=
행을 사용하여 두 개 이상의 네트워크 인터페이스가 구성된 경우 첫 번째 서버에서 게이트웨이를 가져옵니다. 따라서 eth0
및 eth1
이 모두 로드 밸런서에 사용되고 eth1
이 로드 밸런서에 사용되는 경우 실제 서버가 요청을 올바르게 라우팅하지 못할 수 있습니다.
/etc/sysconfig/network-scripts/
디렉터리 내의 네트워크 구성 파일에 ONBOOT=no
를 설정하거나 게이트웨이가 먼저 표시되는 인터페이스에 올바르게 설정되었는지 확인하여 불필요한 네트워크 인터페이스를 끄는 것이 가장 좋습니다.
3.1.3. LVS 라우터에서 NAT 라우팅 활성화
각 클러스터형 서비스가 포트 80에서 HTTP와 같은 하나의 포트만 사용하는 간단한 NAT 로드 밸런서 구성에서 관리자는 요청을 외부 환경과 실제 서버 간에 올바르게 라우팅하기 위해 LVS 라우터의 패킷 전달만 활성화해야 합니다. 그러나 클러스터형 서비스에 사용자 세션 중에 동일한 실제 서버로 이동하기 위해 두 개 이상의 포트가 필요한 경우 더 많은 구성이 필요합니다.
LVS 라우터에서 전달이 활성화되고 실제 서버가 설정되고 클러스터형 서비스가 실행되면
keepalived
를 사용하여 IP 정보를 구성합니다.
주의
네트워크 구성 파일을 수동으로 편집하거나 네트워크 구성 툴을 사용하여
eth0
또는 eth1
의 유동 IP를 구성하지 마십시오. 대신 keepalived.conf
파일을 사용하여 구성합니다.
완료되면
keepalived
서비스를 시작합니다. 활성 LVS 라우터가 가동되어 실행되면 실제 서버 풀에 대한 라우팅 요청을 시작합니다.