标签: scaling

负载平衡 Drupal 服务器:在服务器之间共享数据的好方法?

我正在尝试概述我将如何创建负载平衡的 Web 服务器设置。设置实际的负载平衡器并添加两个或更多 Web 服务器似乎很公平。但是,我无法决定文件的最佳设置是什么。

Web 服务器将运行 CMS 系统(在本例中为 Drupal)。可能有用户上传的与内容相关的文件,所有网络服务器都应该可以访问这些文件。现在,我想简单地拥有一个指定的文件服务器并在每个 Web 服务器上安装一个文件目录,以便各种 Web 服务器可以访问这些“共享”文件。

但是,如果我们谈论的是 4-5 个服务器,这个解决方案会成为瓶颈吗?我认为安装将通过 SSH 完成。

高度赞赏所有帮助!

更新(2013 年 1 月 15 日)

我决定结合使用 Csync2 和 Lsyncd。然后我设置了两个充当镜像的服务器。Lsyncd 侦听某些目录(及其子目录)中的更改并调用负责将文件同步到其他服务器的 Csync2。如果您有兴趣了解更多信息,请查看本教程

cluster scaling web-server load-balancing drupal

6
推荐指数
3
解决办法
6621
查看次数

AWS - 如何更快地为海外用户提供服务

我们的基础设施依赖于 us-east-1 区域的 AWS。(EC2、CloudFront、RDS、ElastiCache)

我们现在有越来越多来自亚太地区的用户。用户开始抱怨我们网站的网络速度。(请注意,我们已经在使用 CloudFront 来提供静态资产)

研究后的一些线索:

  1. 将一组基础设施克隆到亚太地区(例如 JP)
    • $$ 关注
    • 通过快速测试发现的一个事实:us-east-1 <---> ap-norteast-1 之间的延迟约为 160-180 毫秒。
    • 在我们的案例中不太可行。尽管我们可以在 JP 中创建 DB 只读副本,但 Web 服务器仍然必须向美国发送写操作。
    • ElastiCache 不支持跨区域。IE。美国 ElastiCache 只能由美国 ec2 实例访问。
  2. 每个区域中的一个 VPC,将两个 VPC 与 IPSec/VPN 隧道互连。JP 仅包含 Web 服务器,所有其他服务都保留在美国。
    • 尽管如此,美国和日本之间仍有延迟
  3. 在#2 中为 VPN 隧道使用 WAN 优化器
    • 任何人都有这方面的经验?我在谷歌中找不到很多关于 VPC 到 VPC 优化的信息......
  4. 使用 CloudFlare 的 Railgun
    • 我们只需要在美国的 web 服务器上安装 Railgun 监听器
    • 简单得多,我们甚至不需要在 JP 中运行任何东西

我的问题:

  • 最佳方式/行业最佳实践是什么?扩展到另一个地区?我知道有些公司的基础设施只在一个地区,但他们如何确保海外用户的速度?
  • 对于#2,持久隧道有帮助吗?
  • 对于#2/#3,假设地域之间的延迟和网速可以优化,那么JP真的有必要有web服务器吗?在 JP 中只有代理服务器来代理对美国 Web 服务器的请求怎么样?

任何帮助将不胜感激,谢谢:D

scaling network-speed amazon-web-services

6
推荐指数
2
解决办法
1074
查看次数

何时是添加单独的数据库服务器、添加更多 Web 服务器的合适时机?

通常 Web 项目开始时很小,一切都在一台服务器上。但是,如果站点变得流行,一台服务器是不够的。
所以,由于我在这方面没有任何经验,我想了解
一下:1. 什么样的负载意味着我需要将我的 MySQL 数据库移动到一个单独的服务器以及如何衡量这个负载?
2. 什么样的负载意味着我需要添加另一个Web服务器,如何衡量?
3.大约,一台服务器可以服务多少用户?

我说的是 LAMP 服务器上的简单 PHP 应用程序,如下所示:
* CPU:Athlon 3800+
* CPU 详细信息:2 x 2.0 GHz
* RAM:1 GB RAM
* 硬盘:2 x 160 GB(RAID 1 软件)

scaling web-server capacity-planning

5
推荐指数
1
解决办法
3766
查看次数

我的网站如何拥有 2 个数据库服务器?

我有一个流量很大的站点,而我的数据库服务器 (mysql) 在高峰时段流量很大。我没有升级到更好的服务器,而是考虑让 2 个数据库服务器一起工作,以便可以“拆分”繁重的流量。

我的问题是这怎么会发生?2 台不同的机器如何处理 1 个数据库?实现这样的事情的常见做法是什么,你建议我做什么?

我的 Web 服务器将如何与数据库服务器通信?Web 服务器应该只与其中一个通信还是与它们两个通信?

mysql scaling

5
推荐指数
2
解决办法
4093
查看次数

Memcached 扩展策略

目前我正在运行一个带有 4 个专用内存缓存服务器的生产环境,每个服务器都有 48Gb 的 RAM(42 个专用于内存缓存)。现在他们做得很好,但流量和内容正在增长,明年肯定也会增长。

您对进一步扩展 memcached 的策略有何看法?到目前为止你做得如何:

