다음 설정으로 구성된 서버 클러스터가 있습니다.
2개의 NIC가 있는 2개의 가상 서버. eth0(사설 네트워크 10.0.0.0/16) 및 eth1(공용 네트워크 77.1.2.0/24, 게이트웨이 77.1.2.1)
HA-01 VPS의 경우 eth0의 개인 IP를 10.0.0.1로 설정했습니다. HA-02 VPS의 경우 eth0의 개인 IP를 10.0.0.2로 설정했습니다.
Pacemaker/Corosync 클러스터는 개인 IP 주소와 복제 리소스(IPAddr2)로 정의된 가상 IP(77.1.2.4) 사이에 설정되어 두 노드 사이를 이동할 수 있습니다.
pcs resource create VirtualIP1 ocf:heartbeat:IPaddr2 ip="77.1.2.4" cidr_netmask="24" nic="eth1" clusterip_hash="sourceip-sourceport" op start interval="0s" timeout="60s" op monitor interval="1s" timeout="20s" op stop interval="0s" timeout="60s" clone interleave=true ordered=true
문제는 전 세계에서 해당 IP 주소에 액세스할 수 없다는 것입니다. 경로가 누락된 것을 발견하여 고정 경로를 추가했습니다.
ip r add default via 77.1.2.1 dev eth1
하지만 여전히 이 서버에서 google.com을 핑할 수 없으며 전 세계가 해당 IP에서 해당 서버를 볼 수 없습니다. 또한 다음과 같이 eth1의 동일한 서브넷에서 IP 주소를 추가해 보았습니다.
HA-01 eth1: 77.1.2.2
HA-02 eth1: 77.1.2.3
이 IP를 통해 서버는 전 세계에서 볼 수 있지만 VirtualIP 리소스를 추가하면 가상 IP 주소를 통해 액세스할 수 없습니다. 또한 라우팅 테이블에 소스 IP를 추가해 보았습니다.
ip r add default via 77.1.2.1 src 77.1.2.4
소용이 없습니다. 이 VirtualIP가 제대로 작동하게 하려면 어떻게 해야 할지 모르겠습니다. 네트워크의 다른 서버에서는 77.1.2.4(가상 IP 주소)에 액세스할 수 있지만 네트워크 외부의 서버에서는 액세스할 수 없습니다.
방화벽이 설정되고 고가용성 포트가 명령을 통해 전달됩니다.
firewall-cmd --add-service="high availability"; firewall-cmd --add-service="high availability" --permanent
여기서 내가 놓친 것이 있나요? 서버의 인터페이스 중 하나에 해당 주소(77.1.2.4 - 가상 IP)만 추가하면 작동합니다. ARP 테이블에 문제가 있는 걸까요, 아니면 라우터가 일부 트래픽을 차단하는 것일까요?
답변1
이 질문을 살펴보십시오.https://serverfault.com/questions/778997/pacemaker-virtual-ip-loadbalancing-with-clone-and-clusterip
라우팅 문제인 것 같아요. 질문의 마지막 설명을 시도해 보세요 strzelecki.maciek
. 그는 iptables 사전 라우팅을 적용했는데, 이는 많은 도움이 되었습니다. 어쩌면 당신의 경우일 수도 있습니다.