Docker Stack部署NSQ实时分布式消息集群

Docker搭建NSQ实时分布式消息集群

NSQ是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。
NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。另外,官方还提供了拆箱即用Go和Python库。如果读者兴趣构建自己的客户端的话,还可以参考官方提供的协议规范。

 

环境准备

本文基于一台 linux centos7 虚拟机试验

docker 安装

docker 安装方式
使用docker version 命令检查 docker 是否安装成功

nsq docker 部署

nsq 主要有三个组件: nsqlookupd, nsqd, nsqadmin。这三个组件都包含在 nsqio/nsq 镜像中, 每一个组件都可以通过指定组件名的方式去启动,启动命令的形式如下:
docker run nsqio/nsq /command

拉取基础镜像 docker pull nsqio/nsqd

docker部署

nsqlookupd

docker run --name lookupd -p 4160:4160 -p 4161:4161 -d nsqio/nsq /nsqlookupd
说明:

  • -p 是映射端口
  • -d 是后台运行容器
  • /nsqlookupd 就是启动命令

    nsqd

  • 首先通过ifconfig获取虚拟机的 ip, 以本机 ip 172.16.49.92为例
  • nsq 的启动命令如下:
    docker run --name nsqd -p 4150:4150 -p 4151:4151 -d nsqio/nsq /nsqd --broadcast-address=172.16.49.92 --lookupd-tcp-address=172.16.49.92:4160
  • 持久化保存 nsqd 数据 使用/data 参数:
    --data-path=/data

nsqadmin

docker run -d --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin --lookupd-http-address=172.16.49.92:4161
访问 http://172.16.49.92:4161 就可以查看 nsq系统详情了

测试验证

  • curl 172.16.49.92:4161/nodes调用 lookupd 接口查看节点信息
    json {"producers":[{"remote_address":"172.17.0.1:46290","hostname":"6c684bee454b","broadcast_address":"172.16.49.92","tcp_port":4150,"http_port":4151,"version":"1.2.0","tombstones":[],"topics":[]}]}
  • curl -d 'hello world ' 'http://127.0.0.1:4151/pub?topic=test'生产一个消息,同时也创建了一个topic。
    调用 lookupd 的 /topics 接口返回 json {"topics":["test"]}
  • 通过docker logs containerID查看各个组件的日志详情
  • 直接访问 http://172.16.49.92:4171 就可以访问 nsqadmin 的首页

docker stack 部署

docker stack 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具.
要使用 dokcer stack 部署,我们首先需要编写 yaml 文件, docker-compose.yml 文件如下:

定义了三个服务模块: nsqlookupd, nsqd, nsqadmin. 
docker stack deploy -c  docker-compose.yml nsq 启动nsq所有组件集群
docker stack ps nsq 查看各个组件的运行详情
docker service logs -f nsq_nsqd  查看组件日志
其他常用命令可以通过 docker stack --help查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值