Skip to main content
Version: 4.0.x

单独运行函数工作器

下图说明了函数工作者如何在不同的机器上作为单独的进程运行。

Function workers run separately in Pulsar

note

图中的Service URLs表示Pulsar客户端和Pulsar管理员用于连接到Pulsar集群的Pulsar服务URL。

要设置单独运行的函数工作器,请完成以下步骤:

步骤1:配置函数工作者以单独运行

note

要单独运行函数工作者,您需要在conf/broker.conf文件中保持functionsWorkerEnabled为其默认值(false)。

配置工作参数

conf/functions_worker.yml文件中配置工作节点所需的参数。

  • workerId: 工作节点的身份标识,在集群中是唯一的。类型为字符串。
  • workerHostname: 工作节点的主机名。
  • workerPort: worker服务器监听的端口。如果不自定义,请保持默认。设置为null以禁用明文端口。
  • workerPortTls: 工作服务器监听的TLS端口。如果您没有自定义,请保持默认。有关TLS加密设置的更多信息,请参阅settings
note

当访问函数工作者以管理函数时,pulsar-admin CLI 或任何客户端应使用配置的 workerHostnameworkerPort 来生成 --admin-url

配置函数包参数

conf/functions_worker.yml文件中配置numFunctionPackageReplicas参数。它表示存储函数包的副本数量。

note

为了确保生产部署中的高可用性,请将numFunctionPackageReplicas设置为与bookies数量相等。默认值1仅适用于单节点集群部署。

配置函数元数据参数

conf/functions_worker.yml文件中配置函数元数据所需的参数。

  • pulsarServiceUrl: 您的代理集群的Pulsar服务URL。
  • pulsarWebServiceUrl: 您的代理集群的Pulsar网络服务URL。
  • pulsarFunctionsCluster: 将此值设置为您的Pulsar集群名称(与conf/broker.conf文件中的clusterName设置相同)。

如果在您的代理集群上启用了身份验证,您必须为函数工作者配置以下身份验证设置,以便与代理进行通信。

  • brokerClientAuthenticationEnabled: 是否启用由函数工作者用于与代理通信的代理客户端认证。
  • clientAuthenticationPlugin: 用于工作服务中Pulsar客户端的认证插件。
  • clientAuthenticationParameters: 用于工作服务中使用的Pulsar客户端的认证参数。

启用安全设置

当你在配置了身份验证的集群中单独运行函数工作器时,你的函数工作器需要与代理通信并对传入的请求进行身份验证。因此,你需要配置代理所需的身份验证和授权属性。

note

您必须配置服务器的函数工作者身份验证和授权,以便服务器对传入的请求进行身份验证,并配置客户端以进行身份验证,以便与代理进行通信。

例如,如果您使用令牌认证,您需要在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下添加saslJaasClientAllowedIdssaslJaasServerSectionName

properties:
saslJaasClientAllowedIds: .*pulsar.*
saslJaasServerSectionName: Broker

对于token authentication提供者,请在properties下添加所需的设置。

properties:
tokenSecretKey: file://my/secret.key
# If using public/private
# tokenPublicKey: file://path/to/public.key
note

密钥文件必须采用DER(可分辨编码规则)编码。

启用授权提供者

要在函数工作者上启用授权,请完成以下步骤。

  1. functions_worker.yml文件中配置authorizationEnabledauthorizationProviderconfigurationMetadataStoreUrl。认证提供者连接到configurationMetadataStoreUrl以接收命名空间策略。

    authorizationEnabled: true
    authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
    configurationMetadataStoreUrl: <meta-type>:<configuration-metadata-store-url>
  2. 配置超级用户角色列表。超级用户角色可以访问任何管理API。以下配置是一个示例。

    superUserRoles:
    - role1
    - role2
    - role3

配置BookKeeper认证

如果在BookKeeper集群上启用了身份验证,您需要为您的函数工作者配置以下BookKeeper身份验证设置。

  • bookkeeperClientAuthenticationPlugin: BookKeeper客户端的认证插件名称。
  • bookkeeperClientAuthenticationParametersName: BookKeeper客户端的认证插件参数,包括名称和值。
  • bookkeeperClientAuthenticationParameters: BookKeeper客户端的认证插件参数。

步骤2:启动函数工作者

note

在启动函数工作器之前,请确保函数运行时已配置。

  • 你可以使用pulsar-daemon CLI工具在后台启动一个函数工作器:

    bin/pulsar-daemon start functions-worker
  • 要在前台启动一个函数工作器,你可以使用 pulsar-admin CLI,如下所示。

    bin/pulsar functions-worker

步骤3:为独立函数工作者配置代理

当你在一个单独的集群中运行函数工作者时,管理员的REST端点被分成两个集群,如下图所示。functionsfunction-workersourcesink端点现在由工作者集群提供服务,而所有其他剩余的端点由代理集群提供服务。这要求你在pulsar-admin CLI中相应地使用正确的服务URL。为了解决这种不便,你可以启动一个代理集群,作为管理服务的中央入口点,用于路由管理REST请求。

assets/functions-worker-separated-proxy.svg

tip

如果您尚未设置代理集群,请按照说明部署一个。

要为路由功能相关的管理请求启用代理到功能工作者,您可以编辑conf/proxy.conf文件以修改以下设置:

functionWorkerWebServiceURL=<pulsar-functions-worker-web-service-url>
functionWorkerWebServiceURLTLS=<pulsar-functions-worker-web-service-url>