我正在考虑devise一个基于Moodle的教育网站的架构,它最初将服务于数千个用户,但是需要能够成长为支持几个国家的数十万到数百万用户。
我正在考虑一个负载均衡器来分发请求到几个Web服务器。 Web服务器可以被一些静态服务和一些服务dynamic内容分割。 然后写入一个mysql主节点并从slave节点读取。
什么样的负载均衡器可以很好地与moodle配合使用,我应该从其中一个供应商那里获得一个硬件负载均衡解决scheme,还是使用像LVS或者反向代理这样的开源解决scheme来构build自己的解决scheme?
我打算首先使用apache服务器来为网页提供服务,然后当负载变得更高时,将其分解为静态内容的lighttpd webserver和dynamic内容的apache应用程序服务器。 像gzip压缩,鱿鱼caching,memcache的东西也将被部署,如果需要的话。
对于Web服务器硬件,我应该使用one-u单插槽服务器还是刀片解决scheme? 哪一个最终会更便宜地运行和扩展? 超微有一个有趣的产品,1U机箱中的双服务器和2U机箱中的4台服务器与infiniband。 有没有人在这里试过这些服务器?
对于存储,我应该使用SAN还是Sun统一存储7000等存储服务器就足够了。 对于一个mysql集群设置,我应该有两个不同的存储系统,用于主节点写访问和另一个奴隶读? 还是应该所有的节点都有独立的存储?
由于这个网站的读取操作可能会比较繁重,因此应该如何考虑mysql群集和存储设置呢?
对于pipe理部分,我打算使用dsh,ganglia,nagios,splunk,kickstart。
对于备份,我计划使用LTO磁带自动加载器。 这个网站主要用于亚洲地区,晚上会有几个小时的低stream量。 备份mysql群集的最佳方法是什么? 我是否可以暂时禁用写入并取出主服务器来执行备份?
请告诉我,如果您有设置这种可扩展的网站的经验,我的经验大部分是在使用大型unix盒子,或者更小的独立unix / linux盒子。 所以这种扩展实现对我来说是第一次。
谢谢
罗伯特。
罗伯特,你显然是一个聪明的人,但是恭敬地说,找一个具有以前的领域知识的顾问,或者现在开始build立一个小的东西,看看你需要的东西。 没有办法回答你的post; 它有太多的抽象概念,没有硬数字。
一些想法:
首先将服务于数千个用户…成长为支持数十万至数百万用户
certificate你首先需要这个等级。 不要build立一个横向扩展的体系结构,以期望从未出现过的用户。 对不起,如果我听起来很刺耳,但是所有网站中有99%没有增长到规模的大头。 请参阅堆栈溢出/服务器故障; 他们每月从一些相当传统的服务器上为一百万用户提供服务。
我应该从其中一个供应商处获得一个硬件负载平衡器解决scheme,或者使用开源解决scheme自己构build一个
取决于你的技能和时间与金钱的情况。 一旦build成,开源和商业产品几乎完全一样。 商业解决scheme倾向于拥有更好的统计数据和更好的pipe理界面。
对于Web服务器硬件,我应该使用one-u单插槽服务器还是刀片解决scheme?
询问您的服务器供应商的价格。 问你的数据中心有关功率密度,即他们在尺寸和功耗之间的首选平衡 – 通常你会受到功率的限制,所以像叶片这样的密集解决scheme可能不会赢得任何东西。
对于存储,我应该使用SAN还是Sun统一存储7000等存储服务器就足够了。
获得SANcertificate需求时获得SAN; 那么你也将更好地了解你的SAN应该为你解决什么需求。
由于这个网站的读取操作可能会比较繁重,因此应该如何考虑mysql群集和存储设置呢?
创build一个非常好的caching解决scheme。 像Squid(Varnish)的全页面caching,或像Memcached的应用程序数据caching,或两者的组合。 考虑caching失效,您是否需要快速清除caching中的内容以避免重新投放?
备份mysql群集的最佳方法是什么?
意见各不相同,但一个常见的方法是有一个专用的从属MySQL仅用于备份,并使用像InnoBackup或Maatkit这样的自编脚本备份解决scheme。
编辑:如果你真的要从头开始构build这个,那么请在提交之前仔细看看云计算 。 云计算不仅仅是可扩展性,即使可扩展性是一个很好的强项。 作为软件包一部分的某些服务可以帮助简化日常操作。 一些例子:
虽然我不太了解Moodle的具体情况,但是我可以提供一些可扩展性的提示。
刀片和SAN经常被供应商滥用。 我怀疑一个商品1U服务器集群可能是最适合您的需求的。 有很多数据中心不会采用刀片系统,因为功耗非常高,而且散热要求也非常低。
我是分布式/复制存储的Gluster的忠实拥趸,您可能会发现,作为大型供应商的SAN解决scheme的替代品,您可能会发现很有趣。
一整套HP DL360s也可以(或者更便宜的商品服务器(我强烈推荐DNUK))。 我认真地怀疑你需要在你的服务器之间使用Infiniband互连(基础设施是昂贵的,而且在很大程度上不需要Web服务,如果你正在进行基因组expression的HPCbuild模,我的答案可能会不同!)
关于networking基础设施(如果您也必须考虑这一点),我推荐使用Cisco Catalyst交换机或HP Procurves(相当平均匹配,IMO和更便宜)的Cisco路由器,
就负载均衡而言,运行LVS的专用Linux服务器将轻松处理到多个群集节点的stream量。 如果你有钱(3万美元以上),那么citrix netscaler可能是正确的caching/加速/负载平衡平台,但要记住,你需要2个(理想情况下3个)才能实现冗余。
您应该尝试从一开始就包含memcache,这很容易增加可伸缩性,并大大提高caching性能,特别是在从MySQL数据库集群读取数据时。 还有其他的事情可以调整你的MySQL性能,比如在MyISAM上使用InnoDB。
我怀疑你最好使用反向代理caching,比如Varnish,而不是Squid,它更适合作为客户端caching。
您可以很容易地拥有一对专用的Varnishcaching节点,或者在Apache / lighttpd服务器所在的服务器上运行Varnish。
尽量避免进入供应商locking的状态,因为在许可问题上,这可能会非常昂贵。 完全可以使用免费/开源软件来构build可扩展的站点。 当然,软件负载平衡器不会像专用ASIC的硬件那样快,但是具有良好的networking基础设施,它可以非常接近。
对于pipe理部分,我打算使用dsh,ganglia,nagios,splunk,kickstart。
只需要把木偶添加到列表中,然后你就可以成为赢家。 注意splunk的昂贵的许可证(当你每天处理10s的日志时,可能会咬你)。
Munin是一款出色的免费监控工具,与Zabbix这样的应用相比具有优势,因为它可以从插件脚本自动configurationgraphics(所以你不必事先跟踪你所监控的内容)。
虽然我从来没有pipe理过一个可以被认为是大型的Moodle系统(最多只有几千个活跃用户),而且我几乎可以肯定你比我有更多的Linux经验,但我可以提供一些观察。
一个拥有数百万用户的Moodle安装比我听说的其他任何一个都要大一个数量级。 即使是开放大学,学生遍布英国和世界,只有20万用户。 美国的大学往往只有数以万计的用户。 对于大小的一个好主意看看http://docs.moodle.org/en/Large_installations你真的会得到数百万使用该系统的人吗? 他们都会马上出现,还是逐渐招人多年? 你不需要一个能够处理数百万的系统,如果你在第一年只得到10,000。 另外,很多机构都有使用Moodle的理论学生人数,但实际使用系统的只有很less一部分人。 总之,从小处着手,扩大规模。
在pipe理Moodle时,Linux发行版将使生活变得最简单。 在线社区帮助可用不是针对Windows的!
考虑招聘本地的Moodle合作伙伴(对不起,我是新的,所以不能发布这第二个链接),如果你认真对待这一点。 他们可以根据个人在build立和pipe理Moodle系统方面的经验提供build议。
Moodle在系统资源上一般很容易。 只要看数据库,因为交易的速度可以非常大。 你还没有提到它,但考虑分离数据库服务器从Web服务器,并集中资源在数据库集群。 使用caching(eaccelerator或memcached)的networking访问是微不足道的。 文件存储通常也是非密集型的,并且需要链接到一个体面的raidarrays,本地或在一台单独的机器上。 如果你有一个SAN,使用它。 如果没有,只要坚持简单的东西。
一如既往,备份,备份,备份!
祝你好运!