![Keepalived + LVS는 다른 호스트에서는 작동하지 않지만 LB의 localhost에서는 작동합니다.](https://rvso.com/image/632757/Keepalived%20%2B%20LVS%EB%8A%94%20%EB%8B%A4%EB%A5%B8%20%ED%98%B8%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%A7%80%EB%A7%8C%20LB%EC%9D%98%20localhost%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Keepalived + LVS가 설정되어 있습니다. 일을 하려고 합니다.
클라이언트, LB 및 실제 서버는 모두 동일한 서브넷에 있습니다.
연결 유지 구성:
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id ukld5p500x
}
vrrp_instance some_service {
state MASTER
interface em1
virtual_router_id 100
priority 100
virtual_ipaddress {
10.0.0.75
}
track_script {
chk_fail
}
}
virtual_server 10.0.0.75 58563 {
delay_loop 10
lb_algo rr
lb_kind DR
protocol TCP
real_server 10.0.0.70 58563 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 58563
}
}
... more real_servers ...
}
따라서 lb_type을 nat로 설정하면 LB 자체에서 VIP/포트로 연결할 수 있으며 외부 호스트(클라이언트)에서는 연결할 수 없습니다. lb_type을 DR로 설정하면 자체에 연결되는 LB나 외부 클라이언트 모두 연결할 수 없습니다.
sys.net.ipv4.ip_forward가 1로 설정되어 있고 atm으로 구성된 LB가 하나만 있습니다.
답변1
너무 오래되어서 이에 대한 답변을 얻었는지 모르겠지만 DR(직접 라우팅)은 NAT와 많이 다릅니다. NAT는 패킷을 실제 서버에 전달하여 로드 밸런서(LB)가 라우터처럼 작동하도록 하고, 실제 서버는 이를 LB에 다시 전달하여 클라이언트에 다시 전달합니다.
DR의 경우 LB는 의사 중개인일 뿐입니다. LB가 갖고 있는 VIP로 패킷이 들어오면 어느 RS(실제 서버)로 보낼지 결정하고,다시 작성MAC 주소를 변경하여 패킷 헤더를 변경합니다. 그런 다음 패킷을 스위치로 다시 전달하고 스위치는 일치하는 MAC 주소를 사용하여 패킷을 RS로 전달합니다.
그런 다음 인터페이스로 향하는 패킷을 수락하도록 RS를 속여야 합니다. 일반적으로 VIP를 루프백 어댑터에 추가하고 넷마스크 255.255.255.255를 제공하여 이를 수행합니다. 또한 이 VIP를 수신하도록 서비스 데몬을 구성해야 합니다(아파치에서는 추가 Listen xxxx:80 행을 추가하기만 하면 됩니다).
무엇보다도 ARP 문제를 처리해야 합니다. 일반적으로 추가
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth0.arp_ignore = 1
귀하의 sysctl.conf가 이를 처리할 것입니다.