时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Cloudflare网络
小提示:您能找到这篇{Cloudflare:如何使用HashiCorp Nomad}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Cloudflare:如何使用HashiCorp Nomad内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
在此博客文章中,我们将向您介绍在全球200多个边缘城市中运行的服务的可靠性模型。然后,我们将探讨如何部署新的动态任务调度系统HashiCorp Nomad,帮助我们改善每个数据中心的服务可用性,涵盖了我们如何部署Nomad以及克服的挑战。最后,我们将向您展示我们目前如何使用Nomad以及将来如何计划使用Nomad。 每个数据中心中运行的服务的可靠性模型 对于此博客文章,我们将区分每个数据中心中运行的两种不同类别的服务:
面向客户的服务 我们面向客户的服务的可靠性模型是在每个数据中心的所有计算机上运行它们。这非常有效,因为它允许通过添加更多计算机来动态扩展每个数据中心的容量。 多亏了我们在每台机器上运行的动态负载平衡系统Unimog,使扩展变得特别容易。它的作用是根据当前资源的使用情况不断地重新平衡流量,并检查服务的运行状况。这有助于为单个计算机故障提供弹性,并确保所有计算机上的资源使用率几乎相同。 例如,这是我们一个数据中心一天中的CPU使用情况,其中每个时间序列代表一台机器,不同的颜色代表不同代的硬件。Unimog使所有计算机处理流量并保持大致相同的CPU利用率。 管理服务 我们的一些大型数据中心拥有大量计算机,但有时我们需要在每个位置仅可靠地运行一个或几个管理服务实例。 当前有两种方法可以做到这一点,每种方法各有利弊:
第三种更可行的选择是使用动态任务调度,以便在确保可靠性的同时仅使用适当数量的资源。 需要更动态的任务调度 对于我们希望在每个数据中心中运行的管理服务,必须在两个次优的可靠性模型选项之间进行选择,这并不理想。 确实,其中一些服务即使不在请求路径中,也需要继续运行数据中心。如果运行这些服务的计算机不可用,在某些情况下,我们必须在恢复它们时临时禁用数据中心。这样做会自动将用户重新路由到下一个可用的数据中心,并且不会造成中断。实际上,整个Cloudflare网络网站网页开发都设计为在禁用数据中心并自动恢复的状态下运行。但是最好将最终用户路由到他们附近的数据中心,以便我们希望最大程度地减少任何数据中心级别的停机时间。 这使我们意识到,我们需要一个系统来确保每个数据中心中正在运行一定数量的服务实例,而不管最终由哪个物理机运行该服务。 面向客户的服务在每个数据中心的所有计算机上运行,并且不需要加入该新系统。另一方面,当前在固定子集的机器上运行的服务具有次优的可靠性保证,不需要在所有机器上运行的服务都是上线的理想选择。 我们的选择:HashiCorp Nomad 根据我们的一系列要求,我们对候选解决方案进行了一些研究。 虽然Kubernetes是抖音涨粉渠道另一个选择,但出于以下原因,我们决定使用HashiCorp的Nomad:
部署架构 游牧民族分为两个不同的部分:
为了保证Nomad Server群集的可靠性,我们在属于不同故障域的计算机上部署了实例:
我们还向配置管理工具中添加了逻辑,以确保无论每天发生的服务器扩展和停用情况如何,我们始终保持一致数量的Nomad Server实例。 逻辑很简单,随着服务器的扩展和停用,Nomad 黄小厨公关危机Server角色将重新分配到新的计算机列表中。然后,我们的配置管理工具可确保Nomad Server在新计算机上运行,然后再关闭旧计算机。 此外,由于服务器的扩展和退役会一次影响一部分机架,而Nomad Server角色分配逻辑可提供机架多样性保证,因此群集始终保持仲裁状态,因此可以保持健康。 作业文件 Nomad作业文件被模板化并检入git存储库。然后,我们的配置管理工具可确保在每个数据中心中安排作业。从那里开始,Nomad接管并确保作业始终在每个数据中心中运行。 通过向每个Nomad Client公开机架元数据,我们可以确保特定服务的每个实例在不同的机架中运行并绑定到不同的故障域。这样,我们可以确保一个服务器机架的故障不会影响服务运行状况,因为该服务也在另一个机架中运行,不受故障影响。 我们通过以下作业文件约束来实现这一目标: constraint { attribute = "${meta.rack}" operator = "distinct_property"} 服务发现 我们利用Nomad与Consul的集成来将Nomad作业动态添加到Consul服务目录中。这使我们可以通过查询Consul来发现每个数据中心中当前正在运行特定服务的位置。此外,启用Consul DNS接口后,我们还可以使用基于DNS的查找来定位Nomad上运行的服务。 可观察性 为了能够正常运行与我们数据中心一样多的Nomad群集,对Nomad群集和在这些群集上运行的服务的良好可观察性至关重要。 我们使用Prometheus来抓取在每个数据中心中运行的Nomad Server和Client实例,并使用Alertmanager来提醒关键指标。使用Prometheus指标,我们构建了Grafana仪表板以提供每个集群的可见性。 我们通过查询领事服务目录并使用以下Prometheus配置定期抓取其指标来设置Prometheus实例以发现在Nomad上运行的服务: - consul_sd_configs: - server: localhost:8500 job_name: management_service_via_consul relabel_configs: - action: keep regex: management-service source_labels: - __meta_consul_service 然后,我们使用这些指标来创建Grafana仪表板并为在Nomad上运行的服务设置警报。 为了限制对Nomad API端点的访问,我们启用了双向TLS身份验证,并正在为与Nomad进行交互的每个实体生成客户端证书。这样,只有具有有效客户端证书的实体才能与Nomad API端点进行交互,以便安排作业或执行任何CLI操作。 挑战性 部署新组件总是伴随着一系列挑战。这是我们在此过程中必须克服的一些障碍的列表。 Initramfs rootfs和ivot_root 当开始使用
我们提交了一个GitHub问题,并提交了一个变通解决方案拉取请求,该请求被迅速审查并合并到上游。 同时,为了获得最大的隔离安全性,我们 资源使用情况遏制 一个非常重要的方面是确保在Nomad上运行的任务的资源使用不会破坏同一台计算机上共存的其他服务。 磁盘空间是每台计算机上的共享资源,必须为Nomad设置配额。我们通过将Nomad数据目录隔离到每台计算机上的专用固定大小的安装点来实现此目的。但是,Nomad目前不支持限制磁盘带宽和IOPS。 Nomad作业文件的资源部分可以限制内存和CPU的使用(内存以MB为单位,cpu以MHz为单位): resources { memory = 2000 cpu = 500} 这在后台使用了cgroups,我们的测试表明,虽然可以像预期那样强制执行内存限制,但是只要主机上有可用的CPU,CPU限制就是软限制并且不强制执行。 工作量(不可预测) 如上所述,所有计算机当前都运行相同的面向客户的工作负载。动态调度各个作业与游牧到单机器上运行挑战假设。 虽然我们的动态负载平衡系统Unimog会根据资源使用情况来平衡请求,以确保所有计算机上的请求都几乎相同,但是具有大量资源使用情况的批处理类型作业可能会带来挑战。 随着我们提供更多服务,我们将对此予以关注:
我们在Nomad上运行的是什么 现在,Nomad已部署在每个数据中心,我们能够通过逐步启用这些服务来提高对运营必不可少的管理服务的可靠性。我们迈出了第一步,加入了重启和维护管理服务。 重新启动和维护管理服务 在每个数据中心,我们都运行一项服务,该服务可促进在线无人值守的滚动重启和机器维护。该服务曾经在每个数据中心的一台知名机器上运行。这使其容易受到单机故障的影响,并且在停机时阻止了计算机在重新启动后自动启用。因此,有人将onboarded游牧,以提高其可靠性,良好的第一服务。 现在,我们保证此服务始终在每个数据中心中运行,而不管单个计算机是否发生故障。他们现在不再查询依赖于知名地址的其他机器来定位此服务,而是查询Consul DNS并动态确定服务在何处与之交互。 |
上一篇:海外版知乎Quora是如何成功出海日本的?请看这篇
下一篇:语音搜索如何做ASO?
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“Cloudflare:如何使用HashiCorp Nomad”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Cloudflare:如何使用HashiCorp Nomad的相关事宜。
关键词:Cloudflare:如何使用HashiC