Pulsar Namspace 级别的集群隔离命令使用失效问题

Viewed 165

背景

近期在使用 pulsar-admin ns-ioslation-policy 命令的时候,发现指定 primary 圈定 broker-regex-list 列表,发现无法使用正则匹配出 Port,必须要指定 ip:* 才能生效。

请问是否在 2.8.0 版本的时候,pulsar-admin 不支持到 broker 的端口级别隔离吗?

想使用端口级别隔离的原因:

例如使用一台机器,在上面堆叠部署 broker 服务,例如 8080,8081,8082 的三个节点,这样指定到这条机器上的所有 broker 节点,无法针对 port 进行细粒度的制定 Broker 负载。

命令:

bin/pulsar-admin ns-isolation-policy set \
--auto-failover-policy-type min_available \
--auto-failover-policy-params min_limit=1,usage_threshold=85 \
--namespaces aipaas/iat \
--primary "172.21.111.21:\d{2}8[012],172.21.117.35:\d{2}8[012]" \
dx ns-isolation-aipaas-iat

这里我想自由指定到 21 节点上的 8080,8081,8082, 35 节点上的 8080,8081,8082。
例如我还有其他的 broker 机器例如 172.21.117.31/38 上面分别也有三组 broker-8080,8081,8082。

请问改如何进行解决?

2 Answers

可以将每个端口配置不同的主机名:
prod1-broker1.messaging.use.example.com -> 172.21.111.21:8081
prod1-broker2.messaging.use.example.com -> 172.21.111.21:8082

然后 --primary "prod1-broker[1-2].messaging.use.example.com"

源码中的集群隔离test有如下案例:
image.png

那咨询一下,这里面配置域名和ip+端口的映射,在我broker.conf的配置文件及主机的Hosts需要做什么修改吗?

可以类似这样修改

主机Hosts:
172.21.111.21 prod-broker1.messaging.use.example.com
172.21.111.21 prod-broker2.messaging.use.example.com

broker1.conf:
advertisedAddress=prod-broker1.messaging.use.example.com
webServicePort=8081
brokerServicePort=8081

broker2.conf:
advertisedAddress=prod-broker2.messaging.use.example.com
webServicePort=8082
brokerServicePort=8082

好的,非常感谢,我们验证一下域名结合hosts这种模式。

https://github.com/apache/pulsar/issues/15795
这个issue也提到了同样的问题, 可以关注下.