我们构建不同类型、不同规模的系统,有的系统只有1台服务器,而有些系统则有上百台服务器。而我们经常采用一个标准的高可靠性架构,该架构适合在物理服务器、私有云及公有云中使用。这就是我们所谓的6+3系统,在该系统架构中,我们有6台生产服务器及3台开发/测试服务器,该系统架构中还包括4件网络设备。

是哪些网络设备呢?一、我们要设想一下数据中心如何才能够满足我们的网络使用需求。我们偏向于使用双线生成树以太网网线,将双网线都设置为购买时的最大端口网速,如50 Mbps。这意味着双线都能够使用,功能正常,但是受到标准生成树功能的影响,同一时间,仅有一条网线有网络流量。

每条以太网线连接到一台思科2960-S或X交换机,这是一款性价比很好的1 Gbps的交换机,将这对网线设置为一对高可靠性网络,带有生成树故障转移和几个VLAN,可以用于公有云、私有云以及管理网络。交换机有我们的客制化程度很高的IOS配置,是根据思科以及其它最佳实践进行配置的,可以使网络可靠性、性能以及安全性达到最优化。

除了这些交换机之外,还配有一组思科ASA-5515-X 防火墙,带有双冗余交叉链接,设置为激活-备用故障转移模式。这些防火墙运行客制化程度很高的IOS配置,使可靠性、安全性以及可维护性达到最佳,因为我们发现随着系统演变尤其是带有标准格式和模板的NAT规则的演变,这些配置也会发生变更。我们将NAT规则深入的运用到产生网页流量、所有的ssh、ntp、更新及其他必须的端口和协议。

该系统架构中其它的网络设备是两台负载均衡器,运行HAProxy,是世界上速度最快、规模最大的软件负载均衡器。我们在HAProxy上运行生产系统,有250,000个并发连接数,可以每秒处理25,000-50,000个请求,此外还可对每个前/后池以及主机进行深度监控,并具有广泛日志的功能。这些负载均衡器以激活/备用的模式运行,通常是保持激活状态的,以便处理关键故障转移事件。

此外,我们还有网络/应用程序服务器,一对运行nginx和PHP-FPM或Java/Tomcat的机器。通常情况下,它们处于负载均衡状态并运行同样的代码,但是也会有例外。不同的架构还会要求能够处理粘性以及不粘性会话,媒体以及静态内容同步,该层级上的缓存或redis,以及其它功能。

最后,我们有两台数据库服务器,通常是一组运行最新的Percona版本的MySQL服务器,正常情况下是5.5版的,在将来一些系统中会运行5.6版本的。在主从机架构中运行我们客制化程度很高的最佳实践配置,该架构可以保证可靠性、数据准确性、性能以及安全性。根据使用需求,高可靠性以及故障转移有多种处理方式,从手动到半自动再到完全自动甚至是集群以及大型系统中的远程容灾从机。

这就是本文所论述的一套简单的系统架构,根据硬件情况,该系统每天可支持数百万用户,1 TB数据并且在最好的性能、可靠性以及安全性下实现全天候运行。在系统架构方面,我们还有更多做法以及多种客制化部件,本文仅对如何构建大多数基础系统作简单概述。