centos 7에서 keepalived를 사용하여 IP 장애 조치를 시도할 때 가상 IP에 대한 요청이 전달되지 않습니다.

centos 7에서 keepalived를 사용하여 IP 장애 조치를 시도할 때 가상 IP에 대한 요청이 전달되지 않습니다.

Centos 7에서 keepalived를 사용하여 IP 장애 조치를 테스트하려고 합니다. 가상 머신에 Centos 7 인스턴스 3개가 설치되어 있습니다. 그래서 서버가 3개 있습니다. 그 중 두 개에서 keepalived를 실행하려고 하는데, 세 번째 센토가 실제 서버 역할을 하고 요청이 해당 서버로 전달됩니다. Keepalived의 구성은 마지막에 제공됩니다. conf 파일의 192.168.10.40은 실제 서버의 IP 주소입니다. 실제 서버에서는 작은 Nodejs 서버를 실행하고 요청이 전송되면 성공으로 응답합니다. 192.168.10.40:3869의 nodejs 서버에 직접 요청을 보낼 때. 응답은 하는데 가상IP 192.168.10.100, 포트 3869를 사용하여 접속하려고 하면 응답이 없습니다. Keepalived는 두 서버 모두에서 제대로 작동하지만.

메인 서버에서

Vrrp_instance_pi1 {
state MASTER
    interface enp0s8
    virtual_router_id 102
    priority 101
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.10.100/24
    }
}
virtual_server 192.168.10.100 3869 {
    delay_loop 10
    lb_algo rr
    lb_kind DR
    persistence_timeout 9600


    real_server 192.168.10.40 3869 {
        weight 1
        TCP_CHECK {
        connect_timeout 20
        connect_port    80
        }
    }
                                                                                         
}

백업 서버에서

Vrrp_instance_pi1 {
state BACKUP
    interface enp0s8
    virtual_router_id 102
    priority 99
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.10.100/24
    }
}
virtual_server 192.168.10.100 3869 {
    delay_loop 10
    lb_algo rr
    lb_kind DR
    persistence_timeout 9600


    real_server 192.168.10.40 3869 {
        weight 1
        TCP_CHECK {
        connect_timeout 20
        connect_port    80
        }
    }
                                                                                         
}

답변1

NodeJS 서버에서 유동 IP를 가리키도록 기본 경로를 다시 정의합니다.192.168.10.100

$ sudo ip route del 0/0
$ sudo route add default gw 192.168.10.100

두 라우터 모두에서 몇 가지 NAT 규칙을 만듭니다.

$ sudo iptables -t nat -F
$ sudo iptables -t mangle -F
$ sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to 192.168.10.100
$ sudo iptables -t nat -A PREROUTING -d 192.168.10.100 -p tcp --dport 3869 -j DNAT --to 192.168.10.40

관련 정보