2011-08-17 2 views
3

두 개의 서버 web1 및 web2가 있으며 각 서버에는 아파치와 광택이 실행됩니다. 로드 밸런싱은 지속 시간이 30 분입니다.여러 광택 캐시 서버 동기화

Google 테스트에서 한 페이지의 니스 (예 : web1)에는 페이지가 캐시되지만 web2의 니스에는 캐시되지 않은 경우가 있습니다.

동기화 상태를 유지하는 방법이 있습니까? 따라서 web1에서 페이지가 캐싱 (또는 제거) 될 때 web2에로드되거나 제거됩니다.

감사합니다.

답변

1

하나의 바니시를 다른 바니시의 백엔드로 사용할 수 있습니다.

당신은 같은 것을 수행 할 수 있습니다

// use random director so you can fall back to web 
director varnish random { 
    { 
     .backend = varnish2; 
     .weight = 100000000; 
    } 
    { 
     .backend = web; 
     .weight = 1; 
    } 
} 

acl othervarnish { 
     "{hostname}"; 
} 

sub vcl_recv { 
    set req.backend = web; 

    // switch backend to varnish only if you haven't come from there 
    if (!client.ip ~ othervarnish) { 
    set req.backend = varnish; 
    } 
} 

을하지만이 doesn't work with ESIs 것 같다 있습니다.

+0

감사합니다. @Pax. 두 개의 광택 서버를 '병렬'로 사용하는 방법은 없습니다. 우리는 절반이 실패 할 경우에 대비하여 두 가지 선행을합니다. 저 여분을 유지하는 것이 좋을. –

0

나는 또한 동등한 문제를 해결하기위한 해결책을 찾고 있지만 아직 찾지 못했습니다.

해결 방법이 될 수있다 :

이 당신의 웹 서버 전에 HAProxy을 넣고 끈적 끈적한 세션을 활성화합니다. 따라서 사용자는 전에 방문한 하나의 바니시 서버로만 연결되며 동일한 캐시 된 데이터를 보유합니다.

바니시를 올바르게 제거하려면 스크립트 또는 응용 프로그램이 모든 바니시 서버 목록을 반복하여 하나씩 제거해야합니다.

내 의견으로는이 솔루션은 권장하지 않습니다. 바니시는 모든 서버가 시간 경과에 따라 동기화 할 수있는 그리드 설정을 지원해야합니다 (결과 일관성).