고 가용성을 위해 데비안 머신 두 대에 keepalived를 설정했지만 내에 할당 할 수있는 최대 가상 IP 수에 도달했습니다 vrrp_instance
. 20 개 이상의 가상 IP를 구성하고 장애 조치하는 방법은 무엇입니까?
이것은 매우 간단한 설정입니다.
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
각 컴퓨터는 SSL 클라이언트 인증서 종료 및 백엔드 웹 서버 프록시를 위해 가상 IP에서 Apache (나중 Nginx) 바인딩도 실행합니다. VIP가 너무 필요한 이유는 HTTPS에서 VirtualHost를 사용할 수 없기 때문입니다.
이것은 내 keepalived.conf입니다.
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
동일한 구성이 BACKUP 시스템에 있으며 제대로 작동하지만 최대 20 번째 IP까지만 작동합니다.
이 문제를 논의 하는 하우투를 발견했습니다 . 기본적으로 그들은 단 하나의 VIP를 보유하고이 하나의 IP를 통해 모든 트래픽을 라우팅하고 “모두 잘 될 것”을 제안합니다. 이것이 좋은 접근입니까? 머신 앞에서 pfSense 방화벽을 실행하고 있습니다.
위 링크에서 인용하십시오.
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
미리 감사드립니다.
편집하다:
@David Schwartz는 경로를 추가하는 것이 합리적이라고 말하면서 pfSense 방화벽에 고정 경로를 추가하려고 시도했지만 예상대로 작동하지 않았습니다.
pf 센스 경로 :
Interface: LAN
Destination network: 10.200.85.200/32 (virtual IP)
Gateway: 10.200.85.100 (floating virtual IP)
Description: Route to VIP .100
또한 호스트에서 패킷 전달을 사용하도록 설정했습니다.
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
내가 잘못하고 있습니까? 또한 keepalived.conf에서 모든 VIP를 제거하여 10.200.85.100 이상에서만 실패합니다.
답변
현재 아키텍처를 변경하지 않는 가장 간단한 솔루션은 virtual_ipaddress_excluded를 사용하는 것입니다 . 예를 들어
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
}
virtual_ipaddress_excluded {
10.200.85.101
. all the way to
10.200.85.200
}
}
virtual_ipaddress_excluded 에는 keepalived가 서버에서 가져오고 내리는 IP 주소 목록이 포함되어 있지만 VRRP 패킷 자체에는 포함되지 않으므로 20 개의 IP 주소 제한에 포함되지 않습니다.
내 구성에서 virtual_ipaddress 전용으로 IP를 할당하고 싶습니다 . 즉, VRRP 패킷에 포함 된 모든 것을 virtual_ipaddress_excluded에 넣습니다 . 고객이 떠난 이유만으로 기본 IP를 변경할 필요가 없기 때문에 좋은 아이디어입니다.