乐趣区

关于云计算:群晖DS218部署kafka

欢送拜访我的 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 硬盘,始终在稳固服务:

  1. 下图是网购的内存条,当初一共 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 的镜像,第七步时您能够按本人须要来抉择适合的版本:

  1. kafka 镜像下载的操作如下图中数字的程序,第七步时您能够按本人须要来抉择适合的版本:

  1. 镜像下载实现即可启动容器;

启动 zookeeper 容器

  1. 依照下图操作,启动 zookeeper 容器:

  1. 如下图,将容器名设为 <font color=”blue”>zookeeper</font>,再点击高级设置:

  1. 将容器的 <font color=”blue”>2181</font> 端口和宿主机的 <font color=”blue”>2181</font> 端口绑定:

  1. 勾选 <font color=”blue”> 向导实现后运行此容器 </font>,再点击 <font color=”blue”> 利用 </font> 就会启动容器:

  1. 能够在 <font color=”blue”> 容器 </font> 页查看启动状况:


接下来启动 kafka;

启动 kafka 容器

  1. 在映像页面操作如下:

  1. kafka 的容器设置比 zookeeper 略简单一些,如下图,设置好名字后点击 <font color=”blue”> 高级设置 </font>:

  1. 设置端口映射,这样内网环境都能够拜访这个 kafka 了,用 <font color=”blue”>9092</font> 端口:

  1. 设置链接,如下图,这样的设置相当于 docker 的 <font color=”blue”>link</font> 参数,其实就是在 kafka 容器的 /etc/hosts 中配置了一条记录,hostname 是 zookeeper,IP 地址是 zookeeper 容器的 IP 地址:

  1. 接下来须要减少三个环境变量,如下图:


KAFKA_ZOOKEEPER_CONNECT:zookeeper 的拜访地址,这里的 zookeeper 其实就是 hostname,因为设置了 link 参数,因而间接用 hostname 就能拜访到;

KAFKA_LISTENERS:内网连贯形式,留神这里说的内网是指容器的网络;

KAFKA_ADVERTISED_LISTENERS:群晖服务器所在的家庭网络,对 kafka 而言其实是内部网络(kafka 容器的 IP 和群晖的 IP 是不同网段),所以家庭网络中其余机器要想连贯 kafka,对 kafka 而言就是外网机器要来拜访,因而要配置 KAFKA_ADVERTISED_LISTENERS,这里配置的就是群晖本人的 IP;

  1. 设置结束后,勾选 <font color=”blue”> 向导实现后运行此容器 </font>,再点击 <font color=”blue”> 利用 </font> 就会启动容器:

  1. 收到弹窗提醒(挺有情理的 …):


当初 kafka 部署和启动都胜利了,接下来验证这个服务在家庭内网是否可用;

验证

  1. 最间接的验证形式就是命令行操作,先设置群晖容许 SSH 登录,如下图操作:

  1. 如下图,勾选启用 SSH 性能,端口就用 22:

  1. 当初用 SSH 终端即可登录群晖了,我这里是在 MacBook Pro 电脑上用 iTerm 软件登录的,您能够选用任意 SSH 终端工具,账号密码就是能登录群晖的账号密码,如下图,登录后,就能够应用日常的 linux 命令了:

  1. 查看以后 topic,命令是:
sudo docker exec kafka bash -c "cd /opt/kafka/bin/ && ./kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"


如上图所示,一个 Topic 都没有;

  1. 创立 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,这回有数据了:

  1. 有了 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 登录群晖,执行以下命令,用来生产 <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"
  1. 回到发送音讯的窗口,输出一些字符串,每次输出回车就会将以后行的字符串作为音讯内容发送进来,此时在生产音讯的窗口能够立刻看到音讯内容,如下图:

  1. 再来试试近程连贯是否胜利,我在 MacBook Pro 上装置了 kafka 客户端工具 <font color=”blue”>Kafka Tool 2.0.7</font>,胜利连贯到群晖上的 kafka,能看到所有音讯和主题:

  1. 另外 zookeeper 也能够用了,以下是在 MacBook Pro 上近程连贯 zookeeper 容器的操作:


至此,我的群晖上曾经部署了 nexus3、mysql、zookeeper、kafka,在家撸代码时数据库、音讯这些服务随时想用就用,算是为本人的开发环境发明了更多便当。

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …

https://github.com/zq2599/blog_demos

退出移动版