【问题标题】:Multiple Servers And Memcached多台服务器和 Memcached
【发布时间】:2012-02-20 16:26:06
【问题描述】:

如果服务器 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 db(它们已经可以连接到服务器 1 并在没有 memcache 的情况下读取和写入数据库)。

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

我以前从未使用过 memcache,所以这是一种学习体验。

【问题讨论】:

    标签: php memcached


    【解决方案1】:

    如果服务器 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 );
    }
    

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

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

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

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

    【讨论】:

    • 是的,它与缩放有关,这正是我所希望的答案 - 非常感谢 Jahufar。
    • 我说得对吗,每当添加新的缓存服务器时,我需要通过调用添加服务器的方法以某种方式告诉 memcached,假设存在这样的方法。
    • 对于这样添加的服务器,每个memcache实例必须将监听IP从127.0.0.1设置为本地IP。例如;从-l 127.0.0.1-l 10.106.0.5。这必须为每台安装了 memcached 的服务器完成,并且 IP 必须设置为服务器自己的私有 IP 地址。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多