群晖DS218+部署kafka

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 家用的群晖DS218+从不关机,装上了kafka,以后写代码需要用到消息队列时方便多了,随时待命

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

起因是懒

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

群晖解决烦恼

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

在这里插入图片描述

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

在这里插入图片描述

前文链接

思路

  • 其实操作很简单:群晖带有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)

下载镜像

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

在这里插入图片描述

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

在这里插入图片描述

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

启动zookeeper容器

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 接下来启动kafka;

启动kafka容器

  • 在映像页面操作如下:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 设置链接,如下图,这样的设置相当于docker的link参数,其实就是在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;
  • 设置完毕后,勾选向导完成后运行此容器,再点击应用就会启动容器:

在这里插入图片描述

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

在这里插入图片描述

  • 现在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登录群晖,执行以下命令,用来消费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"
  • 回到发送消息的窗口,输入一些字符串,每次输入回车就会将当前行的字符串作为消息内容发送出去,此时在消费消息的窗口可以立即看到消息内容,如下图:

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
4月前
|
消息中间件 监控 Java
【一键解锁!】Kafka Manager 部署与测试终极指南 —— 从菜鸟到高手的必经之路!
【8月更文挑战第9天】随着大数据技术的发展,Apache Kafka 成为核心组件,用于处理实时数据流。Kafka Manager 提供了简洁的 Web 界面来管理和监控 Kafka 集群。本文介绍部署步骤及示例代码,助您快速上手。首先确认已安装 Java 和 Kafka。
646 4
|
4月前
|
消息中间件 域名解析 网络协议
【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题
【Azure 应用服务】部署Kafka Trigger Function到Azure Function服务中,解决自定义域名解析难题
|
4月前
|
消息中间件 Kafka Apache
部署安装kafka集群
部署安装kafka集群
|
7月前
|
消息中间件 Kafka
Kafka【部署 03】Zookeeper与Kafka自动部署脚本
【4月更文挑战第11天】Kafka【部署 03】Zookeeper与Kafka自动部署脚本
106 8
|
7月前
|
消息中间件 Kafka Docker
docker部署kafka
docker部署kafka
206 1
|
7月前
|
消息中间件 Kafka Docker
【消息中心】docker部署kafka
【消息中心】docker部署kafka
98 0
|
7月前
|
消息中间件 算法 Kafka
docker-compose部署kafka
docker-compose部署kafka
|
7月前
|
消息中间件 存储 Java
Kafka 部署教程
Kafka 部署教程
|
7月前
|
消息中间件 分布式计算 监控
腾讯技术官手撸笔记,全新演绎“Kafka部署实战”,已开源
我们知道,当下流行的MQ非常多,不过很多公司在技术选型上还是选择使用Kafka。与其他主流MQ进行对比,我们会发现Kafka最大的优点就是吞吐量高。实际上Kafka是高吞吐低延迟的高并发、高性能的消息中间件,配置良好的Kafka集群甚至可以做到每秒几十万、上百万的超高并发写入。
|
7月前
|
消息中间件 存储 中间件
Greenplum GPKafka【部署 01】使用GPKafka实现Kafka数据导入Greenplum数据库完整流程分享(扩展安装文件网盘分享)
Greenplum GPKafka【部署 01】使用GPKafka实现Kafka数据导入Greenplum数据库完整流程分享(扩展安装文件网盘分享)
83 0