扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
下文给大家带来Sink Processors(故障转移与负载均衡)的测试方法详解,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用创新互联在行业内累计的经验来做一个解答。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,创新互联公司面向各种领域:门窗定制等成都网站设计、成都全网营销推广解决方案、网站设计等建站排名服务。Sink groups允许组织多个sink到一个实体上。 Sink processors能够提供在组内所有Sink之间实现负载均衡的能力,而且在失败的情况下能够进行故障转移从一个Sink到另一个Sink。
简单的说就是一个source 对应一个Sinkgroups,即多个sink,这里实际上与第六节的复用/复制情况差不多,只是这里考虑的是可靠性与性能,即故障转移与负载均衡的设置。
下面是官方配置:
Property Name | Default | Description |
sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | The component type name, needs to be , or |
从参数类型上可以看出有3种Processors类型:, 和 processors 还不支持。
下面是官网例子
=
=
=
DefaultSink Processor 接收单一的Sink,不强制用户为Sink创建Processor,前面举了很多例子。所以这个就不多说了。
FailoverSink Processor会通过配置维护了一个优先级列表。保证每一个有效的事件都会被处理。
故障转移的工作原理是将连续失败sink分配到一个池中,在那里被分配一个冷冻期,在这个冷冻期里,这个sink不会做任何事。一旦sink成功发送一个event,sink将被还原到live 池中。
在这配置中,要设置sinkgroups processor为failover,需要为所有的sink分配优先级,所有的优先级数字必须是唯一的,这个得格外注意。此外,failover time的上限可以通过maxpenalty 属性来进行设置。
下面是官网配置:
Property Name | Default | Description |
sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | The component type name, needs to be | |
processor.priority. | – | |
processor.maxpenalty | 30000 | (in millis) |
下面是官网例子
=
=
=
=
=
=
这里首先要申明一个sinkgroups,然后再设置2个sink ,k1与k2,其中2个优先级是5和10,而processor的maxpenalty被设置为10秒,默认是30秒。‘
下面是测试例子
[html] view plain
#配置文件:failover_sink_case13.conf
a1.sourcesr1
a1.sinksk1
a1.channelsc1
a1.sinkgroupsg1
a1.sinkgroups.g1.sinksk1
a1.sinkgroups.g1.processor.typefailover
a1.sinkgroups.g1.processor.priority.k15
a1.sinkgroups.g1.processor.priority.k210
a1.sinkgroups.g1.processor.maxpenalty10000
a1.sources.r1.typesyslogtcp
a1.sources.r1.port50000
a1.sources.r1.host192
a1.sources.r1.channelsc1
a1.sinks.k1.typeavro
a1.sinks.k1.channelc1
a1.sinks.k1.hostname192
a1.sinks.k1.port50000
a1.sinks.k2.typeavro
a1.sinks.k2.channelc2
a1.sinks.k2.hostname192
a1.sinks.k2.port50000
a1.channels.c1.typememory
a1.channels.c1.capacity1000
a1.channels.c1.transactionCapacity100
这里设置了2个channels与2个sinks ,关于故障转移的设置直接复制官网的例子。我们还要配置2个sinks对于的代理。这里的2个接受代理我们沿用之前第六章复制的2个sink代理配置。
下面是第一个接受复制事件代理配置
[html] view plain
#配置文件:replicate_sink1_case11.conf
a2.sourcesr1
a2.sinksk1
a2.channelsc1
a2.sources.r1.typeavro
a2.sources.r1.channelsc1
a2.sources.r1.bind192
a2.sources.r1.port50000
a2.sinks.k1.typelogger
a2.sinks.k1.channelc1
a2.channels.c1.typememory
a2.channels.c1.capacity1000
a2.channels.c1.transactionCapacity100
下面是第二个接受复制事件代理配置:
[html] view plain
#配置文件:replicate_sink2_case11.conf
a3.sourcesr1
a3.sinksk1
a3.channelsc1
a3.sources.r1.typeavro
a3.sources.r1.channelsc1
a3.sources.r1.bind192
a3.sources.r1.port50000
a3.sinks.k1.typelogger
a3.sinks.k1.channelc1
a3.channels.c1.typememory
a3.channels.c1.capacity1000
a3.channels.c1.transactionCapacity100
#敲命令
首先先启动2个接受复制事件代理,如果先启动源发送的代理,会报他找不到sinks的绑定,因为2个接事件的代理还未起来。
在启动源发送的代理
启动成功后
打开另一个终端输入,往侦听端口送数据
#在启动源发送的代理终端查看console输出
因为k1的优先级是5,K2是10因此当K2正常运行的时候,是发送到K2的。下面数据正常输出。
然后我们中断K2的代理进程。
再尝试往侦听端口送数据
我们发现源代理发生事件到K2失败,然后他将K2放入到failover list(故障列表)
因为K1还是正常运行的,因此这个时候他会接收到数据。
然后我们再打开K2的大理进程,我们继续往侦听端口送数据
数据正常发生,Failover SinkProcessor测试完毕。
负载均衡片处理器提供在多个Sink之间负载平衡的能力。实现支持通过round_robin(轮询)或者random(随机)参数来实现负载分发,默认情况下使用round_robin,但可以通过配置覆盖这个默认值。还可以通过集成AbstractSinkSelector类来实现用户自己的选择机制。
当被调用的时候,这选择器通过配置的选择规则选择下一个sink来调用。
下面是官网配置
Property Name | Default | Description |
processor.sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | The component type name, needs to be | |
processor.backoff | false | Should failed sinks be backed off exponentially. |
processor.selector | Selection mechanism. Must be either , or FQCN of custom class that inherits from | |
processor.selector.maxTimeOut | 30000 | Used by backoff selectors to limit exponential backoff (in milliseconds) |
下面是官网的例子
=
=
=
=
=
这个与故障转移的设置差不多。
下面是测试例子
[html] view plain
#配置文件:load_sink_case14.conf
a1.sourcesr1
a1.sinksk1
a1.channelsc1
a1.sinkgroupsg1
a1.sinkgroups.g1.sinksk1
a1.sinkgroups.g1.processor.typeload_balance
a1.sinkgroups.g1.processor.backofftrue
a1.sinkgroups.g1.processor.selectorround_robin
a1.sources.r1.typesyslogtcp
a1.sources.r1.port50000
a1.sources.r1.host192
a1.sources.r1.channelsc1
a1.sinks.k1.typeavro
a1.sinks.k1.channelc1
a1.sinks.k1.hostname192
a1.sinks.k1.port50000
a1.sinks.k2.typeavro
a1.sinks.k2.channelc1
a1.sinks.k2.hostname192
a1.sinks.k2.port50000
a1.channels.c1.typememory
a1.channels.c1.capacity1000
a1.channels.c1.transactionCapacity100
这里要说明的是,因此测试的是负载均衡的例子,因此这边使用一个channel来作为数据传输通道。这里sinks的对应的接收数据的代理配置,我们沿用故障转移的接收代理配置。
#敲命令
首先先启动2个接受复制事件代理,如果先启动源发送的代理,会报他找不到sinks的绑定,因为2个接事件的代理还未起来。
在启动源发送的代理
启动成功后
打开另一个终端输入,往侦听端口送数据
#在启动源发送的代理终端查看console输出
其中K1收到3条数据
其中K1收到2条数据
因为我们负载均衡选择的类型是轮询,因此可以看出flume 让代理每次向一个sink发送2次事件数据后就换另一个sinks 发送。
Sink Processors测试完毕
看了以上关于Sink Processors(故障转移与负载均衡)的测试方法详解,如果大家还有什么地方需要了解的可以在创新互联行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,创新互联技术工程师在行业内拥有十几年的经验了。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流