大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在一个正在运行的kafka集群中添加kerberos认证和ACL权限控制,同时保证以前所有的producer\consumer服务不中断
创新互联建站从2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元莒南做网站,已为上家服务,为莒南各地企业和个人服务,联系电话:18982081108解决方式: 使kafka集群监听两个端口,一个为无认证连接,另一个为kerberos的认证连接
这时候在配置ACL的时候出了问题:
假如我以kerberos认证的方式连接kafka集群,那么我的用户名是principal的primary部分。例如principal是 kafka/master@HZ.DATA.COM ,那么我的用户名就是kafka。 这时候我只要给kafka这个用户配置相应的权限就可以了。
但是当我以非认证的方式连接kafka集群的时候,我会得到以下的错误:
[WARN ]16:06:55,440, [Class]NetworkClient, Error while fetching metadata with correlation id 1 : {test=UNKNOWN_TOPIC_OR_PARTITION} org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [test]
或者在console-producer中的错误如下:
[2017-08-22 15:17:27,576] WARN Error while fetching metadata with correlation id 2 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-08-22 15:17:27,685] WARN Error while fetching metadata with correlation id 4 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-08-22 15:17:27,787] WARN Error while fetching metadata with correlation id 6 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-08-22 15:17:27,890] WARN Error while fetching metadata with correlation id 7 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-08-22 15:17:27,993] WARN Error while fetching metadata with correlation id 8 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
原因: 一旦为kerberos的用户针对某个资源(比如topic)配置ACL之后,那么对于非认证方式访问的时候因为没有权限所以访问不到对应的数据。
解决方法: 将kafka集群的日志设为debug级别后重启,可以看到非认证方式访问kafka集群时的用户为ANONYMOUS
1、给 ANONYMOUS配置相应的权限即可
2、每一个topic都要为 ANONYMOUS设置权限毕竟不方便, 可以将ANONYMOUS设为super.users
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。