云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_网站建设重要性_好用

小七 141 0

Bugsnag使用HashiCorp Terraform快速提供并安全地维护其基础设施

这个博客是乔治·特里克的博客。Bugsnag是一个自动化的生产错误监控工具,支持50多个不同的平台。Bugsnag为大多数流行的编程语言提供了开源库,这使得客户很容易将Bugsnag集成到他们的工作流中。一旦集成,Bugsnag会自动检测应用程序异常,并提供数据和工具来确定错误的优先级并以最大的用户影响修复错误。在Bugsnag,我们面临的部分挑战是快速的迭代速度;无论是外部的,与API连接以使新的集成对我们的客户可用,还是在内部定期配置和扩展一个计算机集群,以便随着系统性能特征的发展运行我们的服务。随着我们的产品不断发展,将工具放在适当的位置以帮助我们改进运行我们服务的基础设施变得非常重要。我们在这些工具上投入的时间和精力对我们也很有价值,所以我们需要明智地选择。在基础设施方面,我们需要能够在生产中发布配置更改。我们对现有资源进行配置更改或添加新资源。不管怎样,我们需要能够轻松和高能见度地完成这项工作。这就是HashiCorp工具集发挥作用的地方。对我们来说,能够快速、可靠地测试基础设施的配置更改并将其投入生产是非常重要的。更改可能包括节点本地配置更新或集成需要设置多个相互依赖的资源的全新云服务。我们要求对任何更改进行有效的测试,并避免手动、易出错的方法。»我们用HashiCorp Vagrant,Packer,Terraform设置我们使用三个HashiCorp工具:Vagrant、Packer和Terraform。»使用Vagrant快速启动本地VMs进行测试我们使用Vagrant在开发人员笔记本电脑上快速启动虚拟机,以测试针对新Linux系统的配置更改。《流浪者》与厨师测试工具包Kitchen的集成符合这一工作流程。在修改了烹饪书之后,我们运行"kitchen converge"来轻松查看它是否正确应用,或者是否会破坏厨师的运行。»使用Packer从源配置创建可复制的机器图像有时,我们需要能够快速地将VM实例启动到生产环境中,以便在客户向我们发送大量流量的峰值窗口期间支持增加的负载。Packer通过创建可复制的图像来启动相同的虚拟机,从而节省了我们的时间。使用Packer,我们将初始Chef运行烘焙到映像中,以创建一个VM,这意味着映像在创建时已经准备就绪。这为我们节省了启动实例时初始Chef运行所需的几分钟时间,当我们需要快速扩展时,这会产生很大的影响。»使用Terraform的高效执行模型与Amazon和Google的云api进行交互Terraform在我们的日常运营中扮演着不可或缺的角色,以提供和维护我们在GCP和AWS上的基础设施。以下代码片段是使用mongod模块在GCE中提供Mongo数据节点的示例:模块"bugsnag11-db2"{source="./modules/mongod"name="bugsnag11-db2"可用性区="us-west1-b"机器类型="n1-highmem-16"image="ubuntu-1604-lts"replicaset_name="bugsnag11"磁盘大小=1500厨师长版本="${var.chef_版本}"}这使我们能够使用一致的工作流与几乎所有外部基础设施api接口,包括DNS记录、CDN缓存、对象存储桶、VM实例等等。我们将所有信息作为Terraform配置编码到基础设施存储库中。我们在这个存储库中使用了一个标准的分支变更请求工作流,因此产品工程师和基础设施工程师一样了解基础设施的变更。这也鼓励了协作,允许产品工程师在需要提供基础设施并检查和部署他们的更改时对存储库进行公关。Terraform设置中最重要的部分是我们将所有生产数据库机器配置存储在其中。Chef有一个"节点属性"的概念,或者特定于机器的配置信息,可以通过通用配置逻辑("配方")来查找。这可能包括用于数据存储的块设备、用于执行数据库备份的标记机以及其他重要的数据库操作和维护任务。我们将Terraform状态存储在S3中,并启用了对象版本控制,以便能够在Terraform运行不好而导致损坏状态的情况下恢复以前的基础设施状态。»最后的想法欢迎并鼓励我们公司的每个人对基础设施存储库进行更改。当一个请求被提交时,我们使用Buildkite CI设置来运行一个全局的(非目标的)"terraform计划",让我们在应用它们之前看到更改。之后,生产工程师合并pull请求,删除新的更改,并在本地运行"terraform apply"。总的来说,我们对这些工具非常满意,尤其是Terraform,因为我们广泛地使用它来持续、安全地提供和改进我们的基础设施,同时使这些变化在整个公司都可见。