我正在尝试概述我将如何创建负载平衡的 Web 服务器设置。设置实际的负载平衡器并添加两个或更多 Web 服务器似乎很公平。但是,我无法决定文件的最佳设置是什么。
Web 服务器将运行 CMS 系统(在本例中为 Drupal)。可能有用户上传的与内容相关的文件,所有网络服务器都应该可以访问这些文件。现在,我想简单地拥有一个指定的文件服务器并在每个 Web 服务器上安装一个文件目录,以便各种 Web 服务器可以访问这些“共享”文件。
但是,如果我们谈论的是 4-5 个服务器,这个解决方案会成为瓶颈吗?我认为安装将通过 SSH 完成。
高度赞赏所有帮助!
更新(2013 年 1 月 15 日)
我决定结合使用 Csync2 和 Lsyncd。然后我设置了两个充当镜像的服务器。Lsyncd 侦听某些目录(及其子目录)中的更改并调用负责将文件同步到其他服务器的 Csync2。如果您有兴趣了解更多信息,请查看本教程。
我们的基础设施依赖于 us-east-1 区域的 AWS。(EC2、CloudFront、RDS、ElastiCache)
我们现在有越来越多来自亚太地区的用户。用户开始抱怨我们网站的网络速度。(请注意,我们已经在使用 CloudFront 来提供静态资产)
研究后的一些线索:
我的问题:
任何帮助将不胜感激,谢谢:D
通常 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 软件)
我有一个流量很大的站点,而我的数据库服务器 (mysql) 在高峰时段流量很大。我没有升级到更好的服务器,而是考虑让 2 个数据库服务器一起工作,以便可以“拆分”繁重的流量。
我的问题是这怎么会发生?2 台不同的机器如何处理 1 个数据库?实现这样的事情的常见做法是什么,你建议我做什么?
我的 Web 服务器将如何与数据库服务器通信?Web 服务器应该只与其中一个通信还是与它们两个通信?
目前我正在运行一个带有 4 个专用内存缓存服务器的生产环境,每个服务器都有 48Gb 的 RAM(42 个专用于内存缓存)。现在他们做得很好,但流量和内容正在增长,明年肯定也会增长。
您对进一步扩展 memcached 的策略有何看法?到目前为止你做得如何:
您是否向这些机器添加更多 RAM 直到它们的容量达到最大——在相同数量的机器上有效地将缓存池翻倍?或者您是否通过添加更多相同的框,使用相同数量的 RAM 来水平扩展。
当前的机器肯定可以处理更多的 RAM,因为它们的 CPU 负载很低,唯一的瓶颈是内存,但我想知道分配缓存是否不是一个更好的策略,使事情变得更加冗余并最大限度地减少对缓存的影响丢失一盒(丢失 48Gb 缓存与丢失 96Gb)。你会(或让你)如何处理这个决定。
我们希望在全球范围内建立数据中心并切换到像 MongoDB 这样的 NoSQL 数据库,以支持将我们的数据分布在这些数据中心上(并且作为一个令人愉快的副作用,引入更多的冗余、故障转移等)。
然而,全球数据中心的原因主要是为了加快附近国家用户的响应时间,而不是故障转移功能。Web 应用程序旨在用于公司规模,而这些公司中很少有人在全球范围内运营。因此,由于世界一侧的许多用户永远不需要访问另一侧用户的数据,如果数据可以保存在大多数用户本地的服务器上,那就太好了。
我曾希望我可以使用 mongodb 的分片功能让数据像这样分布到全球,同时仍然允许从一个位置访问和维护(这会很慢,并查询国际服务器)。不幸的是,我能找到的关于这种行为的唯一参考是在 MongoDB 博客上提到了“智能归位”,没有别的。虽然可以在全球范围内同步所有内容,但至少在其中一个国家/地区中,效率低下且未计量的带宽不是一种选择。
mongodb 可以支持这种行为吗?关于如何让这种设置工作的任何进一步信息(或者为什么我不应该让这个设置工作,因为它会使小猫死亡等)将不胜感激。
我正在考虑迁移到 mosso 以拥有几个便宜的应用服务器。
目标是拥有一个专用的数据库服务器,但是,拥有一个数据库服务器来承载许多不同网站服务器(每个网站上都有不同的网站)的数据库需求是否有意义?
谢谢。
这是一个大问题:)我们正在运行一个网站,其中 LAMP 并不大,5 个 Web 服务器具有 LVS 负载平衡,3 个 MySQL 服务器具有复制和读写分离,我们使用 Memcached 进行缓存和一些全文搜索工具。到目前为止,它运行良好,因为我们目前没有大量流量。
但是当用户快速增长时,我们将不得不扩展我们的架构以满足需求。也许会介绍分布式文件系统和数据库(以及并行计算?),以及一些集群和维护技术(如 Gearman 和 Pshell)。
网上有一些文章,我可以浏览一下。但是我真的需要一些实践经验来切实有效地准备这个问题。
我目前正在使用 HAProxy 来平衡从客户端到我的 Erlang 应用服务器的 tcp 连接。连接是持久的,这意味着我在优化的服务器上仅限于大约 64K 个客户端(我目前在 m1.large EC2 实例上运行 HAProxy)。我的应用程序服务器旨在根据 TCP 连接数进行水平扩展。但让我担心的是,我需要与应用程序服务器数量相同的 HAProxy 服务器,因为它是 1:1 连接。目前有没有办法“代理”到应用服务器的 tcp 连接,这样一旦 HAProxy 将客户端发送到我的 Erlang 服务器,它就可以释放连接,准备为另一个客户端提供服务?有没有我可以阅读的论文和现有解决方案,以便我只需担心应用服务器上的 64K 限制,
我有两台服务器,每台服务器运行 50 到 100 个不同的遗留 web 应用程序,使用从 PHP 到 Python 到 Ruby-on-rails 到 NodeJS 的语言编写。
我们想淘汰这些机器,因为它们很旧、不安全、组织不严、没有一致的配置逻辑,而且mysqld每台机器都运行两个实例(不要问)。
为此,我想做以下事情:
最终,我想做一些类似于Deis或Flynn所做的事情,尽管目前这些都不是生产就绪的。
老实说,我对这一切有点不知所措,真的不知道从哪里开始。有什么建议?乘客是我应该考虑的事情吗?码头工人?
谢谢!