2012-02-20 6 views
2

サーバー1にmyデータベースとMemcachedとwww.website1.co.ukの両方がある場合、サイトは正常に動作します。複数のサーバーとMemcached

しかし、私は次のシナリオがある場合:私はそうWEBSITE2とWEBSITE3これを設定する方法を

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

をすべては(彼らはすでにに接続することができます読んで、サーバ1上のmemcachedのDBへの書き込み、接続することができますサーバー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つのアプリケーションサーバーをプロビジョニングし、ソースコードをチェックアウトしてネットワークに追加するだけです。この方法で、メモリプールのサイズは、アプリケーションサーバーをサーバープールに追加するにつれて、線形に(多かれ少なかれ)大きくなります。

上記のすべては、すべてのサーバーが明らかに1つのネットワーク上にあることを前提としています。

+0

これはスケーリングに関連していました。これはまさに私が望んでいた答えです - ありがとうJahufar。 – user1221488

+0

私は、新しいキャッシュサーバが追加されたときはいつも、そのようなメソッドが存在すると仮定して、サーバを追加するメソッドを呼び出すことによってmemcachedに何とか伝える必要があります。 – Pingpong

関連する問題