网站首页 > 博客文章 正文
起因是懒
我是个Java程序员,在家写代码时常用到redis、mysql、kafka这些基础服务,通常做法是打开电脑,启动redis、mysql、kafka,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)
群晖解决烦恼
- 家里有台群晖DS218+,从不关机,为全家提供稳定的图片和视频服务,之前已在上面部署了maven私服、MySQL,运行得很稳定,今天就把kafka也部署在上面吧,今后撸代码时,数据库和消息服务都是现成的,随时想用就用,算得上懒人救星了。
- 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:
- 下图是网购的内存条,现在一共2+8=10G内存,内存充足才是敢折腾的底气:
前文链接
之前折腾群晖的记录:
所以这次部署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容器:
- 如下图,将容器名设为zookeeper,再点击高级设置:
- 勾选向导完成后运行此容器,再点击应用就会启动容器:
- 可以在容器页查看启动情况:
接下来启动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,在家撸代码时数据库、消息这些服务随时想用就用,算是为自己的开发环境创造了更多便利。
欢迎关注我的公众号:程序员欣宸
猜你喜欢
- 2025-03-30 大数据Hadoop之——Apache Hudi 数据湖实战操作
- 2025-03-30 基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
- 2025-03-30 Flink SQL 命令行报错(flink sql window)
- 2025-03-30 手把手带你部署ZooKeeper(zookeeper部署方式)
- 2025-03-30 flink1.20集群环境搭建(flinkonyarn集群部署)
- 2025-03-30 大数据Hadoop之——Kafka Streams原理介绍与简单应用示例
- 2025-03-30 二、Flink部署(flink运行流程)
- 2025-03-30 Scala安装及环境配置(scala安装及环境配置linux)
- 2025-03-30 Kafka 4.0.0 登场:移除 ZooKeeper、重塑实时数据流处理新格局
- 2025-03-30 Kafka 4.0.0 版本发布:告别 ZooKeeper,拥抱 KRaft!
你 发表评论:
欢迎- 374℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 369℃用AI Agent治理微服务的复杂性问题|QCon
- 360℃初次使用IntelliJ IDEA新建Maven项目
- 353℃Maven技术方案最全手册(mavena)
- 351℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 349℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 348℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 344℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)