[Docker系列·12] 搭建Kafka服务器

简介:

1 Docker-Ubuntu-Kafka

工作目录:/home/erichan/docker-room/ubuntu-kafka

1.1 制作镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-zookeeper$ nano Dockerfile
# Version: 0.0.1
FROM feuyeux/ubuntu-java7
MAINTAINER Eric Han "feuyeux@gmail.com"
RUN apt-get update && apt-get install -y wget unzip git
RUN wget -q http://apache.fayea.com/apache-mirror/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz
RUN tar -xzf kafka_2.10-0.8.1.1.tgz -C /opt
ENV KAFKA_HOME /opt/kafka_2.10-0.8.1.1
ADD start-kafka.sh /usr/bin/start-kafka.sh
RUN chmod 777 /usr/bin/start-kafka.sh
CMD start-kafka.sh
start-kafka.sh
sed -r -i "s/(zookeeper.connect)=(.*)/\1=$ZK_PORT_2181_TCP_ADDR/g" $KAFKA_HOME/config/server.properties
sed -r -i "s/(broker.id)=(.*)/\1=$BROKER_ID/g" $KAFKA_HOME/config/server.properties
sed -r -i "s/#(advertised.host.name)=(.*)/\1=$HOST_IP/g" $KAFKA_HOME/config/server.properties
sed -r -i "s/^(port)=(.*)/\1=$PORT/g" $KAFKA_HOME/config/server.properties
if [ "$KAFKA_HEAP_OPTS" != "" ]; then
    sed -r -i "s/^(export KAFKA_HEAP_OPTS)=\"(.*)\"/\1=\"$KAFKA_HEAP_OPTS\"/g" $KAFKA_HOME/bin/kafka-server-start.sh
fi
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
start-broker.sh
#!/bin/bash
ZOOKEEPER=`sudo docker ps -a | awk '{print $NF}'  | grep "zk346$"`
ZOOKEEPER_RUNNING=$?
if [ $ZOOKEEPER_RUNNING -eq 0 ] ;
then
    echo "ZooKeeper is already running"
else
    echo "Starting Zookeeper"
    sudo docker run -p 49181:2181 -h zookeeper --name zk346 -d feuyeux/zookeeper:3.4.6
fi
ID=$1
PORT=$2
HOST_IP=$3
echo "BROCKER-ID=$ID KAFKA=$HOST_IP:$PORT"
sudo docker run -p $PORT:$PORT --name kafka081_$4 --link zk346:zk -e BROKER_ID=$ID -e HOST_IP=$HOST_IP -e PORT=$PORT -d feuyeux/kafka:0.8.1
erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-kafka$ chmod +x start-broker.sh

1.2 创建镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-kafka$ d build -t feuyeux/kafka:0.8.1 .

1.3 测试镜像

d kill $(d ps -q) && d rm $(d ps -a -q)
cd ~/docker-room/ubuntu-kafka
./start-broker.sh 101 9093 10.16.41.135 1
./start-broker.sh 102 9094 10.16.41.135 2

脚本自动执行:d run -p 49181:2181 -h zookeeper --name zk346 -d feuyeux/zookeeper:3.4.6

d ps -a
CONTAINER ID        IMAGE                     COMMAND                CREATED             STATUS              PORTS                                                 NAMES
78a84862a311        feuyeux/kafka:0.8.1       "/bin/sh -c start-ka   3 seconds ago       Up 3 seconds        22/tcp, 0.0.0.0:9094->9094/tcp                        kafka081_2                          
951ff2d3296a        feuyeux/kafka:0.8.1       "/bin/sh -c start-ka   12 seconds ago      Up 11 seconds       22/tcp, 0.0.0.0:9093->9093/tcp                        kafka081_1                          
efbd8d713866        feuyeux/zookeeper:3.4.6   "/opt/zookeeper-3.4.   12 seconds ago      Up 12 seconds       2888/tcp, 3888/tcp, 22/tcp, 0.0.0.0:49181->2181/tcp   kafka081_1/zk,kafka081_2/zk,zk346   
erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-kafka$ 

参考

目录
相关文章
|
9月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署dufs文件服务器
【Docker项目实战】使用Docker部署dufs文件服务器
1163 17
【Docker项目实战】使用Docker部署dufs文件服务器
|
10月前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
643 12
|
9月前
|
弹性计算 关系型数据库 Nacos
低配阿里云 ECS 如何 docker 环境部署 NACOS : 单机版模式
NACOS 单机版 Docker 安装指南。使用指定端口和 custom.env 配置文件启动 Nacos 服务,适用于 2.X 版本,包含 gRPC 支持及 MySQL 数据源配置。 -e MODE=standalone \
742 5
|
8月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
528 28
|
11月前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
1026 10
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
消息中间件 存储 运维
为什么说Kafka还不是完美的实时数据通道
【10月更文挑战第19天】Kafka 虽然作为数据通道被广泛应用,但在实时性、数据一致性、性能及管理方面存在局限。数据延迟受消息堆积和分区再平衡影响;数据一致性难以达到恰好一次;性能瓶颈在于网络和磁盘I/O;管理复杂性涉及集群配置与版本升级。
605 1
|
消息中间件 Java Kafka
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
Flink-04 Flink Java 3分钟上手 FlinkKafkaConsumer消费Kafka数据 进行计算SingleOutputStreamOperatorDataStreamSource
473 1
|
消息中间件 Java Kafka
Kafka不重复消费的终极秘籍!解锁幂等性、偏移量、去重神器,让你的数据流稳如老狗,告别数据混乱时代!
【8月更文挑战第24天】Apache Kafka作为一款领先的分布式流处理平台,凭借其卓越的高吞吐量与低延迟特性,在大数据处理领域中占据重要地位。然而,在利用Kafka进行数据处理时,如何有效避免重复消费成为众多开发者关注的焦点。本文深入探讨了Kafka中可能出现重复消费的原因,并提出了四种实用的解决方案:利用消息偏移量手动控制消费进度;启用幂等性生产者确保消息不被重复发送;在消费者端实施去重机制;以及借助Kafka的事务支持实现精确的一次性处理。通过这些方法,开发者可根据不同的应用场景灵活选择最适合的策略,从而保障数据处理的准确性和一致性。
1546 9