在Rancher中部署Nsq

2019-07-31  本文已影响0人  bysir

前提环境

Rancher1.6 + Cattle

其他网络或者架构可自行研究, 希望本文能为你提供灵感.

目的

必备知识

  1. 能够使用Rancher添加 服务/应用, 并会配置"挂载"
  2. Cattle环境中的内部DNS服务, 看这篇文章即可.
  3. Nsq的Nsqd与Nsqlookupd的关系以及连接原理, 可以多读读官方文档: nsqd, nsqlookupd, production, topology_patterns. 或者我写的另一篇文章: Nsq从入门到实践

开始部署

流程如下

  1. 创建nsqd与nsqlookupd服务, 重点是nsqd容器中hostname的配置.
  2. 在生产者服务中Link nsqd服务.
  3. 在消费者服务中Link nsqlookupd服务.
  4. 就可以用了.

就是这么简单且枯燥.

详细如下

创建nsqd与nsqlookupd

新建应用: 名为nsq

添加服务, 可以参考以下docker-compose.yml

version: '2'
services:
  nsqlookupd:
    image: nsqio/nsq
    command:
    - /nsqlookupd
  nsqd:
    image: nsqio/nsq
    hostname: nsqd.nsq
    volumes:
    - /workspace/docker/volumes/nsqd/data:/data
    links:
    - nsqlookupd:nsqlookupd
    command:
    - /nsqd
    - --lookupd-tcp-address=nsqlookupd:4160
    - --data-path=/data

需要注意以下几点

  1. nsqd 容器需要配置lookupd地址: lookupd-tcp-address=nsqlookupd:4160, 和挂载的数据文件: --data-path=/data, 并Link nsqlookupd服务.
  2. 重点!! nsqd 容器不用配置broadcast-address, 而是使用默认的主机名, 所以需要配置主机名, 可以看到这里配置的是hostname: nsqd.nsq, 这个值是有意义的, 是{服务名称}.{应用名称}, 详情看: Cattle环境中的内部DNS服务

使用hostname有一个好处: 不用去生产者服务Link这个nsqd节点, 当需要部署多个nsqd节点时 这点将大大减少配置复杂度.

nsqd配置好了之后是这样的:


命令

网络

nsqlookup不用配置什么, 所以不截图了.

生产者与消费者服务连接nsqd与nsqdlookupd

需要在生产者服务中添加nsqd的链接

生产者端
这样就可以在生产者代码中使用nsqd这个host去连接nsqd服务了.

同理需要在消费者服务添加nsqlookupd链接


消费者端

完成, 现在就可以正常使用nsq了.

再扩展一个nsqd节点

当你发现一个nsqd不够用了之后就需要再添加一个Nsqd节点, 为了方便我们把这个节点成为 nsqd-baba.

由于我们使用hostname的方式来指定nsqd的广播地址, 所以部署这个节点是十分方便的, 仅仅只需要在nsq应用中添加一个nsqd-baba服务. 配置和上面添加第一个nsqd节点时大同小异:

上一篇 下一篇

猜你喜欢

热点阅读