您是否向这些机器添加更多 RAM 直到它们的容量达到最大——在相同数量的机器上有效地将缓存池翻倍?或者您是否通过添加更多相同的框,使用相同数量的 RAM 来水平扩展。

当前的机器肯定可以处理更多的 RAM,因为它们的 CPU 负载很低,唯一的瓶颈是内存,但我想知道分配缓存是否不是一个更好的策略,使事情变得更加冗余并最大限度地减少对缓存的影响丢失一盒(丢失 48Gb 缓存与丢失 96Gb)。你会(或让你)如何处理这个决定。

memory scaling memcached

5
推荐指数
1
解决办法
1004
查看次数

使用基于位置存储的数据在国际上对 MongoDB 进行分片

我们希望在全球范围内建立数据中心并切换到像 MongoDB 这样的 NoSQL 数据库,以支持将我们的数据分布在这些数据中心上(并且作为一个令人愉快的副作用,引入更多的冗余、故障转移等)。

然而,全球数据中心的原因主要是为了加快附近国家用户的响应时间,而不是故障转移功能。Web 应用程序旨在用于公司规模,而这些公司中很少有人在全球范围内运营。因此,由于世界一侧的许多用户永远不需要访问另一侧用户的数据,如果数据可以保存在大多数用户本地的服务器上,那就太好了。

我曾希望我可以使用 mongodb 的分片功能让数据像这样分布到全球,同时仍然允许从一个位置访问和维护(这会很慢,并查询国际服务器)。不幸的是,我能找到的关于这种行为的唯一参考是在 MongoDB 博客上提到了“智能归位”,没有别的。虽然可以在全球范围内同步所有内容,但至少在其中一个国家/地区中,效率低下且未计量的带宽不是一种选择。

mongodb 可以支持这种行为吗?关于如何让这种设置工作的任何进一步信息(或者为什么我不应该让这个设置工作,因为它会使小猫死亡等)将不胜感激。

scaling mongodb

5
推荐指数
1
解决办法
581
查看次数

多个网络服务器共享一个数据库服务器

我正在考虑迁移到 mosso 以拥有几个便宜的应用服务器。

目标是拥有一个专用的数据库服务器,但是,拥有一个数据库服务器来承载许多不同网站服务器(每个网站上都有不同的网站)的数据库需求是否有意义?

谢谢。

ubuntu scaling

4
推荐指数
1
解决办法
597
查看次数

对大型 Web 应用程序架构的建议?

这是一个大问题:)我们正在运行一个网站,其中 LAMP 并不大,5 个 Web 服务器具有 LVS 负载平衡,3 个 MySQL 服务器具有复制和读写分离,我们使用 Memcached 进行缓存和一些全文搜索工具。到目前为止,它运行良好,因为我们目前没有大量流量。

但是当用户快速增长时,我们将不得不扩展我们的架构以满足需求。也许会介绍分布式文件系统和数据库(以及并行计算?),以及一些集群和维护技术(如 Gearman 和 Pshell)。

网上有一些文章,我可以浏览一下。但是我真的需要一些实践经验来切实有效地准备这个问题。

scaling web architecture

4
推荐指数
1
解决办法
6362
查看次数

最大化 HAProxy 负载均衡器上的 TCP 连接

我目前正在使用 HAProxy 来平衡从客户端到我的 Erlang 应用服务器的 tcp 连接。连接是持久的,这意味着我在优化的服务器上仅限于大约 64K 个客户端(我目前在 m1.large EC2 实例上运行 HAProxy)。我的应用程序服务器旨在根据 TCP 连接数进行水平扩展。但让我担心的是,我需要与应用程序服务器数量相同的 HAProxy 服务器,因为它是 1:1 连接。目前有没有办法“代理”到应用服务器的 tcp 连接,这样一旦 HAProxy 将客户端发送到我的 Erlang 服务器,它就可以释放连接,准备为另一个客户端提供服务?有没有我可以阅读的论文和现有解决方案,以便我只需担心应用服务器上的 64K 限制,

linux scaling load-balancing haproxy

4
推荐指数
2
解决办法
2万
查看次数

创建一个稳定的、自动扩展的应用服务器集群

我有两台服务器,每台服务器运行 50 到 100 个不同的遗留 web 应用程序,使用从 PHP 到 Python 到 Ruby-on-rails 到 NodeJS 的语言编写。

我们想淘汰这些机器,因为它们很旧、不安全、组织不严、没有一致的配置逻辑,而且mysqld每台机器都运行两个实例(不要问)。

为此,我想做以下事情:

  • 删除任何现已折旧的遗留项目
  • 以某种方式将每个应用程序沙箱化,可能进入它自己的 Docker 或Passenger 容器
  • 将新服务器创建为自动扩展的无状态集群,将每个 MySQL 数据库移动到其自己的 RDS 实例
  • 甚至可能能够以类似于 Heroku 的方式自动缩放非活动应用程序

最终,我想做一些类似于DeisFlynn所做的事情,尽管目前这些都不是生产就绪的。

老实说,我对这一切有点不知所措,真的不知道从哪里开始。有什么建议?乘客是我应该考虑的事情吗?码头工人?

谢谢!

mysql cluster scaling phusion-passenger docker

4
推荐指数
1
解决办法
1583
查看次数