前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >集装箱时代的分布式记录(第3部分)

集装箱时代的分布式记录(第3部分)

作者头像
修改2018-01-05 10:24:43
1K0
修改2018-01-05 10:24:43
举报
文章被收录于专栏:

你参加集装箱革命吗?开始利用Platform9对Kubernetes部署的最终指导来利用容器管理 。

所以,我们已经看到了微服务和容器在日志记录方面的问题。我们还介绍了如何为您的项目选择正确的聚合体系结构可以提供帮助。但现在,我们要看看实现这一目标的工具 - Fluentd。

锁和密钥:Docker + Fluentd

Treasure Data首席架构师Sadayuki Furuhashi开发并开放了  Fluentd  框架。Fluentd是一个数据收集系统 - 一个像syslogd一样的守护进程,它监听来自服务的消息并以各种方式路由它们。但是与syslogd不同的是,  Fluentd是从微服务统一日志源的,因此可以有效地用于生产和分析。在收集器或聚合器模式下可以使用相同的性能代码,只需对配置进行一次调整即可,因此在整个系统中进行部署非常简单。

由于Fluentd在Docker Machine上本机支持,因此可以收集所有容器日志,而无需在单个容器中运行任何“代理”。只需使用“-log-driver = fluentd”选项启动Docker容器,并确保主机或指定的“日志”容器运行Fluentd。这种方法确保大多数容器可以运行“精简”,因为不需要在源容器上安装日志代理。

Fluentd的轻量和可扩展性使其适用于在“扩展”或“扩展”配置中汇总源端和目标端的日志。再次,哪种味道最适合你,取决于你现在的设置和你未来的需求。我们来看看每一个。

简单转发+扩展

为了便于安装,很难 在应用程序中从Fluentd记录器库中包含几行配置代码,  并且可以即时启用每个容器的单个Fluentd实例的直接日志转发。因为它几乎毫不费力,对初创企业来说,这可能是一个很大的好处,通常这些企业只有少量的服务和数据量,可以存储在标准的MySQL数据库中,并且只有少量的并发连接。

但是冒着严重死马的风险,这样的系统可以扩展多少是有限度的。 如果你的创业真的起飞呢? 根据数据驱动您的业务的方式,您可能需要事先投入实施(或考虑  将问题外包给托管数据基础架构堆栈),以避免以后发生恐慌攻击。

源聚合+扩展

另一种可能的配置是使用Fluentd汇总源代码,并使用Fluentd的400多个社区贡献的插件之一将汇总的日志发送到NoSQL数据存储区。 这个例子我们来看看  Elasticsearch,因为它很受欢迎。这种配置(使用Kibana进行可视化)称为  EFK堆栈,例如  Kubernetes  运行。这是相当简单的,它适用于中等数据量。通常。

Elasticsearch的一个警告:作为一个很好的搜索平台,作为数据基础架构的核心组件,它  并不是最佳选择。 当您尝试加载大量的重要数据时尤其如此。在生产规模上,Elasticsearch已被证明存在关键的摄入问题,包括导致数据丢失。在EFK配置中,由于Fluentd在源上而不是目的地上进行聚合,因此如果商店丢弃数据,则无法执行此操作。

对于生产规模分析,您可能会考虑更容错的平台,如  Hadoop  或Cassandra,这两个平台都针对大容量写入负载进行了优化。

源/目标聚合+扩展

如果您需要处理大量的复杂数据,最好的办法是同时设置源端和目标端汇聚节点,并利用Fluentd的各种配置模式  。通过与Docker绑定的  Fluentd日志记录驱动程序,您的应用程序可以将其日志写入STDOUT。Docker会自动将它们转发到本地主机上的Fluentd实例,然后聚合并通过TCP将它们转发到目标端Fluentd聚合器。

这就是Fluentd的力量和灵活性真正进入自己的地方。在此体系结构中,默认情况下,Fluentd使用自动故障转移实现循环负载平衡。这有助于向外扩展体系结构,因为每个新节点都由下游实例提供负载平衡。此外,内置的  缓冲架构  为其在传输过程的每个阶段提供了自动防故障保护,防止数据丢失。它甚至包括自动损坏检测(启动上传重试,直到完整的数据集被传输),以及重复数据删除API。

什么配置适合你?

这取决于你的预算和你必须移动多快。你是一个资源匮乏的启动处理少量的数据?您可能能够直接从源代码转移到单个节点的MySQL数据库。如果您的需求比较温和,而不需要进行故障安全数据捕获,那么EFK堆栈就足够了。

然而,随着各种规模的组织变得更加以数据为导向,值得花时间考虑您的长期目标。当你每天开始处理数十亿个事件时,你需要确保你的数据管道不会窒息吗?您希望将来可以添加的任何数据源的最大可扩展性?那么你可能想要考虑实现源和目的地聚合。你的未来的自我(和同事)会感谢你,当你的数据量开始爆炸。

无论您的配置如何,Fluentd的简单性,可靠性和可扩展性使其成为数据转发和聚合的绝佳选择。而且它内置Docker的事实使得它对于任何基于微服务的系统来说都是不容小觑的。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 锁和密钥:Docker + Fluentd
  • 简单转发+扩展
  • 源聚合+扩展
  • 源/目标聚合+扩展
  • 什么配置适合你?
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档