AWSPAlantirFollow2018年2月15日·8分钟阅读
Stack Overflow Enterprise(SOE)是一种针对企业的付费私有版本的Stack Overflow,可通过Stack Overflow作为内部安装或托管服务获得。在这篇博文中,我们讨论了在AmazonWebServices(AWS)上构建和部署自我修复、高可用性内部SOE实例的策略。我们描述了通过HashiCorp的Packer和Terraform部署套件将复杂的Microsoft堆栈应用程序SOE迁移到全AWS体系结构的迭代过程。我们详细介绍了我们的安全方法,包括使用堡垒主机和前端/后端子网,以帮助隔离组件之间的通信路由。总的来说,我们展示了我们如何组装基础设施,以简化对公司日益重要的知识管理服务的维护。
动机
有效的知识管理在任何快速发展的公司都是困难的,但Palantir的地理足迹使其更加困难。我们的业务开发、支持和产品团队跨不同的国家和时区进行协作,因此我们需要能够使帕兰提亚人的专业知识可供其所有同事使用的工具,而不管其位置如何。SOE允许悉尼的工程师实时受益于公司范围内的知识库并为其做出贡献,而不是等待太阳在帕洛阿尔托升起。它为许多常见的技术问题提供了友好的、可搜索的界面,从而减轻了支持负担,它的知识复合效应使开发团队能够专注于核心功能开发。在第一年中,Palantir的内部SOE实例托管在位于美国东海岸的两台本地虚拟机上。虽然这个基础设施易于访问和管理,但它为我们在美国以外的同事提供了次优的服务。此外,服务器维护也成为一个问题,因为我们的内部部署硬件需要脱机以获得关键的安全补丁,从而消除了零停机维护的可能性。我们必须手动冒烟测试SOE的所有组件,很容易忽略一个小组件或设置,这些组件或设置在补丁后没有正确重置。在我们的内部部署发布六个月后,我们开始探索将SOE迁移到AWS,因为我们的内部部署安装存在这些缺点。将SOE迁移到AWS为我们带来了几个具体的好处:
更好的正常运行时间和可靠性,路由器ddos防御过滤广播包,提高系统稳定性自动化和更少耗时的维护、升级和修补工作流通过自适应资源分配节省成本通过可重复的构建和部署基于最新,完全修补的图像
Terraform部署基础设施
我们将基础设施视为代码范例,并选择HashiCorp产品套件来定义我们的SOE基础设施:Packer来创建EC2 Amazon机器映像(AMI),Terraform来部署AWS基础设施,Vault来控制对系统机密的访问。我们选择HashiCorp的部署软件是因为我们发现Terraform提供了一种简洁的方法,可以在大量代码文件中表示我们的基础设施,而Packer提供了一种简单的方法来创建AMI,集群高防cdn,并清楚地记录其构建过程的每个步骤。通过HashiCorp的GitHub集成,我们能够像开发常规软件一样开发和审查AWS基础设施,测试和干运行每个增量更改,作为构建周期的一部分。其结果是一个一致的部署过程,在一开始就要正确地进行部署,这无疑是一个乏味的过程,但在重复运行时可以节省大量的时间。例如,创建Packer build以安装SOE需要我们研究安装.NET运行时应用程序所需的Powershell命令,配置IIS,并为SOE标记和通知处理启动几个相关的计划任务。我们最初的构建花了一个多月的时间来组装,但现在允许我们升级到新的SOE版本,只需对打包程序代码进行一些简单的编辑。我们的SOE升级过程在迁移后得到了改进:过去是一个小时的手动测试协议,现在是一个20分钟的自动化工作流程,包括打包机构建,然后通过Bouncer进行滚动地形/EC2重新部署。此外,我们可以通过在暂存环境中执行相同的可重复工作流来测试更改。
打包堆栈溢出
我们使用Packer为核心SOE应用程序以及Elasticsearch创建AMI。我们部署了一个专用的Elasticsearch集群,因为Amazon的Elasticsearch服务最初不支持静态加密。Amazon已经在DEC 2017中添加了加密支持,我们可以考虑将来切换到该服务。我们的SOE Packer build下载SOE的发布工件,安装几个支持工具,如Chocolate、Redis和我们的安全工具套件,然后将SOE安装和定制所需的所有资源存放到本地目录中;然后根据结果创建并打包一个AMI。当EC2 Web服务器启动时,其EC2启动配置提供的用户数据脚本运行我们定制的自动化SOE安装程序脚本,然后应用任何进一步的配置,如域绑定、安全工具配置、,并添加CSS样式以使SOE成为我们自己的。
体系结构
SOE是一个Microsoft.NET应用程序,包含以下组件:,每个都与相应的AWS组件一起列出:
IIS Web服务器(承载主站点)不同可用性区域(AZs)中的多个EC2实例Redis(缓存和发布/订阅服务)作为Windows服务安装在每个EC2 Web服务器上ElasticSearchOne EC2实例,EC2 Web服务器之间共享SMS SQL Server数据库具有多AZ可用性和数据库镜像的MS-SQL Server
下图显示了AWS SOE安装的组件和网络配置:
06-30 来源:长虹华伟
03-19 来源:长虹华伟
09-26 来源:长虹华伟
04-23 来源:长虹华伟
09-28 来源:长虹华伟
03-24 来源:长虹华伟
05-01 来源:长虹华伟
03-02 来源:长虹华伟
03-01 来源:长虹华伟
09-15 来源:长虹华伟