Pulsar proxy

Pulsar proxy 是一个可选的网关。 当客户端和 broker 之间不能直连或者不方便直连时,可以使用 Pulsar Proxy。 例如,当 Pulsar 运行在云环境、 Kubernetes 环境以及类似的平台时,可能不方便直连或者不能直连所有broker,此时你就可以使用 Pulsar Proxy。

配置Proxy

使用 Proxy 之前,你必须给 Proxy 配置集群内 broker 的地址,以让 Proxy 可以知道后端的集群信息。 你能够配置代理直接连到服务发现(比如Zookeeper),或者在配置中指定 broker URL。

使用服务发现

Pulsar uses ZooKeeper for service discovery. To connect the proxy to ZooKeeper, specify the following in conf/proxy.conf.

  1. zookeeperServers=zk-0,zk-1,zk-2
  2. configurationStoreServers=zk-0:2184,zk-remote:2184

要使用服务发现,你必须开启网络 ACL。这样 Proxy 能够通过端口2181(本地zookeeper集群)或者2184(配置存储集群)连接到 Zookeeper 节点。

However, it is not secure to use service discovery. Because if the network ACL is open, when someone compromises a proxy, they have full access to ZooKeeper.

使用 broker URL

这种使用指定的 URl 连接到 broker 的方式是更加安全的。

Proxy 需要授权以便能访问 Zookeeper。所以你如果使用 Broker URL 连接到 Broker,你必须禁用 Proxy 级别的授权。 Brokers still authorize requests after the proxy forwards them.

您可以在 conf/proxy.conf中配置broker URLs,如下所示。

  1. brokerServiceURL=pulsar://brokers.example.com:6650
  2. brokerWebServiceURL=http://brokers.example.com:8080
  3. functionWorkerWebServiceURL=http://function-workers.example.com:8080

如果你使用 TLS,可以使用以下方式配置 broker URL:

  1. brokerServiceURLTLS=pulsar+ssl://brokers.example.com:6651
  2. brokerWebServiceURLTLS=https://brokers.example.com:8443
  3. functionWorkerWebServiceURL=https://function-workers.example.com:8443

URL 中的域名可以是映射到多个 broker 的 DNS 域名或者虚拟 IP。因为后端后多个 Broker ip 地址,所以如果集群中的单个 broker 不可用,也不会导致 proxy 和集群的失去连接。

The ports to connect to the brokers (6650 and 8080, or in the case of TLS, 6651 and 8443) should be open in the network ACLs.

注意,如果你不使用 Pulsar Function,你就不需要配置functionWorkerWebServiceURL

启动 Proxy

To start the proxy:

  1. $ cd /path/to/pulsar/directory
  2. $ bin/pulsar proxy

一个集群可以运行多个 Pulsar proxy 实例。

停止 Proxy

Pulsar proxy runs in the foreground by default. To stop the proxy, simply stop the process in which the proxy is running.

Proxy frontends

你可以在 Pulsar proxy 前面部署负载均衡软件,比如HAProxy负载均衡器。

Pulsar 客户端连接 Proxy

Once your Pulsar proxy is up and running, preferably behind a load-distributing frontend, clients can connect to the proxy via whichever address that the frontend uses. 如果地址是 DNS 地址pulsar.cluster.default。例如,客户端连接的 URl 是pulsar://pulsar.cluster.default:6650

需要了解更多 Pulsar Proxy 的信息,请参考 Pulsr proxy