2012-02-20 4 views
2

서버 1에 내 데이터베이스와 Memcached 및 www.website1.co.uk이 모두있는 경우 사이트가 정상적으로 작동합니다.여러 서버 및 Memcached

하지만 나는 다음과 같은 시나리오가있는 경우 : 모든 그들은 이미 연결할 수 있습니다 (읽기 및 서버 1에서 memcached를 DB에 쓰기 연결할 수 있습니다 나는이 최대 그렇게 WEBSITE2 설정합니다 어떻게

Server 1 - Database - Memcached - website1.co.uk 
Server 2 - website2.co.uk 
Server 3 - website3.co.uk 

및 WEBSITE3을 서버 1 및 memcache없이 DB 읽기 및 쓰기).

연결하려면 서버 2와 서버 3에 Memcache를 설치해야합니까?

이전에는 memcache를 사용한 적이 없기 때문에 학습 경험이되었습니다.

답변

4

서버 1 ~ 3이 동일한 네트워크에 있으면 Memcache가 클러스터 된 아키텍처 용으로 설계 되었기 때문에 걱정할 필요없이 각 응용 프로그램 서버에 memcache를 설치할 수 있습니다. 이는 단순히 원하는만큼 많은 인스턴스를 실행할 수 있지만 응용 프로그램은이를 1 개의 거대한 메모리 캐시로 간주한다는 것을 의미합니다.

은 의역하려면 memcached와의 project wiki :

//in your configuration file: 

$MEMCACHE_SERVERS = array(
    "10.1.1.1", //web1 
    "10.1.1.2", //web2 
    "10.1.1.3", //web3 
); 


//at the 'bootstrapping' phase of your app somewhere: 

$memcache = new Memcache(); 
foreach($MEMCACHE_SERVERS as $server){ 
    $memcache->addServer ($server); 
} 

이 질문이 확장 관련이 있습니까? 그렇다면 :

DB 서버 자체에 캐시 서버가 있다고 말하는 사람들이 있습니다. IMHO, 이것은 DB 서버에 최대한 많은 물리적 RAM을 제공하려는 경우 매우 효과적이지 않습니다 (웹 애플리케이션의 트래픽 및로드 측면에서 얼마나 큰지에 따라).

캐싱을 위해 각 응용 프로그램 서버 (서버 2 및 서버 3)에 메모리의 일부를 할당합니다. 그렇게하면 수평 확장을 원할 경우 애플리케이션 서버를 하나 더 프로비저닝하고 소스 코드를 체크 아웃하여 네트워크에 추가하면됩니다. 이렇게하면 응용 프로그램 서버를 서버 풀에 추가 할 때 메모리 캐시 크기가 선형 방식으로 증가합니다 (다소 차이가 날 수 있음).

위의 모든 내용은 모든 서버가 분명히 1 개의 네트워크에 있다고 가정합니다.

+0

그래, 스케일링과 관련이 있었고 이것은 정확하게 제가 바라던 답변이었습니다 - 대단히 감사합니다 Jahufar. – user1221488

+0

맞습니다. 새로운 캐시 서버가 추가 될 때마다 서버를 추가하는 메소드를 호출하여 memcached에 그러한 메소드가 있다고 가정하고 어떻게 든 말해야합니다. – Pingpong