许多用户问起我们到底是如何为他们搭建新的系统的,特别是在物理服务器、私有云和其他不同的公有云之间。这是一个非常复杂的领域,因为几乎所有的环境都是不同而且不断变化的,而且我们所有服务所使用的底层操作系统经常升级,诸如Nginx, MySQL, PHP等。

另外,我们的客户正在搭建能支持上百万用户的大规模系统。许多客户也正在复制或迁移现有系统,所以关键组件的特定版本和配置是我们工作的重心。我们需要支持所有版本和任何选项,这远比你在不同网站托管站点或供应商那里所看到的简单单个LAMP服务器要复杂得多。

那么,我们应该怎么做呢?  首先,销售会根据顾客的需求提出一个基本的服务器架构方案,包括合适的目标环境,比如私有云、阿里云或者AWS云服务。其他的基本事项需要存档,并需要由项目管理和系统工程团队仔细检查并批准,再签合同。

作为我们的系统信息请求(SIR)流程的一部分,一旦合同签订,我们会汇总所有已知信息,与客户确定细节要求。包括Linux和数据库的用户、Linux发布、URLs、SSL证书、磁盘空间与增长、日志、备份和搭建一个最佳的系统所需的其他细节。我们通常需要不断地与客户电话或私下沟通确认以解决任何问题,包括确认物流、测试、部署安排。

然后,通过使用我们的核心设计系统为系统进行最后的架构与设计。这套系统针对操作系统、储存器、监控、备份、网络和其他诸如HAProxy, Nginx, Apache, PHP, Java, Tomcat, Redis, MySQL等所需服务提供 500种不同的可调选项这其中的每一项都有许多选项、版本和其他搭建一个庞大的系统的所需条件。

设计系统对此内含不同的模式,并通过反复核对,第一时间确保我们搭建的系统是准确的、最佳的。一旦完成设计,系统工程团队会进行检查,保证每一项都是符合客户需求的,都是最可靠、性能最好、规模最大、最安全、成本最低的。

通过检查后,设计系统要做两件事: 首先,它要在我们的核心内部系统中建立新的系统并架构服务器,比如我们的资源服务器和配置系统,还有我们的Zabbix监测系统,shh和存取系统等等。然后,输出为搭建的物理服务器所用的最终配置。

与此同时,在物理服务器或私有云上,工程师会安装操作系统。或是在阿里云或AWS这样的公有云上建立VMs(虚拟机)。尽管某些系统拥有丰富的API,这仍是一个人工的步骤。不过它将在AWS上实现自动化。

物理服务器、私有云或公有云上的系统安装好后,我们会运行系统协调。它是一个基于Ansible的进程,其目的是让这些服务器和操作系统以及base-line内核,操作系统,磁盘,基本工具,组件等符合统一的标准。

操作系统协调后,我们运行我们基于Ansible的安装进程,它运用系统设置配置数据和多种安装包资料库和默认配置去组建一套包含所有服务配置、用户、网络防火墙等元素在内的成品服务器系统。

单独来说,网络连接特别依赖于实体网络构造。对物理服务器和私有云来说,我们会使用我们的网络设计工具构建一个网络规划,它会创建/输出思科的或是其他的配置用于标准设备。在理想的情况下,我们的办公室里会有这套设备,那里有5间网路设置和模拟实验室,我们会在其中的一间里把它装好。在这里,我们可以完全地模拟出实际的IDC环境,有实际的公IPs,IDC上行链路、完善的防火墙、交换机和其他配置——可以模拟出在真正的IDS环境下的联网、设置、测试,这将避免以后会碰到的许多问题。通过测试后,整套网络系统就可以搬到数据中心了。

然后我们在最终的服务器上运行我们的审计和CMDB程序与工具,检查有没有以最佳的状态运行或有没有什么问题,核实有没有与设计系统不相符的配置去确保系统是完全根据设计来搭建的。最后,我们运行一个快速的高度自动化的系统质量检测,为客户生成访问和配置信息,以便他们访问、使用系统,加载密码和数据,还有以投入使用的方式去测试。

文档也是以不同级别来准备的,比如为实体系统的线路图、互连和虚拟架构图、工作流程表、特殊支持流程等等。最后当它们投入使用时,还会有一个7×24小时服务包用来升级和培训这套系统的7×24小时支持团队。

总之,这是一个非常先进的设计和搭建过程,它总是包含了额外的设计要素,交叉验证和确认,和自动化以及对我们在这过程中遇到的不同环境、服务和挑战的额外支持。我们还有一张很长的的列表,记录未来所能改进之处,能使以后我们为世界搭建更庞大更复杂的系统时,能够更稳定,使用起来更快捷、更灵活。