以下测试基于 pulsar:2.8.0 standalone 模式
详细信息参考官方教程:https://pulsar.apache.org/docs/en/2.8.0/administration-geo/
环境搭建
准备两台机器,假设未 ip1 与 ip2,执行如下:
环境搭建
# 在 ip1 机器上执行:
docker apachepulsar/pulsar:/pulsar/conf .
# 修改 standalone.conf, 设置 clusterName=cluster1
# 启动容器
docker run -itd -p 8080:8080 -p 6650:6650 -v conf:/pulsar/conf apachepulsar/pulsar bin/pulsar standalone
以上步骤在 ip2 上做一次,但是名字不要冲突,假设clusterName为 cluster2
配置同步
# 在 ip1 机器上执行:
# 创建集群
bin/pulsar-admin clusters create \
--broker-url pulsar://ip2:6650 \
--url http://ip2:8080 \
cluster2
# 创建租户
bin/pulsar-admin tenants create my-tenant \
--admin-roles my-admin-role \
--allowed-clusters cluster1,cluster2
# 创建 namespace
bin/pulsar-admin namespaces create my-tenant/my-namespace
# 配置 namespace 集群权限
bin/pulsar-admin namespaces set-clusters my-tenant/my-namespace \
--clusters cluster69,cluster52
上述步骤在机器 ip2 执行一遍,注意做对应修改
测试
此时两个standalone 就完成了集群的同步。在任一个机器上创建 my-tenant/my-namespace
下的 topic,与 topic 里的消息(订阅状态同步需要手动使能)都会被同步到另一个机器。