
특히 Varnish 3에서 디렉터의 백엔드가 정상인지 확인하는 방법이 있나요?
내 사용 사례는 여러 웹 서버 앞에 있는 2개의 광택 상자에 트래픽을 분산시키는 로드 밸런서를 가지고 있다는 것입니다. 요청을 실제 백엔드로 전달하지 않고 디렉터에 하나 이상의 정상 백엔드가 있는 경우 Varnish가 로드 밸런서의 상태 확인에 200을 반환하도록 하고 싶습니다.
나는 다음과 같은 것을 찾고 있습니다 :
if (req.url ~ "healthcheck.html") {
if (my_director.has_healthy_backend) {
return 200
} else {
error 500 "No backends available"
}
}
답변1
가장 중요한 것은 디렉터가 프로빙을 설정하도록 하여 실제로 백엔드에 상태가 있다는 것입니다. 그렇다면 다음과 같이 사용할 수 있습니다.
sub vcl_recv {
if (req.url ~ "healthcheck.html") {
if (!req.backend.healthy) {
error 503 "No backends available";
} else {
error 200 "All is well";
}
}
[...rest of your logic...]
답변2
동등한 Varnish 4 솔루션은 다음과 같습니다.
if (req.url ~ "healthcheck.html") {
if (!std.healthy(req.backend_hint)) {
return (synth (503, "No backends available"));
}
else {
return (synth (200, "All is well"));
}
}