我们build立了一个特殊的兴趣社交networking,需要为webapp服务器设置适当的服务器设置。
我们已经为webapp 5物理服务器 (2xE5645CPU,24GB Ram,RAID,4xGbit NIC)提供服务,其中一个服务器需要为我们的移动访问者(iOS,Android)提供API。 我们的web应用程序需要PHP,APC,Memcached和MySQL。
此外,我们有4个更多的物理服务器(2xE5620,12 GB RAM,RAID,4x千兆网卡):
彗星推服务器(聊天的自定义服务器)
队列/邮件服务器(beanstalkd)
静态networking服务器(G-WANnetworking服务器),带有12x2TB的2xDAS(Raid 6总共40TB)
专门用于HTTPS的Apache web服务器(如果SSL受保护的页面将放置在LB集群上,此服务器也可用于LB群集,这是否更好?)。
一开始我们只想在LB / HA上安装webapp服务器,因为目前我们没有更多的服务器可用。
最后是一个低成本的服务器(X3430,4 GB Ram,RAID,2 Gbit NIC),用于监控所有硬件。
我们有2台HP Procurve 2900pipe理型48端口千兆交换机。
上述所有设备都保留在我们的networking中心机架中。 我们在所有服务器上使用RHEL 6。
我有很多想法,但是我不确定哪个是最好的方法。
我的方向是在两个盒子上安装HA Proxy和Apache webserver,在两个盒子上安装MySQL数据库服务器,并在API和Web服务上使用Apache和MySQL。 使用其中一台专用networking的交换机连接所有服务器并用于内部通信(MySQL,上传后的文件传输)。
将每个服务器的多个NIC端口连接到交换机是否有帮助?
HA Proxy是我们案子的最佳方式吗? 或者在2或3盒上使用nginx会更好,并且使用它来进行负载均衡和服务PHP,并且对于HA部分有LVS或类似的东西?
我为所有的解决scheme开放,5 + 1服务器可以灵活使用。
谢谢你的帮助。
更新:经过更多的研究,我认为这将是很难find一个解决scheme有所有服务器HA。 我的设置的实际想法是:
nginx作为负载均衡的代理(我将使用中规格框之一)
3私人networking上的Apachenetworking服务器
2私有网上的MySQL服务器主/从
在上面的解决scheme中,Apache Web服务器也将托pipe支付SSL站点,我不确定是否nginx可以处理这个不同的后端服务器的SSL证书。
更新2:我做了更多的研究,Redhat提供了一个基于LVS的负载平衡附加组件。 http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtual_Server_Administration/ch-lvs-overview-VSA.html这个插件看起来不错,但我仍然不知道哪个方向是正确的一? 在前面使用nginx还是使用LVS或其他的更好? 有人告诉我,我可以使用现有的HP Procurve 2900交换机进行简单负载bal光….
LVS专为第4层负载平衡而devise。 nginx或ha代理仅用于第7层(我的意思是networkingstream量)负载平衡。 因此,如果Webstream量是您最大的工作负载,我想build议您使用nginx或HA代理作为您的负载平衡器。 如果最大并发连接是瓶颈,那么我build议您使用HA代理作为您的负载均衡器,因为HA代理具有更好的性能(参考: http : //affectioncode.wordpress.com/2008/06/11/comparing-nginx-和-haproxy-for-web-applications / )。
一个web应用程序的HA应该从一开始就devise。 希望我曾经见过这样的事情:)
但严重的是:您正在询问主动/主动设置。 在决定这样的体系结构时,最重要的问题是应用程序数据需要或不需要的应用程序服务器之间是否可以保持同步。 另外,HOW是否必须是同步的,是否有代码需要在返回之前进行全局分配,应用程序中是否有可以处理几秒钟状态滞后但不多于其他时间的区域(不要忘记mysql复制是第二种!)? 这些需求和可能性将决定你的设置。 缩放硬件在稍后。 主动/主动总是很难移植到没有devise的任何东西上。