2012-02-20 97 views
2

如果服務器1同時擁有我的數據庫和Memcached以及www.website1.co.uk - 該網站將正常工作。多服務器和Memcached

但是如果我有以下情形:

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

我將如何設置此所以WEBSITE2和WEBSITE3都可以連接,讀取和寫入服務器1 memcached的DB(已經可以連接到服務器1,並讀寫數據庫而無需memcache)。

我需要在服務器2和服務器3上安裝Memcache才能連接嗎?

我以前從未使用過memcache,因此它是一種學習體驗。

回答

4

如果服務器1到3在同一個網絡上,則可以安裝每個應用程序服務器上的memcache而不用擔心,因爲Memcache專爲集羣體系結構而設計。這僅僅意味着你可以像任何你想要的那樣運行多個實例,但是你的應用程序將它看作是一個巨大的內存緩存。

要套用的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); 
} 

是您的問題是有關縮放?如果是這樣的話:

我見過一些人說你的緩存服務器在數據庫服務器上。恕我直言,這不是非常有效,因爲您希望爲您的數據庫服務器提供儘可能多的物理內存(取決於您的網絡應用程序的流量和負載多大)。

我會爲每個應用程序服務器(服務器2和服務器3)分配一部分內存用於高速緩存目的。這樣,如果你想擴展,你只需再配置一個應用程序服務器,檢查你的源代碼並將其添加到你的網絡中。這樣,當您將應用程序服務器添加到服務器池時,內存緩存的大小將以線性方式增大(或多或少)。

以上都假設所有服務器都明顯在1個網絡上。

+0

是的,它與縮放有關,這正是我所希望的答案 - 非常感謝賈胡法爾。 – user1221488 2012-02-21 10:51:35

+0

我是否正確地說,無論何時添加新的緩存服務器,我都需要通過調用添加服務器的方法來告訴memcached,假設存在這種方法。 – Pingpong 2014-03-02 00:49:43