搭建基于consul,registrator,nsq的GO体系Docker开发环境

使用GO作为生产服务开发语言,避免不了与以下几大基础组件打交道,他们分别是:

consul,registrator,nsq

consul

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,通常用于docker 实例的注册与配置共享

registrator

Registrator 去除了需要手动管理Consul服务条目的复杂性,它监视容器的启动和停止,根据容器暴露的端口和环境变量自动注册服务。

nsq

NSQ是一个基于Go语言的分布式实时消息平台

基于Docker容器的组件搭建

以上组件都提供了官方docker镜像,我们只需要拉取镜像启动即可,以下提供组件使用命令,可供单机开发使用,复杂如consul组集群等,不在此讨论

consul启动命令
docker stop dev-consul
docker rm dev-consul
docker run -d --name=dev-consul -p 8400:8400 -p 8500:8500/tcp -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"bootstrap_expect":1,"datacenter":"dc1","data_dir":"/usr/local/bin/consul.d/data","server":true}' consul agent -server -bind=127.0.0.1 -client=0.0.0.0

bind为服务发布地址,默认为网卡发布,否则可能只发布到容器内部ip

registrator启动命令
docker stop registrator
docker rm registrator
docker run -d --restart=always --name=registrator \
-v /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest -ip yourip  consul://yourip:8500

其中ip地址为该服务器ip地址,主动申明的目的在于防止registrator自动将127.0.0.1本地回环作为对外暴露的ip地址注册到consul上。

nsq启动命令

nsqlookupd: docker run -d --restart=always --name lookupd \ -p 4160:4160 \ -p 4161:4161 \ nsqio/nsq /nsqlookupd nsqd: docker run -d --restart=always --name nsqd \ -p 4150:4150 \ -p 4151:4151 \ nsqio/nsq /nsqd --broadcast-address=yourip --lookupd-tcp-address=yourip:4160 nsqadmin: docker run -d --restart=always --name nsqadmin \ -p 4171:4171 \ nsqio/nsq /nsqadmin --lookupd-http-address=yourip:4161

Leave a Reply

Your email address will not be published. Required fields are marked *