欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

起因是懒

我是个Java程序员,在家写代码时常用到redis、mysql、kafka这些基础服务,通常做法是打开电脑,启动redis、mysql、kafka,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)

群晖解决烦恼

  1. 家里有台群晖DS218+,从不关机,为全家提供稳定的图片和视频服务,之前已在上面部署了maven私服、MySQL,运行得很稳定,今天就把kafka也部署在上面吧,今后撸代码时,数据库和消息服务都是现成的,随时想用就用,算得上懒人救星了。
  2. 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:

  3. 下图是网购的内存条,现在一共2+8=10G内存,内存充足才是敢折腾的底气:

前文链接

之前折腾群晖的记录:

  1. 《群晖DS218+做maven私服(nexus3)》
  2. 《群晖DS218+部署mysql》

所以这次部署kafka是轻车熟路的一阵docker操作;

思路

其实操作很简单:群晖带有docker服务,用docker来部署mysql即可,所以,本文其实也就是群晖docker的基本操作记录,以下几处是要注意的地方:

  1. 容器端口
  2. 登录容器操作
  3. docker的link操作

环境信息

  1. 群晖系统:DSM 6.2.2-24922 Update 4
  2. Zookeeper:3.4.13
  3. Kafka:2.4.0(scala:2.12)

下载镜像

  1. 在浏览器登录群晖网页,按照下图中数字的顺序操作,即可下载到zookeeper的镜像,第七步时您可以按自己需要来选择合适的版本:

  2. kafka镜像下载的操作如下图中数字的顺序,第七步时您可以按自己需要来选择合适的版本:

  3. 镜像下载完成即可启动容器;

启动zookeeper容器

  1. 按照下图操作,启动zookeeper容器:

  2. 如下图,将容器名设为zookeeper,再点击高级设置:

  3. 将容器的2181端口和宿主机的2181端口绑定:

  4. 勾选向导完成后运行此容器,再点击应用就会启动容器:

  5. 可以在容器页查看启动情况:



    接下来启动kafka;

启动kafka容器

  1. 在映像页面操作如下:

  2. kafka的容器设置比zookeeper略复杂一些,如下图,设置好名字后点击高级设置:

  3. 设置端口映射,这样内网环境都可以访问这个kafka了,用9092端口:

  4. 设置链接,如下图,这样的设置相当于docker的link参数,其实就是在kafka容器的/etc/hosts中配置了一条记录,hostname是zookeeper,IP地址是zookeeper容器的IP地址:

  5. 接下来需要增加三个环境变量,如下图:



    KAFKA_ZOOKEEPER_CONNECT:zookeeper的访问地址,这里的zookeeper其实就是hostname,由于设置了link参数,因此直接用hostname就能访问到;

KAFKA_LISTENERS:内网连接方式,注意这里说的内网是指容器的网络;

KAFKA_ADVERTISED_LISTENERS:群晖服务器所在的家庭网络,对kafka而言其实是外部网络(kafka容器的IP和群晖的IP是不同网段),所以家庭网络中其他机器要想连接kafka,对kafka而言就是外网机器要来访问,因此要配置KAFKA_ADVERTISED_LISTENERS,这里配置的就是群晖自己的IP;

  1. 设置完毕后,勾选向导完成后运行此容器,再点击应用就会启动容器:

  2. 收到弹窗提示(挺有道理的...):



    现在kafka部署和启动都成功了,接下来验证这个服务在家庭内网是否可用;

验证

  1. 最直接的验证方式就是命令行操作,先设置群晖允许SSH登录,如下图操作:

  2. 如下图,勾选启用SSH功能,端口就用22:

  3. 现在用SSH终端即可登录群晖了,我这里是在MacBook Pro电脑上用iTerm软件登录的,您可以选用任意SSH终端工具,账号密码就是能登录群晖的账号密码,如下图,登录后,就可以使用日常的linux命令了:

  4. 查看当前topic,命令是:
sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"



如上图所示,一个Topic都没有;

5. 创建topic,命令是:

sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --create --bootstrap-server 127.0.0.1:9092 --replication-factor 1 --partitions 1 --topic test001"
  1. 再次查看topic,这回有数据了:

  2. 有了topic,来试试消息的创建和消费,执行以下命令,进入创建消息的对话模式(注意要带-it参数,才能继续输入信息):
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-producer.sh --broker-list kafka:9092 --topic test001"
  1. 再打开一个窗口,ssh登录群晖,执行以下命令,用来消费test001这个主题,一旦这个主题有了消息会立即在此打印出来:
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test001 --consumer-property group.id=old-consumer-test --consumer-property consumer.id=old-consumer-cl --from-beginning"
  1. 回到发送消息的窗口,输入一些字符串,每次输入回车就会将当前行的字符串作为消息内容发送出去,此时在消费消息的窗口可以立即看到消息内容,如下图:

  2. 再来试试远程连接是否成功,我在MacBook Pro上安装了kafka客户端工具Kafka Tool 2.0.7,成功连接到群晖上的kafka,能看到所有消息和主题:

  3. 另外zookeeper也可以用了,以下是在MacBook Pro上远程连接zookeeper容器的操作:



    至此,我的群晖上已经部署了nexus3、mysql、zookeeper、kafka,在家撸代码时数据库、消息这些服务随时想用就用,算是为自己的开发环境创造了更多便利。

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

群晖DS218+部署kafka的更多相关文章

  1. 群晖DS218+部署Harbor(1.10.3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 群晖DS218+部署GitLab

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. 群晖DS218+部署mysql

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. 群晖DS218+做maven私服(nexus3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. K8S使用群晖DS218+的NFS

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. K8S环境快速部署Kafka(K8S外部可访问)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. CentOS 7部署Kafka和Kafka集群

    CentOS 7部署Kafka和Kafka集群 注意事项 需要启动多个shell脚本交互客户端进行验证,运行中的客户端不要停止. 准备工作: 安装java并设置java环境变量,在`/etc/prof ...

  8. Kafka实战(七) - 优雅地部署 Kafka 集群

    既然是集群,必然有多个Kafka节点,只有单节点构成的Kafka伪集群只能用于日常测试,不可能满足线上生产需求. 真正的线上环境需要考量各种因素,结合自身的业务需求而制定.看一些考虑因素(以下顺序,可 ...

  9. 群晖-使用docker套件部署Prometheus+Grafana

    Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...

随机推荐

  1. Android Studio 自定义字体显示英文音标

    android:fontFamily="serif" 网上查了很多自定义字体的方式,或多或少都有些麻烦,最后还是尝试着认为内置字体不应该实现不了英文音标问题,就一个一个字体试了一下 ...

  2. 决策树减支问题(优化)dfs减支问题

    #include <iostream>#include <cstdio>using namespace std;int mem[200];//开记忆数组int fib(int ...

  3. 【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现

    前言 这漏洞出来几天了,之前没怎么关注,但是这两天发现开始有利用这个漏洞进行挖矿和病毒传播了,于是想动手复现一波. WinRAR 代码执行相关的CVE 编号如下: CVE-2018-20250,CVE ...

  4. Vuejs上传

    下载 Vuejs上传Vuejs上传 多部分上传Vue组件. 上传器可以选择上传多部分的文件. 这是关于最大的上传尺寸,允许你上传大文件. 如果prop multiple为真,文件列表将在选择文件时呈现 ...

  5. python实现单链表及链表常用功能

    单链表及增删实现 单链表高级功能实现:反序,找中间结点,检测环等 参考: https://github.com/wangzheng0822/algo

  6. background-size 详解

    backgroun-size:cover; .是按照等比缩放铺满整个区域.主要用于图片比div小的时候,将图片按照某一边的比例扩大以填充整个div背景. .优点:图片不会被拉升,且实用于div长度和宽 ...

  7. package.json文件配置说明

    1.什么是package.json package.json文件是Node.js项目中的一个描述文件,执行npm init命令初始化项目后,在项目的根目录下自动生成该文件.package.json包含 ...

  8. 多测师讲解rf _基本使用002_高级讲师肖sir

      在你安装好RF-ride之后,桌面就会生成一个RIDE图标.双击启动,界面如下:  

  9. pytest文档45-allure添加环境配置(environment)

    前言 在 allure 报告首页 ENVIRONMENT 显示 'There are no environment variables' 没有环境变量的配置信息. 环境变量配置可以添加报告相关的配置参 ...

  10. 【贪心算法】HDU 5747 Aaronson

    题目大意 vjudge链接 给你一个n,m,求解满足等式x0+2x1+4x2+...+2mxm=n的x0~xm的最小和(xi为非负整数) 数据范围 0≤n,m≤109 思路 n和m都在int范围内,所 ...