欢送拜访我的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