暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pulsar 2.7:集群,认证、授权,函数计算,CDC

羊八井花园 2021-04-16
916

一些问题


  • Apache Pulsar 2.7.1

    当 Functions Worker 独立运行时,客户端需要直接 Worker,现在的 Pulsar 还不能通过 broker 找到 Worker 地址。社区已有相应的 PR #6425 修复

    当配置了 Pulsar 集群配置了认证/授权,且 connector 使用进程模式运行时,现在 connector 未继承 Functions Worker 的认证配置,造成 connector 将以匿名用户的方式连接 broker。解决方案有(现在社区也有相应的 PR #8668:

            禁用 Pulsar 集群的认证/授权

            设置 broker 的 `anonymousUserRole=` 为配置的某个用户。

  • debezium MySQL 1.4.2 for Apache Pulsar CDC

    默认的 debezium 为 1.0 版本,对 MySQL 8 新的密码认证方式支持不好,会报异常。我们可以通过从代码自行编译的方式来升级 debezium 为更高版本解决此问题。

Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrival is not allowed


Pulsar 集群安装


按官网文档安装即可:https://pulsar.apache.org/docs/en/deploy-bare-metal/ 。


对于 Functions Woker,采用独立运行的方式,安装文档见:https://pulsar.apache.org/docs/en/functions-worker/#run-functions-worker-separately 。


认证/授权


Broker 的认证/授权


Pulsar 支持多种认证/授权机制,本文采用 JWT Token 的方式,设置文档见:https://pulsar.apache.org/docs/en/security-jwt/ 。


JWT Token 支持两种签名模式:对称与非对称,非对称相对来说更安全。默认的非对称加密使用的 RS256 加密方式,相对 ES256 来说,ES256 生成的 token 在想同安全强度下生成的字符串更短,同时计算速度也更快。同过如下命令可生成 ES256 密钥对:

bin/pulsar tokens create-key-pair \
--signature-algorithm ES256 \
--output-private-key conf/fruits-private.key \
--output-public-key conf/fruits-public.key

不过,官网没有说明采用 ES256 加密算法时 broker 端的配置方式,需要在 `conf/broker.conf` 里添加如下配置,不然 broker 默认使用 RS256 算法解析密钥文件。相应的,若使用其它算法也应将其配置对应算法。

tokenPublicAlg=ES256


Functions Worker 的认证/授权


独立运行的 Functions Worker


Functions Worker 独立运行时,它有两种角色:


  1. 当做一个独立的 Broker 加入 Pulsar 集群

  2. 做为一个客户端访问 broker


所以,在 `conf/functions_worker.conf` 配置文件里要用配置认证、授权和客户端,相应配置如下:

# As broker client
brokerClientAuthenticationEnabled: true
brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters: file:///data/local/pulsar/conf/token-fruits.jwt


# As broker
authenticationEnabled: true
authorizationEnabled: true
authenticationProviders: [ "org.apache.pulsar.broker.authentication.AuthenticationProviderToken" ]
authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
superUserRoles:
- fruits
properties:
tokenPublicKey: file:///data/local/pulsar/conf/fruits-public.key
tokenPublicAlg: ES256


因为 Functions Worker 作为一个 Broker 独立运行,同时使用了 ES256 算法进行 JWT 签名,所以也需要配置 `tokenPublicAlg` 选项。


客户端访问


对于独立运行的 Functions Worker,客户端需要直连 Worker,当前 Pulsar 还不能通过 broker 获取 functions worker 的地址,所以与函数计算相关的功能都需要直连 Functions Worker。如:

bin/pulsar-admin --admin-url http://node1:6750 functions list


端口 `6750` 是 `conf/functions_worker.conf` 里配置的 Functions Worker 监听地址。与函数计算相关的功能有:`functions`、`sources`、`sinks`。


小结


Apache Pulsar 是一个功能很强大的消息、函数计算、流处理系统,整体功能还在不断发展中。但还是有些小细节的问题,还不够完善……这些对于新人来说会耽误不少时间,这里记录在此,希望能让遇到类似问题的朋友可以少走些弯路、节约点时间。以后再多分享些在实际业务中应用 Pulsar 的经验。


文章转载自羊八井花园,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论