가상 주소 20 개 이상 유지 virtual_router_id 51

고 가용성을 위해 데비안 머신 두 대에 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를 변경할 필요가 없기 때문에 좋은 아이디어입니다.