如果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,所以这是一次学习经历。
答案 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个网络上。