Fluentd中如何配置高可用

发布时间:2021-07-30 18:00:39 作者:Leah
来源:亿速云 阅读:127

这篇文章将为大家详细讲解有关Fluentd中如何配置高可用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

对于高访问量的web站点或者服务,我们可以采用Fluentd的高可用配置模式。

  1. 消息分发语义

    Fluentd设计初衷主要是用作事件日志分发系统的。这类系统支持几种不同的分发模式:

    1. 至多一次。消息被立即发送,若传输成功,该消息不会再被发送。发送失败,则会导致消息丢失。现实环境下会有很多情况导致发送失败,比如网络暂时不可用。

    2. 至少一次。消息至少会被发送一次,若发送失败,消息会被重发。这保证了消息不会被丢失,但可能导致接收端收到重复的消息。

    3. 精确只发一次。消息刚好发送一次,能确保送达且不会重复。这是大家所期望的分发模式。实现此模式可能需要采用同步化的日志处理方式,当达到发送瓶颈时,告知业务层已无法接收更多的日志。

    为了在不影响业务性能的情况下收集大量的日志,日志层必须以异步的方式运行。因此,Fluentd只提供了前两种传输模式。


  2. 网络拓扑

    为使得Fluentd具备高可用性,典型的部署架构需要包含两种不同角色的Fluentd模块:转发器(forwarder)和聚合器(aggregator)。其拓扑结构如下图所示

    Fluentd中如何配置高可用

    转发器部署在业务节点,用于收集业务方产生的本地日志事件,并将事件发送至聚合器。

    聚合器持续地从转发器接收日志,对日志进行缓存,并定期上传日志到下一个处理方(典型的就是存储)。

    聚合器采用主备模式。如上图,192.168.0.1为主,192.168.0.2为备。


  3. 转发器配置

    转发器的典型配置如下所示:

    # TCP input<source>  @type forward  port 24224</source>
    # HTTP input<source>  @type http  port 8888</source>
    # Log Forwarding<match mytag.**>  @type forward
     # primary host  <server>    host 192.168.0.1    port 24224  </server>  # use secondary host  <server>    host 192.168.0.2    port 24224    standby  </server>
     # use longer flush_interval to reduce CPU usage.  # note that this is a trade-off against latency.  <buffer>    flush_interval 60s  </buffer></match>
     

    这里有两个输入源,使用forward插件将日志事件发送到两个聚合器server中,其中通过standby指定192.168.0.2为备用聚合器。若两个聚合器节点都不可用,日志将会缓存在转发器节点。


  4. 聚合器配置

    聚合器的典型配置如下所示:

    # Input<source>  @type forward  port 24224</source>
    # Output<match mytag.**>  ...</match>
     

    这个比较简单,使用forward插件作为输入源。日志会在本地缓存,并通过重传机制确保能送达目的地。


  5. 失败场景提示

    1. 转发失败

      转发器收到应用层的日志事件后,先将事件写入本地磁盘缓存(由buffer_path指定)。每个flush_interval到来时,缓存事件被转发至聚合器。

      转发器进程若发生崩溃,进程重启后会自动重发已缓存的日志;转发器和聚合器网络若发生故障,转发器也会对日志进行重传。这在一定程度上保证了转发器的健壮性。

      但仍有一些情况可导致数据丢失:

      1. 转发器收到业务层日志,在将日志写入缓存之前发生崩溃

      2. 磁盘损坏

    2. 聚合失败

      聚合器采用和转发器相同的失败处理机制,失败场景类似。


  6. 错误排查

    采用此架构进行部署时,有时候会遇到“no nodes are available”的错误提示。这可能是节点间网络不通导致的。需要注意的是,节点之间通过24224端口传输数据,既使用TCP,也会使用UDP。

    可通过以下命令进行检查:

    $ telnet host 24224$ nmap -p 24224 -sU host

关于Fluentd中如何配置高可用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. fluentd 解析httpd日志
  2. Fluentd中out_copy如何使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

fluentd

上一篇:Centos中怎么部署一个shiny应用

下一篇:Fluentd中怎么使用REST接口监控Fluentd

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》