每月有60亿个请求。这个数字听起来很大吗?这个数字是每个开发人员都知道的一个非常流行的网站StackOverflow上一个月内发出的请求总数。
StackOverflow的构建块包含2台HAProxy服务器和9台Web服务器,实现了众所周知的健壮体系结构,即高可用性能服务器集群。在较小的规模结构上,许多公司都采用了这样的体系,用来确保即使在硬件有缺陷的情况下也可以确保服务的可用性。但是在服务器关闭的情况下,如何快速通知用户,以便快速采取行动将服务器恢复到原来正常的状态呢?
在以下方面中:我们将使用 InfluxDB 和 Telegraf 构建一个完整的Grafana仪表板,以监视服务器集群。
仪表板构建
I —关于高可用性集群
在开始开发仪表板之前,简要介绍一下高可用性集群。
高可用性集群是一组提供服务器可用性所组成的机器。假如:正在构建一个简单的Web应用程序。在启动时,每天都有一千次页面浏览量,这是目前任何的HTTP服务器都可以毫无困难地处理的负载。突然,这时流量如果激增,每天都有一百万次页面浏览。在这种情况下,基本的HTTP服务器是无法独自处理所有负载,此刻就需要用到其他资源。解决此问题的方法就是实现HA集群结构:
当接收到HTTP请求时,负载平衡器将代理(即转发)该请求到合适的节点上,以确保在集群之间实现平均分配负载。负载均衡器使用不同类型的技术(算法)来决定将节点请求发送到哪个节点,但是在本例中,我们将使用非加权(不加权重)的Round Robin(轮询算法)配置:将请求发送到第一个服务器,然后再将下一个到来的请求发送到第二个服务器,依此类推。这个算法不会对要选择的节点进行任何优先选择。
II —选择正确的堆栈
对于这个实验,使用具有标准内核的 Xubuntu 18.04,为了监视服务器集群,我们需要选择正确的工具。为了实现实时可视化,使用 Grafana v6.1.1
为了进行监视资源,我选择 InfluxDB 1.7 作为 Grafana 的基础数据源。为了获取 InfluxDB 的指标,选择了 Telegraf,它是由InfluxData创建的由插件服务器驱动的代理。本实验不介绍前面介绍的工具的安装方式,因为它们都在各自的官方文档中。
注意:请确保使用与本实验中所使用的版本相同。这些工具易于频繁更改,有可能会改变你所进行实验的准确性。
III —设置简单的HA集群
为了监视我们的HA集群,我们将使用NGINX v1.14.0和3节点HTTP服务器实例构建其简单版本。如上图所示,NGINX将配置为负载平衡器,将请求代理到我们的Node实例。
a —将NGINX设置为负载平衡器
Nginx配置在端口80上运行,并将请求代理到端口5000、5001和5002上。