我们在 Docker 上使用单节点基本部署,其中包括以下服务
kafka
schemaregistry
zookeeper
例子:
# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------
control-center /etc/confluent/docker/run Up 0.0.0.0:9021->9021/tcp
kafka-single-node_kafka_1 /etc/confluent/docker/run Up 0.0.0.0:9092->9092/tcp
kafka-single-node_schemaregistry_1 /etc/confluent/docker/run Up 0.0.0.0:8081->8081/tcp
kafka-single-node_zookeeper_1 /etc/confluent/docker/run Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp
我们根据 - https://docs.confluent.io/5.0.0/installation/docker/docs/installation/single-node-client.html 在容器上创建服务
我们在 kafka 机器上创建主题,我们打算将数据注入(inject)主题分区
主题将在路径上的 kafka docker 容器机器上创建 -
/var/lib/kafka/data
由于
/var
在那台kafka docker机器上只有100G,我们希望至少使用1T的大小因此,我们计划向操作系统添加一个 1T 字节(1000G)的新磁盘
一旦我们添加了巨大的磁盘,第二个 Action 就是将磁盘挂载到
/var/lib/kafka/data
。 (所以数据文件夹将是 1T 大小)但问题是 - 应该设置哪些 docker 配置文件和参数?
我们正在使用
docker-compose.yml
其中包括以下关于 kafka 的部分kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 9092:9092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
最佳答案
首先,您将磁盘挂载到 /etc/fstab
中的目录。在 linux 主机上,然后使用卷 - https://docs.docker.com/compose/compose-file/#volumes
kafka:
image: confluentinc/cp-kafka:latest
volumes:
- /some/path:/var/lib/kafka/data
关于docker - 如何配置 docker-compose 以便将磁盘挂载到文件夹,而不是本地磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719045/