阿里云买的kafka使用sasl_ssl方式验证,但是关闭了主机名验证,也即:ssl.endpoint.identification.algorithm为空字符串。
但是:flume的配置文件无法接收空字符串,如果设置:
agent.sources.kafka_source.kafka.ssl.endpoint.identification.algorithm =
则会被flume覆盖为;
agent.sources.kafka_source.kafka.ssl.endpoint.identification.algorithm = https
这样就会报错:Caused by: javax.net.ssl.SSLHandshakeException: No name matching 主机名 found
解决办法:
1 :flume升级到1.11版本以上,1.9不行
2: 根据flume源码:
只有当flume开启ssl,并且SSL_DISABLE_FQDN_CHECK=true时,才能关闭主机名验证。其中,SSL_DISABLE_FQDN_CHECK指代配置项:
public static final String SSL_DISABLE_FQDN_C`H`ECK = "ssl.disableTLSHostnameVerification";
所以,我们的应该删除agent.sources.kafka_source.kafka.ssl.endpoint.identification.algorithm这个配置,添加
agent.sources.kafka_source.kafka.consumer.ssl.disableTLSHostnameVerification = true
然后jks之类的配置按照百度的来搜索填上,就可以消费阿里云买的kafka服务了。