单独运行函数工作器
下图说明了函数工作者如何在不同的机器上作为单独的进程运行。
图中的Service URLs表示Pulsar客户端和Pulsar管理员用于连接到Pulsar集群的Pulsar服务URL。
要设置单独运行的函数工作器,请完成以下步骤:
步骤1:配置函数工作者以单独运行
要单独运行函数工作者,您需要在conf/broker.conf文件中保持functionsWorkerEnabled为其默认值(false)。
配置工作参数
在conf/functions_worker.yml文件中配置工作节点所需的参数。
workerId: 工作节点的身份标识,在集群中是唯一的。类型为字符串。workerHostname: 工作节点的主机名。workerPort: worker服务器监听的端口。如果不自定义,请保持默认。设置为null以禁用明文端口。workerPortTls: 工作服务器监听的TLS端口。如果您没有自定义,请保持默认。有关TLS加密设置的更多信息,请参阅settings。
当访问函数工作者以管理函数时,pulsar-admin CLI 或任何客户端应使用配置的 workerHostname 和 workerPort 来生成 --admin-url。
配置函数包参数
在conf/functions_worker.yml文件中配置numFunctionPackageReplicas参数。它表示存储函数包的副本数量。
为了确保生产部署中的高可用性,请将numFunctionPackageReplicas设置为与bookies数量相等。默认值1仅适用于单节点集群部署。
配置函数元数据参数
在conf/functions_worker.yml文件中配置函数元数据所需的参数。
pulsarServiceUrl: 您的代理集群的Pulsar服务URL。pulsarWebServiceUrl: 您的代理集群的Pulsar网络服务URL。pulsarFunctionsCluster: 将此值设置为您的Pulsar集群名称(与conf/broker.conf文件中的clusterName设置相同)。
如果在您的代理集群上启用了身份验证,您必须为函数工作者配置以下身份验证设置,以便与代理进行通信。
brokerClientAuthenticationEnabled: 是否启用由函数工作者用于与代理通信的代理客户端认证。clientAuthenticationPlugin: 用于工作服务中Pulsar客户端的认证插件。clientAuthenticationParameters: 用于工作服务中使用的Pulsar客户端的认证参数。
启用安全设置
当你在配置了身份验证的集群中单独运行函数工作器时,你的函数工作器需要与代理通信并对传入的请求进行身份验证。因此,你需要配置代理所需的身份验证和授权属性。
您必须配置服务器的函数工作者身份验证和授权,以便服务器对传入的请求进行身份验证,并配置客户端以进行身份验证,以便与代理进行通信。
例如,如果您使用令牌认证,您需要在conf/function-worker.yml文件中配置以下属性。
brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters: file:///etc/pulsar/token/admin-token.txt
configurationMetadataStoreUrl: zk:zookeeper-cluster:2181 # auth requires a connection to zookeeper
authenticationProviders:
- "org.apache.pulsar.broker.authentication.AuthenticationProviderToken"
authorizationEnabled: true
authenticationEnabled: true
superUserRoles:
- superuser
- proxy
properties:
tokenSecretKey: file:///etc/pulsar/jwt/secret # if using a secret token, key file must be DER-encoded
tokenPublicKey: file:///etc/pulsar/jwt/public.key # if using public/private key tokens, key file must be DER-encoded
您可以在函数工作者上启用以下安全设置。
启用TLS加密
要启用TLS加密,请配置以下设置。
useTLS: true
pulsarServiceUrl: pulsar+ssl://localhost:6651/
pulsarWebServiceUrl: https://localhost:8443
tlsEnabled: true
tlsCertificateFilePath: /path/to/functions-worker.cert.pem
tlsKeyFilePath: /path/to/functions-worker.key-pk8.pem
tlsTrustCertsFilePath: /path/to/ca.cert.pem
// The path to trusted certificates used by the Pulsar client to authenticate with Pulsar brokers
brokerClientTrustCertsFilePath: /path/to/ca.cert.pem
有关TLS加密的更多详细信息,请参阅使用TLS进行传输加密。
启用认证提供者
要在函数工作者上启用认证提供者,请用您想要启用的提供者替换authenticationProviders参数。
authenticationEnabled: true
authenticationProviders: [provider1, provider2]
对于mTLS认证提供者,请按照以下示例添加所需的设置。
brokerClientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationTls
brokerClientAuthenticationParameters: tlsCertFile:/path/to/admin.cert.pem,tlsKeyFile:/path/to/admin.key-pk8.pem
authenticationEnabled: true
authenticationProviders: ['org.apache.pulsar.broker.authentication.AuthenticationProviderTls']
对于SASL认证提供者,在properties下添加saslJaasClientAllowedIds和saslJaasServerSectionName。
properties:
saslJaasClientAllowedIds: .*pulsar.*
saslJaasServerSectionName: Broker
对于token authentication提供者,请在properties下添加所需的设置。
properties:
tokenSecretKey: file://my/secret.key
# If using public/private
# tokenPublicKey: file://path/to/public.key
密钥文件必须采用DER(可分辨编码规则)编码。
启用授权提供者
要在函数工作者上启用授权,请完成以下步骤。
-
在
functions_worker.yml文件中配置authorizationEnabled、authorizationProvider和configurationMetadataStoreUrl。认证提供者连接到configurationMetadataStoreUrl以接收命名空间策略。authorizationEnabled: true
authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
configurationMetadataStoreUrl: <meta-type>:<configuration-metadata-store-url> -
配置超级用户角色列表。超级用户角色可以访问任何管理API。以下配置是一个示例。
superUserRoles:
- role1
- role2
- role3
配置BookKeeper认证
如果在BookKeeper集群上启用了身份验证,您需要为您的函数工作者配置以下BookKeeper身份验证设置。
bookkeeperClientAuthenticationPlugin: BookKeeper客户端的认证插件名称。bookkeeperClientAuthenticationParametersName: BookKeeper客户端的认证插件参数,包括名称和值。bookkeeperClientAuthenticationParameters: BookKeeper客户端的认证插件参数。
步骤2:启动函数工作者
在启动函数工作器之前,请确保函数运行时已配置。
-
你可以使用
pulsar-daemonCLI工具在后台启动一个函数工作器:bin/pulsar-daemon start functions-worker -
要在前台启动一个函数工作器,你可以使用
pulsar-adminCLI,如下所示。bin/pulsar functions-worker
步骤3:为独立函数工作者配置代理
当你在一个单独的集群中运行函数工作者时,管理员的REST端点被分成两个集群,如下图所示。functions、function-worker、source和sink端点现在由工作者集群提供服务,而所有其他剩余的端点由代理集群提供服务。这要求你在pulsar-admin CLI中相应地使用正确的服务URL。为了解决这种不便,你可以启动一个代理集群,作为管理服务的中央入口点,用于路由管理REST请求。
如果您尚未设置代理集群,请按照说明部署一个。
要为路由功能相关的管理请求启用代理到功能工作者,您可以编辑conf/proxy.conf文件以修改以下设置:
functionWorkerWebServiceURL=<pulsar-functions-worker-web-service-url>
functionWorkerWebServiceURLTLS=<pulsar-functions-worker-web-service-url>