多个服务器和Memcached

时间:2012-02-20 16:26:07

标签: php memcached

如果Server 1同时包含我的数据库和Memcached以及www.website1.co.uk - 该网站将正常运行。

但如果我有以下情况怎么办?

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

我如何设置它,以便website2和website3可以连接,读取和写入服务器1上的memcached数据库(它们已经可以连接到服务器1并在没有内存缓存的情况下读取和写入数据库)。

我是否需要在服务器2和服务器3上安装Memcache才能连接?

我之前从未使用过memcache,所以这是一次学习经历。

1 个答案:

答案 0 :(得分:4)

如果服务器1到3位于同一网络上,则可以在每台应用程序服务器上安装内存缓存,因为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 );
}

您的问题是否与缩放有关?如果是这样的话:

我见过有人说要在数据库服务器上安装缓存服务器。恕我直言,这不是很有效,因为您希望为您的数据库服务器提供尽可能多的物理RAM(取决于您的Web应用程序在流量和负载方面的大小)。

我会在每个应用程序服务器(服务器2和服务器3)上分配一部分内存用于缓存目的。这样,如果您想扩展,只需再配置一个应用程序服务器,检查源代码并将其添加到您的网络中。这样,当您将应用程序服务器添加到服务器池时,内存缓存的大小将以线性方式(或多或少)增长。

以上所有假设显然所有服务器都在1个网络上。