我正在研究为基于 Moodle 的教育网站设计一个架构,它最初将为数千名用户提供服务,但需要能够发展以支持多个国家/地区的数十万到数百万用户。
我正在考虑使用负载平衡器将请求分发到多个 Web 服务器。网络服务器可以被一些服务静态内容和一些服务动态内容分开。然后就是写入一个mysql master节点,从slave节点读取。
什么样的负载均衡器适合moodle,我应该从其中一家供应商那里获得硬件负载均衡器解决方案,还是自己使用LVS或反向代理等开源解决方案构建一个?
我最初计划使用 apache 服务器来为网页提供服务,然后随着负载的增加,分为用于静态内容的 lighttpd 网络服务器和用于动态内容的 apache 应用程序服务器。如果需要,也将部署 gzip 压缩、squid 缓存、memcache 等内容。
对于 web 服务器硬件,我应该使用 one-u 单插槽服务器还是刀片解决方案?哪一个最终的运行和扩展成本更低?Supermicro 有一个有趣的产品,1u 机箱中的双服务器和 2U 机箱中的 4 个服务器和 infiniband。这里有人试过这些服务器吗?
对于存储,我应该使用 SAN 或 Sun 统一存储 7000 之类的存储服务器就足够了。对于 mysql 集群设置,我应该有两个不同的存储系统,一个用于主节点写入访问,另一个用于从节点读取?还是所有节点都应该有单独的存储?
由于这个网站可能会比较重读操作,那么mysql集群和存储设置应该考虑什么?
对于管理部分,我计划使用 dsh、ganglia、nagios、splunk、kickstart。
对于备份,我计划使用 LTO 磁带自动加载机。该站点将主要用于亚洲地区,因此夜间会有几个小时的低流量。备份 mysql 集群的最佳方法是什么?我可以暂时禁用写入并取出 master 来执行备份吗?
请告知您是否有建立这种可扩展网站的经验,我的大部分经验都是在使用大型 unix 机器或较小的独立 unix/linux 机器方面。所以这种横向扩展的实现对我来说是第一次。
谢谢
罗伯特。
如果我们要制作像youtube这样的东西,那么存储视频的方法应该是什么?知道 youtube 是做什么的吗?
我将构建一个高性能的 Web 服务。它应该使用数据库(或任何其他存储系统)、某种处理语言(脚本或非脚本)和网络服务器守护程序。系统应分布在大量服务器上,以便服务运行快速可靠。
它应该复制数据以实现可靠性,同时它必须提供分布式计算功能以处理大量数据(主要是对无法在具有适当响应水平的单个服务器上执行的大型数据库的查询) )。缓存技术不在主题之列。
我应该考虑哪些集群/云解决方案?
有很多单系统映像 (SSI)、集群文件系统(可以是设计的一部分)、Hadoop、BigTable 克隆等项目等等。每个都有其优点和缺点,“关于”页面总是说解决方案很棒:) 如果您尝试部署解决该主题的内容 - 分享您的经验!
UPD:它不是文件托管,也不是游戏,而是具有交互性的东西。您可以将 ServerFault 作为 Web 服务的示例:小块数据、半静态内容、密集型数据库操作。
对于那些可能感兴趣的人:
相关问题:
我为 2010 年安排的主要项目之一是试图减轻我目前管理的网络中的一些单点故障 (SPOF)。我们目前有一个包含几十台服务器的数据中心机架。
在机架内部,我们是冗余且有弹性的,每台服务器有 2 个磁盘,并且可以承受一个故障。
我们的数据存储服务器有3个以上的磁盘,可以承受一个故障。我们也可以快速修复/更换损坏的硬件。每台服务器至少有一个复制伙伴,我们可以承受每个集群(即 Web、数据库、存储)中的 1 或 2 个丢失。
互联网连接由 2 100MBit 馈送通过以太网提供给我们的主要传输提供商,连接到高可用性故障转移对中的一对 Cisco ASA5500 防火墙。这不是问题。
在我看来,两个大的 SPOF 如下:
1) 我们的互联网来自一个单一的传输提供商。如果他们的网络出现故障,我们就会断开互联网。由于我们位于运营商中立的数据中心,因此很容易获得第二个 IP 传输。
2) 如果我们数据中心的电源出现问题,那么我们也会消失。
理想情况下,我希望 2 个数据中心中的服务器都使用多个 IP 传输提供商的不同路由,并通过 BGP 发布。
在第二个数据中心,我将配置 2 个 cisco 28xx 系列路由器、2 个 ASA 5500 防火墙、一对 Catalyst 48 端口交换机和十几个戴尔服务器。大致匹配主要位置。
管理层声称这种方法涉及大量费用,而且 BGP 路由过于昂贵。虽然他们似乎很高兴拥有第二个位置,但 BGP 似乎不在考虑之列。
多宿主的最后报价接近 8 万英镑。(也许他们正在询问镀金思科的报价!)
相反,管理层认为这最好使用基于 DNS 的解决方案来解决,其中我们的路由由状态正常运行时间监控服务(如 pingdom)控制,该服务更改我们的 DNS 记录(具有 1 秒 TTL)以指向替代位置在服务器故障的情况下。
大量公司出于某种原因使用 BGP,这种 DNS 解决方案不会削减它,特别是考虑到如此多的 ISP 等实际上无视短 TTL 并用更长的 TTL 替换它们。
问题:
1) 任何人都可以在西欧(阿姆斯特丹等)或美国东部(DC、VA、NY 等)推荐一个好的运营商中立数据中心吗? …
我最近推出了一个非常受欢迎的网站,但我在可扩展性方面遇到了问题。我的站点大量使用FFmpeg,并且在高峰时间 RAM 使用率迅速达到 2 GB 点,并且交换文件开始被使用。CPU 使用率也开始上升。
用户抱怨网站速度慢。他们这样说是因为所有 FFmpeg 实例由于同时运行的数量而运行速度非常慢。用户在我的服务器上实时使用 FFmpeg。
有什么我可以考虑或做些什么来减轻服务器和 RAM 的使用量的吗?也许有比 FFmpeg (!) 更好的东西。
在更强大的服务器上“扔一些现金”是唯一的解决方案吗?
我提供的信息很少,请要求更多,这样问题就可以解决了。
我想知道SVN是否对它可以支持的用户和存储库数量有特定的限制?
谢谢你。
我访问了一些网站,注意到它们都使用 AJAX 技术来处理许多任务,例如聊天、消息等。他们显然使用了很多 httprequests。我的问题是,如果您使用 AJAX 构建一个简单的网站,并且您预计每小时只有几个人,然后您开始每小时有 1,000 名成员登录 - 如果您只是升级到更快的更大服务器,单个 Web 应用程序每小时可以处理更多请求或者你必须重写代码?您究竟如何“扩展”Web 应用程序?
不懂云,CPU有限,Memory也有限,可扩展性在哪里?是不是和VPS一样,带宽成本更高?
那么云计算提供了哪些扩展优势?
如果您将公共网络连接(比如 1 Gbps)耗尽到将请求代理到后端服务器的 haproxy 服务器,您有哪些选项可以扩展它?
由于所有请求流量都流经 haproxy,如果您的端口上没有剩余带宽,您如何扩展此设置?
我需要设置一些 VPS 来提供静态内容(许多小文件)。我计划为此使用 Nginx,并希望对其进行设置,以便我们能够相对轻松地横向扩展。要求是:
我目前的计划是:
一个明显的问题是“主”服务器是单点故障(对此有什么补救措施?)。 还有其他我忽略的潜在问题吗?这里是否存在不能以这种方式很好地扩展的元素?有人会建议另一种方法吗?
关于内存要求,我假设我应该尽可能多地提供每个 Nginx 服务器,以便可以缓存热文件(通过操作系统?Nginx?)而不必不断从 NFS 共享中请求。
最后,我疯了不使用 CDN 吗?
scalability ×10
linux ×2
apache-2.2 ×1
architecture ×1
bgp ×1
cisco ×1
cloud ×1
cluster ×1
ffmpeg ×1
haproxy ×1
moodle ×1
mysql ×1
networking ×1
nginx ×1
performance ×1
repository ×1
storage ×1
svn ×1
ubuntu ×1
unix ×1
users ×1
vps ×1