当涉及到云时,自动缩放是一种必须的能力。OpenStack已经提供了多种方法来自动缩放虚拟机,包括Heat(Telemetry栈)。然而,Telemetry主栈涉及到评估过程中是否需要一个自动缩放,要么没什么用,要么出故障。在本文中,我们将介绍一个新的工具Faythe,一个我们自己构建的开源软件,作为云平台(OpenStack)和监控系统(Prometheus)之间的桥梁,被用来解决越南最大电信公司Viettel的自动缩放问题。
传统的Heat&Telemetry自动缩放方法
基本思想
自动缩放是三个步骤的组合:Metering、Alarming、Scaling。
Metering服务收集有关服务/实例/主机负载的数据。Alarming服务评估数据以确定是否需要添加scale out/scale in,这将触发Scaling服务上的scale out/scale in操作。这个想法很简单。
这种方法由两个主要组件组成,它们与OpenStack基础设施一起打包和分发。
Orchestration:提供自动缩放的核心组件是Orchestration(heat)。使用Orchestration来定义使用人类可读的YAML模板的规则。这些规则用于评估基于Telemetry数据的系统负载,以确定是否需要向堆栈中添加更多实例。当负载下降时,Orchestration可以再次自动删除未使用的实例。
Telemetry:Telemetry执行OpenStack环境性能监视,收集实例和物理主机的CPU、存储和内存利用率数据。
Telemetry还涉及三个较小的服务:
——Ceilometer–Monitoring Service:一种数据收集服务,提供跨所有OpenStack核心组件规范化和转换数据的能力。
——Gnocchi–Storage Service:提供时间序列资源索引、指标存储。
——Aodh–Alarming Service:根据定义的规则,对Celimeter收集并存储在Gnocchi中的样本或事件数据触发操作。
Telemetry的问题
Rocky版本中的Telemetry项目缺乏开源社区的贡献,这是决定开源项目寿命的因素之一。
到Queens版本时,Telemetry87项目已经失去了大多数开发人员。Aodh和Panko的开发已停止。
Gnocchi于2017年6月被移出OpenStack。Gnocchi不再被维护。
这三个项目是相互依赖的,而它们是分开开发的。这导致一个项目中的一个小变化可能会导致整个系统崩溃。此外,由于Gnocchi不再是OpenStack的一部分,因此它们之间的不同步开发问题是不可避免的。
根据我们的经验,由于Celimeter工作负载,RabbitMQ承受了很大的负载。如果Celimeter卡住了,它的队列就会溢出。
Telemetry仅收集有关虚拟机操作系统和OpenStack物理主机的信息。Telemetry不可能监视虚拟机上运行的服务和应用程序。此外,更改和实现Telemetry更多个功能并不是简单的任务。这包括编写代码、编译代码、打包、测试和部署到实际系统。
Telemetry不适合我们的生态系统。我们选择了Prometheus来监控整个基础设施系统和应用程序。在Prometheus旁边切换/设置其他系统(如Prometheus)并不理想。
用Faythe和Prometheus实现自动缩放
工作原理
实际上,这并不是一种全新的方法,它利用Orechestration来对新的Alarming Service(Faythe)和监控服务(Prometheus)进行缩放操作。如前所述,自动缩放是三个步骤的组合:Metering,Monitoring,Scaling。OpenStack Orchestration已经提供了极好的扩展服务Heat。新方法不再使用OpenStack Telemetry进行Metering和Alarming,而是引入了Faythe,这是我们自己构建的一个开源软件,它是云平台(OpenStack)与监控系统(Prometheus)之间的桥梁。
Faythe的好处
Faythe是我们创建的项目之一,它是在我们在Viettlet Network工作时设计、开发和实施的。它的出现填补了Prometheus和OpenStack之间的空白。
Faythe支持Prometheus收集指标和PromQL以评估并决定是否需要报警。
PromQL是一种非常好的查询语言。
广泛的exporter:这是Prometheus最有价值的一点。开源社区正在创造越来越多的exporter,这意味着Prometheus可以收集到新的指标。
灵活:除了CPU或内存使用等系统因素外,用户还可以评估任何exporter可以收集的任何指标,例如JVM指标、HTTP请求相关指标。例如,你可以根据Django HTTP请求的数量定义一个缩放规则。
Faythe很容易配置。
Faythe有自己的集群机制。
Faythe不仅提供了用户友好的UI,还提供了完整的API。
原文链接:
Auto-scaling in Viettel Networks Without OpenStack Telemetry - Superuser