单机使用Docker host网络安装consul和registrator

本文介绍了如何使用Consul作为强一致性数据存储,并利用Registrator自动注册和注销Docker容器中的服务。通过示例展示了单机运行Consul、配置Registrator及验证其有效性。

参考文章:http://gliderlabs.com/registrator/latest/user/quickstart/

Consul是强一致性的数据存储,使用gossip形成动态集群。它提供分级键/值存储方式,不仅可以存储数据,而且可以用于注册器件事各种任务,从发送数据改变通知到运行健康检查和自定义命令,具体如何取决于它们的输出

Registrator通过检查容器在线或者停止运行状态自动注册和去注册服务,它目前支持etcd、Consul和SkyDNS 2

单机运行 consul服务


# docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4  gliderlabs/consul-server:0.6 -bootstrap -advertise 192.168.10.138

通过http API 查看consul服务
# curl  192.168.10.138 : 8500 /v1/catalog/services 

{ "consul" :[] }

运行 Registrator


# docker run -d  - -name=registrator   - -net=host   - -volume=/var/run/docker.sock:/tmp/docker.sock    gliderlabs/registrator:latest  consul://192.168.10.138:8500

Running Redis


# docker  run  - d  -P --name=redis redis

测试Registrator配置是否有效


# curl  192.168.10.138:8500/v1/catalog/services 

{ "consul" :[] , "redis" :[] }

# curl 192.168.10.138:8500/v1/catalog/service/redis

[{"Node":"23dcba46458b","Address":"192.168.10.138","ServiceID":"localhost.localdomain:redis:6379","ServiceName":"redis","ServiceTags":[],"ServiceAddress":"","ServicePort":32772,"ServiceEnableTagOverride":false,"CreateIndex":25,"ModifyIndex":25}]


docker rm -f redis redis 
curl  192.168.10.138 : 8500 /v1/catalog/service/redis 
[]

### DockerConsul的集成关系 Docker 是一种轻量级虚拟化技术,用于创建管理容器环境;而 Consul 则是一个分布式服务发现服务网格工具,能够提供健康检查、键值存储以及多数据中心网络等功能。两者的结合可以实现动态的服务注册与发现机制。 #### 安装 Registrator 并将其连接至 Consul 为了使 Docker 容器能够在启动时自动向 Consul 注册其服务信息,在停止时又能自动注销这些信息,通常会使用 Gliderlabs 的 Registrator 工具[^1]。以下是具体操作: ```bash docker run -d \ --name=registrator \ --net=host \ -v /var/run/docker.sock:/tmp/docker.sock \ --restart=always \ gliderlabs/registrator:latest \ -ip=192.168.153.60 \ consul://192.168.153.40:8500 ``` 上述命令中的 `-ip` 参数指定了宿主机 IP 地址,该地址会被用来对外暴露容器端口。`consul://192.168.153.40:8500` 表明了 Consul 服务器的位置及其监听端口号。 #### 验证服务轮询功能 当多个实例部署在同一组负载均衡器后面时,可以通过访问不同路径来验证请求是否被均匀分配给各个节点。例如通过浏览器或者 curl 命令多次调用 `http://<load_balancer_ip>:<port>/` 来观察返回结果的变化情况[^2]。 对于单独查看某个特定容器的日志输出,则可以直接利用如下指令完成: ```bash docker logs -f test-01 docker logs -f test-02 docker logs -f test-03 ``` 这里假设我们有三个分别命名为test-01,test-02,test-03的应用程序正在运行当中,并且它们都已成功加入到了由Consul维护的服务列表里去。 #### 创建并发布HTTP服务示例 下面给出了一条简单的命令行脚本片段,它展示了怎样快速搭建起一个基于Apache Web Server镜像的小型站点项目。 ```bash docker run -itd -p 82:80 --name test-2 -h test2 httpd ``` 这条语句将会以后台模式开启一个新的进程,同时映射本地机器上的82号TCP通道到新产生的名为'test-2'的新建web server内部默认开放出来的80端口中[^3]。 #### 初始化设置Consul客户端软件包 最后一步就是准备好必要的依赖项文件夹结构之后再解压官方二进制分发版得到最终可执行档名叫做‘consul’的东西放到全局搜索路径下即可立即生效启用版本查询命令确认安装无误结束整个流程描述环节[^4]: ```bash mkdir /opt/consul && cd $_ unzip consul_0.9.2_linux_amd64.zip mv consul /usr/local/bin/ consul version ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值