Mac 下使用 docker 搭建 kafka环境

Posted ok绷ii

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac 下使用 docker 搭建 kafka环境相关的知识,希望对你有一定的参考价值。

由于 kafka 依赖 zookeeper,因此需要使用 docker 同时安装 zookeeper 和 kafka。

x01 安装 zookeeper

1) 先下载zookeeper镜像

> docker search zookeeper
> docker pull wurstmeister/zookeeper

2)启动zookeeper服务

> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

x02 安装 kafka

1) 先下载kafka镜像

> docker search kafka
> docker pull wurstmeister/kafka

2)启动kafka服务

> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

x03 消息验证

1)进入kakfa容器

> dcker exec -it kafka bash
> cd /opt/kafka/bin

可以看到很多的脚本:

> ls
connect-distributed.sh               kafka-console-producer.sh            kafka-leader-election.sh             kafka-run-class.sh                   trogdor.sh
connect-mirror-maker.sh              kafka-consumer-groups.sh             kafka-log-dirs.sh                    kafka-server-start.sh                windows
connect-standalone.sh                kafka-consumer-perf-test.sh          kafka-mirror-maker.sh                kafka-server-stop.sh                 zookeeper-security-migration.sh
kafka-acls.sh                        kafka-delegation-tokens.sh           kafka-preferred-replica-election.sh  kafka-streams-application-reset.sh   zookeeper-server-start.sh
kafka-broker-api-versions.sh         kafka-delete-records.sh              kafka-producer-perf-test.sh          kafka-topics.sh                      zookeeper-server-stop.sh
kafka-configs.sh                     kafka-dump-log.sh                    kafka-reassign-partitions.sh         kafka-verifiable-consumer.sh         zookeeper-shell.sh
kafka-console-consumer.sh            kafka-features.sh                    kafka-replica-verification.sh        kafka-verifiable-producer.sh

2)测试生产者和消费者
生产者

> ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic

消费者(需要另起一个终端)

./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic test-topic --from-beginning

注意⚠️:
这里向zookeeper注册的时候,使用的是host.docker.internal,我们在程序中连接kafka的时候,直接使用localhost会报错,如:Error connecting to node host.docker.internal:9092,其处理方式:

  • 可以在本机的 host 文件中,添加映射,将 127.0.0.1 host.docker.internal;
  • 不使用host.docker.internal,而是使用自己主机IP,但是当IP发生变化的时候,就要重新配置。

x04 kafka 集群模式搭建

新建kafka实例:

> docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime wurstmeister/kafka
  1. 更改 broker.id: KAFKA_BROKER_ID 0,1,2
  2. 更改端口号:9092,9093,9094

x05 kafka-manger 安装

1)安装

> docker pull sheepkiller/kafka-manager

2)启动

docker run -d --name kfk-manager --restart always -p 9000:9000 -e ZK_HOSTS=<这里换成你的zookeeper地址和端口> sheepkiller/kafka-manager

3)访问地址 localhost:9000

配置上自己的zookeeper地址;
注意⚠️:
我最开始配置的是localhost:2181,发现无法查询到自己的broker信息;后来到zookeeper看了下,需要再加一下路径
localhost:2181/kafka 就可以了。

Mac下docker搭建lnmp环境 + redis + elasticsearch

之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发、测试、生产环境由于软件版本或者配置不一致产生的问题, 今年准备持续玩玩docker+kubernetes下的敏捷开发模式(当然还有其它:如持续集成)

备忘下第一步,环境搭建

Mac下docker搭建lnmp环境 + redis + elasticsearch

拉取镜像 nginx
docker pull hub.c.163.com/library/nginx:latest

拉取镜像 mysql
docker pull hub.c.163.com/library/mysql:5.6

拉取镜像 php
docker pull hub.c.163.com/library/php:7.1-fpm

创建mysql容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name liugx_mysql56 hub.c.163.com/library/mysql:5.6
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置
–name 容器的名字,随便取,但是必须唯一

创建php-fpm容器
docker run -d -v /Users/liugx/docker/data/www:/var/www/html -p 9000:9000 --link liugx_mysql56:mysql --name liugx_php71 hub.c.163.com/library/php:7.1-fpm
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,即主机上的/Users/liugx/docker/data/www和容器中/var/www/html目录是同步的
–name 容器的名字
–link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。

这里如果不指定–link参数其实也是可以得,因为容易本身也是有ip的且唯一,所以我们也可以直接利用ip去访问容器。

创建nginx容器
docker run -d -p 80:80 --name liugx_nginx -v /Users/liugx/docker/data/www:/var/www/html --link liugx_php71:phpfpm hub.c.163.com/library/nginx
参数说明:
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,即主机上的/Users/liugx/docker/data/www和容器中/var/www/html目录是同步的
–name 容器的名字
–link 与另外一个容器建立起联系

后面的redis和elasticsearch直接像创建mysql数据库容器一样
docker pull hub.c.163.com/library/redis:latest
docker pull hub.c.163.com/library/elasticsearch:latest

######注意######
配置完毕后需要修改nginx配置文件(后面的步骤和平常配置类似,修改配置了重启对应的nginx容器即可生效)
主要修改内容,修改主机的根目录,如果是.php文件就转发给后端的php-fpm处理(192.168.99.100:9000)

方法:
修改nginx配置文件(进入容器):
docker exec -it liugx_nginx bash
更新软件源
apt update
安装vim
apt-get install vim

附上贴图:
连接mysql

 

访问php文件

 

nginx配置

 

以上是关于Mac 下使用 docker 搭建 kafka环境的主要内容,如果未能解决你的问题,请参考以下文章

Docker环境下使用docker-compose一键式搭建kafka集群及kafka管理工具EFAK

Mac下docker搭建lnmp环境 + redis + elasticsearch

在win10下使用docker快速搭建ruby开发环境

Kafka入门实战教程基于Docker搭建Kafka环境

Kafka学习征途:基于Docker搭建Kafka环境

docker容器中搭建kafka集群环境