欢送拜访我的 GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;
起因是懒
我是个 Java 程序员,在家写代码时罕用到 redis、mysql、kafka 这些根底服务,通常做法是关上电脑,启动 redis、mysql、kafka,用完再敞开电脑,总感觉这些操作挺麻烦(您想骂我懒么?您骂得对 …..)
群晖解决懊恼
- 家里有台群晖 DS218+,从不关机,为全家提供稳固的图片和视频服务,之前已在下面部署了 maven 私服、MySQL,运行得很稳固,明天就把 kafka 也部署在下面吧,今后撸代码时,数据库和音讯服务都是现成的,随时想用就用,算得上懒人救星了。
- 下图是 DS218+ 刚买来的样子,两块 NAS 硬盘,始终在稳固服务:
- 下图是网购的内存条,当初一共 2 +8=10G 内存,内存短缺才是敢折腾的底气:
前文链接
之前折腾群晖的记录:
- 《群晖 DS218+ 做 maven 私服 (nexus3)》;
- 《群晖 DS218+ 部署 mysql》;
所以这次部署 kafka 是驾轻就熟的一阵 docker 操作;
思路
其实操作很简略:群晖带有 docker 服务,用 docker 来部署 mysql 即可,所以,本文其实也就是群晖 docker 的基本操作记录,以下几处是要留神的中央:
- 容器端口
- 登录容器操作
- docker 的 link 操作
环境信息
- 群晖零碎:DSM 6.2.2-24922 Update 4
- Zookeeper:3.4.13
- Kafka:2.4.0(scala:2.12)
下载镜像
- 在浏览器登录群晖网页,依照下图中数字的程序操作,即可下载到 zookeeper 的镜像,第七步时您能够按本人须要来抉择适合的版本:
- kafka 镜像下载的操作如下图中数字的程序,第七步时您能够按本人须要来抉择适合的版本:
- 镜像下载实现即可启动容器;
启动 zookeeper 容器
- 依照下图操作,启动 zookeeper 容器:
- 如下图,将容器名设为 <font color=”blue”>zookeeper</font>,再点击高级设置:
- 将容器的 <font color=”blue”>2181</font> 端口和宿主机的 <font color=”blue”>2181</font> 端口绑定:
- 勾选 <font color=”blue”> 向导实现后运行此容器 </font>,再点击 <font color=”blue”> 利用 </font> 就会启动容器:
- 能够在 <font color=”blue”> 容器 </font> 页查看启动状况:
接下来启动 kafka;
启动 kafka 容器
- 在映像页面操作如下:
- kafka 的容器设置比 zookeeper 略简单一些,如下图,设置好名字后点击 <font color=”blue”> 高级设置 </font>:
- 设置端口映射,这样内网环境都能够拜访这个 kafka 了,用 <font color=”blue”>9092</font> 端口:
- 设置链接,如下图,这样的设置相当于 docker 的 <font color=”blue”>link</font> 参数,其实就是在 kafka 容器的 /etc/hosts 中配置了一条记录,hostname 是 zookeeper,IP 地址是 zookeeper 容器的 IP 地址:
- 接下来须要减少三个环境变量,如下图:
KAFKA_ZOOKEEPER_CONNECT:zookeeper 的拜访地址,这里的 zookeeper 其实就是 hostname,因为设置了 link 参数,因而间接用 hostname 就能拜访到;
KAFKA_LISTENERS:内网连贯形式,留神这里说的内网是指容器的网络;
KAFKA_ADVERTISED_LISTENERS:群晖服务器所在的家庭网络,对 kafka 而言其实是内部网络(kafka 容器的 IP 和群晖的 IP 是不同网段),所以家庭网络中其余机器要想连贯 kafka,对 kafka 而言就是外网机器要来拜访,因而要配置 KAFKA_ADVERTISED_LISTENERS,这里配置的就是群晖本人的 IP;
- 设置结束后,勾选 <font color=”blue”> 向导实现后运行此容器 </font>,再点击 <font color=”blue”> 利用 </font> 就会启动容器:
- 收到弹窗提醒(挺有情理的 …):
当初 kafka 部署和启动都胜利了,接下来验证这个服务在家庭内网是否可用;
验证
- 最间接的验证形式就是命令行操作,先设置群晖容许 SSH 登录,如下图操作:
- 如下图,勾选启用 SSH 性能,端口就用 22:
- 当初用 SSH 终端即可登录群晖了,我这里是在 MacBook Pro 电脑上用 iTerm 软件登录的,您能够选用任意 SSH 终端工具,账号密码就是能登录群晖的账号密码,如下图,登录后,就能够应用日常的 linux 命令了:
- 查看以后 topic,命令是:
sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"
如上图所示,一个 Topic 都没有;
- 创立 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"
- 再次查看 topic,这回有数据了:
- 有了 topic,来试试音讯的创立和生产,执行以下命令,进入创立音讯的对话模式 (留神要带 -it 参数,能力持续输出信息):
sudo docker exec -it kafka bash -c "cd /opt/kafka/bin/ && ./kafka-console-producer.sh --broker-list kafka:9092 --topic test001"
- 再关上一个窗口,ssh 登录群晖,执行以下命令,用来生产 <font color=”blue”>test001</font> 这个主题,一旦这个主题有了音讯会立刻在此打印进去:
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"
- 回到发送音讯的窗口,输出一些字符串,每次输出回车就会将以后行的字符串作为音讯内容发送进来,此时在生产音讯的窗口能够立刻看到音讯内容,如下图:
- 再来试试近程连贯是否胜利,我在 MacBook Pro 上装置了 kafka 客户端工具 <font color=”blue”>Kafka Tool 2.0.7</font>,胜利连贯到群晖上的 kafka,能看到所有音讯和主题:
- 另外 zookeeper 也能够用了,以下是在 MacBook Pro 上近程连贯 zookeeper 容器的操作:
至此,我的群晖上曾经部署了 nexus3、mysql、zookeeper、kafka,在家撸代码时数据库、音讯这些服务随时想用就用,算是为本人的开发环境发明了更多便当。
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos