2023-03-17
1. sink qianfeng
說明
flume的自動容災指的是當某一個channel或者sink擋掉后,由其他的sink來接收數據
flume的負載均衡指的是多個channel處理的event的數量盡可能的相同。
自動容災
上游方案的編寫
[root@qianfeng01 ~]# vim first-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1 k2
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c1
# source
a1.sources.r1.type = syslogtcp
a1.sources.r1.host = qianfeng01
a1.sources.r1.port = 10086
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = qianfeng02
a1.sinks.k1.port = 10087
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = qianfeng03
a1.sinks.k2.port = 10088
#設置sink組
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 10
a1.sinkgroups.g1.processor.priority.k2 = 5
a1.sinkgroups.g1.processor.maxpenalty = 10000
下游的qianfeng02上的方案
[root@qianfeng02 flumeconf]# vim second-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
# source
a1.sources.r1.type = avro
a1.sources.r1.bind = qianfeng02
a1.sources.r1.port = 10087
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = logger
下游的qianfeng03上的方案
[root@qianfeng03 flumeconf]# vim third-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
# source
a1.sources.r1.type = avro
a1.sources.r1.bind = qianfeng03
a1.sources.r1.port = 10088
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = logger
啟動
先啟動下游的兩個方案
[root@qianfeng02 flumeconf]# flume-ng agent -c ../conf -f second-processor.properties -n a1 -Dflume.root.logger=INFO,console
[root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f third-processor.properties -n a1 -Dflume.root.logger=INFO,console
在啟動上游的一個方案
[root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f first-processor.properties -n a1 -Dflume.root.logger=INFO,console
測試
[root@qianfeng02 ~]# echo "helloworld" | nc qianfeng01 10086
由于k1的優先級是最高的,因此會看到qianfeng02上有數據
模擬自動容災,使用ctrl+c 殺死qianfeng02上的方案,就會看到qianfeng03上有數據了。
負載均衡
負載均衡Sink 選擇器提供了在多個sink上進行負載均衡流量的功能。 它維護一個活動sink列表的索引來實現負載的分配。 默認支持了輪詢(round_robin)和隨機(random)兩種選擇機制分配負載。 默認是輪詢,可以通過配置來更改。
注意: 如果backoff設置為true則啟用了退避機制,失敗的sink會被放入黑名單,達到一定的超時時間后會自動從黑名單移除。 如從黑名單出來后sink仍然失敗,則再次進入黑名單而且超時時間會翻倍,以避免在無響應的sink上浪費過長時間。 如果沒有啟用退避機制,在禁用此功能的情況下,發生sink傳輸失敗后,會將本次負載傳給下一個sink繼續嘗試,因此這種情況下是不均衡的。
上游方案的編寫
[root@qianfeng01 ~]# vim first-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1 k2
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c1
# source
a1.sources.r1.type = syslogtcp
a1.sources.r1.host = qianfeng01
a1.sources.r1.port = 10086
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = qianfeng02
a1.sinks.k1.port = 10087
a1.sinks.k2.type = avro
a1.sinks.k2.hostname = qianfeng03
a1.sinks.k2.port = 10088
#設置sink組
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random
下游的qianfeng02上的方案
[root@qianfeng02 flumeconf]# vim second-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
# source
a1.sources.r1.type = avro
a1.sources.r1.bind = qianfeng02
a1.sources.r1.port = 10087
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = logger
下游的qianfeng03上的方案
[root@qianfeng03 flumeconf]# vim third-processor.conf
#list names
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
# source
a1.sources.r1.type = avro
a1.sources.r1.bind = qianfeng03
a1.sources.r1.port = 10088
# channel
a1.channels.c1.type = memory
# sink
a1.sinks.k1.type = logger
啟動
先啟動下游的兩個方案
[root@qianfeng02 flumeconf]# flume-ng agent -c ../conf -f second-processor.properties -n a1 -Dflume.root.logger=INFO,console
[root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f third-processor.properties -n a1 -Dflume.root.logger=INFO,console
在啟動上游的一個方案
[root@qianfeng03 flumeconf]# flume-ng agent -c ../conf -f first-processor.properties -n a1 -Dflume.root.logger=INFO,console
測試
[root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086
[root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086
[root@qianfeng01 ~]# echo "helloworld" | nc qianfeng01 10086
多發幾條查看效果.....
發送數據的時候不要特別快,因為一個channel可以容納多條Event,發送特別快就查看不到效果,所以慢慢發送,最好的操作方式就發送一條數據后等這條數據已經到某一個sink了,在發送下一條即可。
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號