docker-compose部署kafka服务时如何同时允许内外网访问?

这篇具有很好参考价值的文章主要介绍了docker-compose部署kafka服务时如何同时允许内外网访问?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

最近在学习kafka相关知识,需要搭建自己的kafka环境。综合考虑后决定使用docker-compose来管理维护这个环境。

docker-compose.yml

Bitnami的yml文件就很不错,这里直接拿来用了。

version: "2"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:3.4
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local

docker-compose初体验

下载或创建上述yml文件后,启动:

$ ls
docker-compose.yml

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Pulling kafka (docker.io/bitnami/kafka:3.4)...
3.4: Pulling from bitnami/kafka
55154658374f: Pull complete
Digest: sha256:659549c08f8a1cfce344d31b608ec2d039a66a9b610423c4bc390c486a8cebbd
Status: Downloaded newer image for bitnami/kafka:3.4
Creating kafka_zookeeper_1 ... done
Creating kafka_kafka_1     ... done

$ docker ps -a       
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
4fe1da00ef96   bitnami/kafka:3.4       "/opt/bitnami/script…"   2 minutes ago   Up 2 minutes   0.0.0.0:9092->9092/tcp                                 kafka_kafka_1
bc018108f95e   bitnami/zookeeper:3.8   "/opt/bitnami/script…"   2 minutes ago   Up 2 minutes   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   kafka_zookeeper_1

服务启动后,可以进入容器访问kafka服务

$ docker exec -it 4fe1 /bin/bash

允许外部访问

使用我们的java客户端连接上述docker容器中的kafka服务,结果却一直报错

Error connecting to node 4fe1da00ef96:9092 (id: 1001 rack: null)
java.net.UnknownHostException: 4fe1da00ef96: nodename nor servname provided, or not known

这是因为默认情况下,kafka服务只允许本机连接。

更新docker-compose.yml,开放外部访问。

  • 添加环境变量
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
+     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
+     - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
+     - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093
+     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
  • 暴露端口
    ports:
-     - '9092:9092'
+     - '9093:9093'

停止和删除容器,并重新启动新容器

$ docker-compose down
Stopping kafka_kafka_1     ... done
Stopping kafka_zookeeper_1 ... done
Removing kafka_kafka_1     ... done
Removing kafka_zookeeper_1 ... done
Removing network kafka_default

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Creating kafka_zookeeper_1 ... done
Creating kafka_kafka_1     ... done

$ docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
13ba5ed71886   bitnami/kafka:3.4       "/opt/bitnami/script…"   24 seconds ago   Up 22 seconds   0.0.0.0:9092-9093->9092-9093/tcp                       kafka_kafka_1
e4ca7940e7ab   bitnami/zookeeper:3.8   "/opt/bitnami/script…"   25 seconds ago   Up 24 seconds   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   kafka_zookeeper_1

更新hosts

查看宿主机IP信息,将docker-compose管理的kafka服务名称映射到当前主机IP

$ ifconfig | grep 192 
	inet 192.168.10.241 netmask 0xffffff00 broadcast 192.168.10.255

$ cat /etc/hosts
# docker
192.168.10.241 kafka

此时,我们可以在java代码中连接这个kafka服务了。

properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092");
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9093");
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.10.241:9092");
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.10.241:9093");

测试发现这几种方式均可连接。这是为什么呢?欢迎留言分享。

另一种参数配置方式:文章来源地址https://www.toymoban.com/news/detail-475699.html

  • - KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092
    
  • - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.77.159:9092
    

到了这里,关于docker-compose部署kafka服务时如何同时允许内外网访问?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用docker、docker-compose部署微服务

    这里已经在docker安装并启动好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。 注意如果配置文件中有Redis、MySQL、nacos这些的连接信息,需要把IP地址改为服务器的公网地址或者内网地址,不会连接不到。 我这里以微服务版若依的网关服务为例,上传到指定目录。 官方文档

    2024年02月10日
    浏览(31)
  • Docker构建Java服务 docker-compose部署微服务

    目录 1.  安装Docker前置准备 设置Docker开机自启动 配置Docker阿里云镜像加速 安装Docker-compose 2、镜像拉取 3、创建docker-comepose.yaml文件 4.  创建数据映射容器挂载目录 ,以下是nacos   xxl-job-admin sql脚本文件 5.  docker-comepose 部署 1. 安装Docker前置准备 设置Docker开机自启动 配置Do

    2024年04月16日
    浏览(29)
  • 【docker】 docker-compose如何更新services镜像 | docker-compose如何更新某个镜像 | docker-compose如何重启某个服务

    更新镜像: 首先,确保你已经获取了最新的镜像版本。这可以通过 docker pull 命令来实现,或者直接使用 docker-compose pull 命令更新所有服务的镜像。 拉取 指定 镜像 - 代码如下: 拉取 所有 镜像 - 代码如下: 注意:在拉取更新的镜像后,docker-compose不会自动重新启动服务。你需要

    2024年02月06日
    浏览(33)
  • 记录MacOS M1芯片(ARM64架构)使用docker-compose方式部署Kafka

    amd架构的镜像非常好找,但由于博主是arm64架构的机器,所以一些开发环境非常的难找,所以在这里记录一下arm64环境部署Kafka。 准备 docker-compose.yml 文件: 博主的虚拟机IP是192.168.153.131,注意替换你的服务器IP。 这个文件部署了zookeeper、kakfa以及kafkaUI 在docker-compose.yml目录下,

    2024年02月15日
    浏览(46)
  • Docker---Docker-compose安装部署Samba服务

    1.拉取samba镜像:docker pull dperson/samba 2.升级docker-compose版本: 通过 docker-compose --version 查看版本: 进行升级: 至此基础环境准备完成。 文件内容如下: samba服务权限设置: 创建docker网络: 创建容器: 查看容器状态: 本地进行访问测试: 进入文件夹并登陆,账号密码为yam

    2023年04月15日
    浏览(32)
  • 若依微服务docker-compose部署vuepress

    千寻简笔记已开源,Gitee与GitHub搜索 chihiro-notes ,包含笔记源文件 .md ,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个 Star ~

    2024年02月12日
    浏览(28)
  • 如何通过docker-compose部署ES集群

    一、概述 Linux系统搭建ES集群的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致某个ES节点无法正常运行; 1.3、修改limits.conf limits.conf文件可以

    2024年02月16日
    浏览(38)
  • 如何通过docker-compose部署单节点ES

    一、概述 Linux系统搭建单节点ES的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致ES无法正常运行; 1.3、修改limits.conf limits.conf文件可以设置用

    2024年02月15日
    浏览(40)
  • 在Ubuntu系统上部署Docker和Docker-Compose服务(实战篇)

    在这篇文章中,我们将从查看防火墙状态开始,逐步引导大家完成Docker和Docker-Compose的安装、配置以及使用过程。通过学习这些关键步骤,你将更加熟练地运用容器技术,为未来的项目提供更便捷的开发和部署方案。 无论你是刚刚接触Docker的新手,还是希望进一步优化Docker在

    2024年01月17日
    浏览(29)
  • 基于docker-compose编排部署pig微服务快速开发框架

    基于docker-compose编排部署Pig微服务快速开发框架 1.规划节点 IP 主机名 节点 192.168.100.10 master docker-compose节点 2.基础准备 将软件包上传至master节点/root目录下 案例实施 1.基础环境准备 (1)上传软件包 导入Centos:7.9.2009镜像 查看集群状态 2.容器化部署MariaDB (1)编写Dockerfile 编写mysql

    2024年02月16日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包