欢迎访问我的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. python安装和首次使用

    安装: 1.安装python环境: 首先打开python官网,下载配置环境:www.python.org 点击上方downloads, 根据系统选择python环境下载 找到 windows x86- ...

  2. TP 3.2 图片处理类

    TP 3.2 图片处理类 <?php namespace Common\Common; class ImageEdit{ /** * [上传图片并生成缩略图] * @param [type] $ ...

  3. JS进阶系列-JS执行期上下文(一)

    ❝ 点赞再看,年薪百万 本文已收录至https://github.com/likekk/-Blog欢迎大家star,共同进步.如果文章有出现错误的地方,欢迎大家指出.后期将在将GitHub上规划前端学 ...

  4. 让我们创建屏幕- Android UI布局和控件

    下载LifeCycleTest.zip - 278.9 KB 下载ViewAndLayoutLessons_-_Base.zip - 1.2 MB 下载ViewAndLayoutLessons_-_C ...

  5. fio硬盘测速windows+linux

    一.FIO工具简介 Fio工具的介绍网上有很多,都是可以通用的,这里就不做太多个人描述了,直接借鉴一下 fio是一种I / O工具,用于基准测试和压力/硬件验证.它支持19种不同类型的I / O引擎( ...

  6. fastjson配置序列化过滤转换

    @Configuration@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer { @Override public voi ...

  7. c#之task与thread区别及其使用

    如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! ! --------------------------- ...

  8. cocos creator屏幕适配的一些知识点

    一. cocos creator 提供的几种适配策略 EXACT_FIT: 整个应用程序在指定区域可见,无需尝试保留原始纵横比.可能会出现失真,应用程序会被拉伸或压缩.也就是说设计分辨率的长和宽不会等 ...

  9. 实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令

    一.实验目的 Mininet 安装之后,会连带安装 Open vSwitch,可以直接通过 Python 脚本调用Open vSwitch 命令,从而直接控制 Open vSwitch,通过实验了解调 ...

  10. dgraph 使用简介

    dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 gola ...