Flink实现跨集群数据传输问题,两个集群都有krbs认证,但是Flink好像只能认证一个集群,这种有什么办法实现呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Flink 提供了三个模块来对集群进 行安全验证,分别是 HadoopModule. JaasModule. ZooKeeperModule。安全认证相关参数对应的SecurityOptions。
HadoopModule用来对使用 UserGroupInformation进行身份验证的框架(kudu、hbase同步框 架、hdfs等)进行认证配置。 JaasModule用来对使JaasConfig 进行身份验证的框架(kafka zk、hbase异步框架等)进行认证配 置。 ZooKeeperModule负责安装整个进程的ZooKeeper安全配置。
Flink组件在启动时,会先加载认证相关模块,在构建的安全上下文中,启动集群各个组件。不过Flink 整个集群只能使用一份证书进行相关验证,也就是说,如果Flink任务从开启Kerberos 认证的Kafka中读取数据,并写入Kudu,则使用的principal和keytab,具有同时访问hdfs、kafka、kudu的权限。如果使用不同的证书,则需要在Flink任务中单独进行Kerberos相关配置。
我知道的解决跨集群认证问题的方法有以下几种:
利用Kerberos认证 Kerberos是一种分布式认证协议,可以在多个数据中心之间实现安全认证。在Flink集群中,可以通过配置Kerberos认证来解决跨集群认证问题。
使用X.509证书认证 X.509证书是一种公开密钥基础设施(PKI)证书,可以用于实现跨集群认证。在Flink集群中,可以通过配置X.509证书认证来解决跨集群认证问题。
利用TLS协议进行安全通信 TLS是一种安全协议,可以实现在不同数据中心之间的安全通信。在Flink集群中,可以通过配置TLS协议来解决跨集群认证问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。