nginx와 memcached는 얼마나 잘 작동합니까?


14

Glassfish 앱 서버 클러스터 에서 실행되는 Java EE 기반 웹 응용 프로그램이 있습니다. 들어오는 트래픽은 주로 애플리케이션 리소스의 XML 기반 표현에 대한 RESTful 요청이지만 트래픽의 5 %는 JSON 또는 XHTML / CSS 기반 표현에 대한 것일 수 있습니다.

현재 클러스터의 Glassfish 인스턴스에 들어오는 트래픽을 분산시키기 위해로드 밸런싱 솔루션을 조사하고 있습니다. 또한 키가 REST 자원 이름 (예 : "/ user / bob", "/ group / jazzlovers")이고 값이 대응하는 XML 표현

유망하게 들리는 한 가지 방법은 하나의 돌로 두 마리의 새를 모두 죽이고 가볍고 빠른 nginx HTTP 서버 / 역 프록시를 사용하는 것입니다. Nginx는 memcached에서 URI를 먼저 조회하여 각 수신 요청을 처리하여 만료되지 않은 XML 표현이 이미 있는지 확인합니다. 그렇지 않은 경우 nginx는 Glassfish 인스턴스 중 하나로 요청을 보냅니다. nginx memcached 모듈은 이 짧은 쓰기에 설명되어 있습니다.

nginx와 memcached에 대한 전반적인 인상은이 방법으로 어떻게 사용됩니까? 학습에 가장 도움이되는 자료는 무엇입니까? 당신이 그들을 시도하고 그들이 당신의 목적에 맞지 않는다면, 왜 그렇지 않고 대신에 무엇을 사용 했습니까?

참고 : 관련 질문이 있습니다. ServerFault에 대해 알기 전에 StackOverflow에서 이것을 요청했습니다 .

편집 : 직접적인 경험은 없었지만 지금까지의 모든 대답은 상당히 도움이되었습니다. 이 답변 은 결국 StackOverflow에 나타 났으며 nginx / memcached 설정에서 매우 낙관적이었습니다.


멋지다. 우리는 아마 아마 다음 달쯤에 그것을 실험 할 것입니다
Jim Ferrans

답변:


6

웹 서버 앞에서 캐시 서버를 사용해야합니다. Varnish-cache를 권장합니다. 우리는 스칸디나비아에서 가장 크고 가장 바쁜 웹 사이트와 함께 직장에서 사용합니다. 우리는 13 개의 고부하 오징어 박스를 1 개의 바니시 박스로 교체했으며 1 개는 스페어 박스로 교체했습니다.

개인 웹 사이트에서 간단한 앱을 벤치마킹했으며 초당 9 건의 요청에서 2000 건으로 변경되었습니다.

메모리에 물건을 보관하는 기간을 결정하고, 끝날 때까지 수행 한 다음 데이터가 변경되면 http purge 요청을 캐시 서버로 보냅니다.


1
그러나 nginx 캐시 는 Varnish보다 분명히 빠릅니다 .
VBart

4

내 개인적인 견해로는 경험에 따르면로드 밸런서를 사용하는 경우 해당 상자를 전체적으로로드 밸런싱 기능으로 제한하려고합니다. 캐시 에서조차도로드 밸런서가 컨텐츠를 제공하게되면로드가 높은 상황에서로드 밸런싱 기능이 저하됩니다 (더 많은 연결이 더 오래 활성화되어 전체 용량 및 처리량이 감소 함).

앱 자체에서 조회를 수행하고 캐시 된 콘텐츠를 제공하고로드 밸런서가 작업을 수행하도록하는 것이 좋습니다. nginx는로드 밸런싱에있어 완벽하지는 않습니다. 아주 기본적인 라운드 로빈 알고리즘 만 제공합니다. 대신 haproxy를 권장합니다. SSL 해독 서비스가 먼저 필요한 경우 nginx는 내 경험에 따라 haproxy 앞에 잘 작동합니다.


1

로드 밸런싱, 고 가용성 등과 같은 것들이 필요할 경우 막 다른 골목에 갈 것이라고 생각합니다.

또한 이러한 상황을 고려하십시오. 사용자가 인증 된 페이지가 다르게 보일 경우 각 사용자마다 추가 기능을 사용할 수 있고 개별화됩니다. URL은 링크 등의 편의를 위해 동일합니다. 예를 들어, 인증 된 사용자가 주석을 위해 이름 / 보안 문자를 입력 할 필요가없는 사이트 또는 u가 로그인 할 때 (서버 오류와 같이) 사용자 이름이 맨 위에 표시됩니다. 이 경우 인증 된 사용자와 인증되지 않은 사용자를 구별 할 수 없으므로 nginx를 사용할 수 없습니다.

SSL이 필요하지 않으면 Varnish를 실행하는 것이 좋습니다. 웹 서버 나 프록시가 아닌 HTTP 가속기로 설계되었습니다. SSL이 필요한 경우 니스는 SSL을 처리 할 수 ​​없으므로 SSL 가속기로 nginx를 실행하고 일반 HTTP 가속기로 니스를 바릅니다.

캐싱 서버의 선택은 응용 프로그램마다 다르며 응용 프로그램에 대한 심층 분석 없이는 그것에 대해 일반적인 의견을 말할 수 없습니다.


1

내 선택은 haproxy입니다. 매우 작고 매우 빠른 리버스 프록시이지만 캐시 프록시는 아닙니다! 캐시 시스템 "Squid Web Proxy"에 사용합니다

CACHE /squid/ -> Load-balancing /Haproxy/ -> WEB I /lighttpd/
                                          -> WEB II /lighttpd/
                                          -> WEB III /lighttpd/

이것은 내 웹 시스템에 완벽하게 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.