在Docker上部署集群
要在Docker上使用Docker命令部署Pulsar集群,您需要完成以下步骤。
步骤1:拉取Pulsar镜像
要在Docker上运行Pulsar,您需要为每个Pulsar组件创建容器:ZooKeeper、bookie和broker。您可以在Docker Hub上分别拉取ZooKeeper和bookie的镜像,并为broker拉取Pulsar镜像。您也可以只拉取一个Pulsar镜像,并使用此镜像创建三个容器。本教程以第二种选项为例。
您可以使用以下命令从Docker Hub拉取Pulsar镜像。如果您不想使用某些连接器,可以在那里使用apachepulsar/pulsar:latest。
docker pull apachepulsar/pulsar-all:latest
步骤2:创建一个网络
要在Docker上部署一个Pulsar集群,你需要创建一个网络并将ZooKeeper、bookie和broker的容器连接到这个网络。
使用以下命令创建网络pulsar:
docker network create pulsar
步骤3:创建并启动容器
创建一个ZooKeeper容器
创建一个ZooKeeper容器并启动ZooKeeper服务。
docker run -d -p 2181:2181 --net=pulsar \
-e metadataStoreUrl=zk:zookeeper:2181 \
-e cluster-name=cluster-a -e managedLedgerDefaultEnsembleSize=1 \
-e managedLedgerDefaultWriteQuorum=1 \
-e managedLedgerDefaultAckQuorum=1 \
-v $(pwd)/data/zookeeper:/pulsar/data/zookeeper \
--name zookeeper --hostname zookeeper \
apachepulsar/pulsar-all:latest \
bash -c "bin/apply-config-from-env.py conf/zookeeper.conf && bin/generate-zookeeper-config.sh conf/zookeeper.conf && exec bin/pulsar zookeeper"
初始化集群元数据
成功创建ZooKeeper容器后,您可以使用以下命令来初始化集群元数据。
docker run --net=pulsar \
--name initialize-pulsar-cluster-metadata \
apachepulsar/pulsar-all:latest bash -c "bin/pulsar initialize-cluster-metadata \
--cluster cluster-a \
--zookeeper zookeeper:2181 \
--configuration-store zookeeper:2181 \
--web-service-url http://broker:8080 \
--broker-service-url pulsar://broker:6650"
创建一个bookie容器
创建一个bookie容器并启动bookie服务。
docker run -d -e clusterName=cluster-a \
-e zkServers=zookeeper:2181 --net=pulsar \
-e metadataServiceUri=metadata-store:zk:zookeeper:2181 \
-v $(pwd)/data/bookkeeper:/pulsar/data/bookkeeper \
--name bookie --hostname bookie \
apachepulsar/pulsar-all:latest \
bash -c "bin/apply-config-from-env.py conf/bookkeeper.conf && exec bin/pulsar bookie"
创建一个代理容器
创建一个代理容器并启动代理服务。
docker run -d -p 6650:6650 -p 8080:8080 --net=pulsar \
-e metadataStoreUrl=zk:zookeeper:2181 \
-e zookeeperServers=zookeeper:2181 \
-e clusterName=cluster-a \
-e managedLedgerDefaultEnsembleSize=1 \
-e managedLedgerDefaultWriteQuorum=1 \
-e managedLedgerDefaultAckQuorum=1 \
--name broker --hostname broker \
apachepulsar/pulsar-all:latest \
bash -c "bin/apply-config-from-env.py conf/broker.conf && exec bin/pulsar broker"