架構
之前我們的架構是直接由 fluentd td-agent 傳送到 elasticsearch (如下圖)
為了更高的可用性(High Availibity),我們在中間加入 aggregator 的角色,讓在 td-agent 扮演 forwarder 角色,職責更加單一,forwarder 只負責「傳送資料給 aggregator」。過濾(filter)資料的工作轉由 aggregator 負責,這樣的架構下降低了原本應用程式伺服器(application server)的負擔,提供了更高的可用性。架構如下:
實際設定方式
2.1 如何設定 Forwarder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 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. flush_interval 60s </match>
|
2.2 如何設定 Aggregator
1 2 3 4 5 6 7 8 9 10
| # Input <source> @type forward port 24224 </source>
# Output <match mytag.**> ... </match>
|
參考資料
Fluentd High Availability Configuration - Fluentd