Consul [ˈkɑ:nsl] 是一个分布式的服务发现和配置管理工具,本文是根据consul 入门指南 整理的笔记。
1. 安装
系统是三台虚拟机:
- CentOS release 6.8
- CentOS release 7
- Ubuntu 16.04 LTS
前往 官网下载地址 下载相应系统最新的二进制包,复制consul_VERSION_linux_amd64.zip 到3个节点的 consul 目录下。
1 2 3 4 5 6 7 8 |
cd ~/consul unzip consul_VERSION_linux_amd64.zip // 解压得到 consul 二进制文件 // 将consul 软链到环境变量目录 sudo ln -s ~/consul/consul /bin/consul // 验证是否安装成功 consul -h |
在3台虚拟机中按相同步骤安装 consul
2. 开发模式
consul 开发者模式,可以快速开启单节点的 consul服务,具有完整功能,方便开发测试。
2.1 启动开发模式
开发模式命令:
1 2 |
consul agent -dev |
consul members
命令查看当前集群的节点情况
1 2 3 4 |
dev@ubuntu ~$ consul members Node Address Status Type Build Protocol DC ubuntu 127.0.0.1:8301 alive server 0.7.2 2 dc1 |
通过HTTP API 查看节点信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
dev@ubuntu ~$ curl localhost:8500/v1/catalog/nodes [ { "Node": "ubuntu", "Address": "127.0.0.1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "CreateIndex": 4, "ModifyIndex": 5 } ] |
2.2 服务注册
服务可以通过配置文件注册,也可以通过HTTP API 添加。这里以配置文件定义服务:
1 2 3 4 5 6 7 8 |
cd ~/consul // 创建etc 目录用于存放配置文件 mkdir etc // 创建web.json 配置文件 echo '{"service": {"name": "web", "tags": ["nginx"], "port": 80}}' | tee ~/consul/etc/web.json // 重启consul,并指定配置文件目录 consul agent -dev -config-dir=/home/dev/consul/etc |
如果需要定义多个服务,添加多个服务配置文件即可
2.3 服务发现
当定义服务并且重启consul 代理后,就可以通过HTTP API 查询服务信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
dev@ubuntu ~/consul$ curl http://localhost:8500/v1/catalog/service/web [ { "Node": "ubuntu", "Address": "127.0.0.1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "ServiceID": "web", "ServiceName": "web", "ServiceTags": [ "nginx" ], "ServiceAddress": "", "ServicePort": 80, "ServiceEnableTagOverride": false, "CreateIndex": 6, "ModifyIndex": 6 } ] |
3. Consul 集群
consul 是一个CS 模式的软件,生产环境下一个集群中建议准备3~5个节点运行服务模式的consul,其他节点运行客户端模式。
3.1 启动server 模式
1 2 3 |
#server 模式启动 consul agent -server -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -bind=192.168.1.114 -config-dir=/home/dev/consul/etc |
-server
以服务模式运行-node
节点名称-bind
指定监听地址,用于多网卡服务器-bootstrap-expect
额外的服务模式节点数量config-dir
配置文件目录
3.2 启动client 模式启动
1 2 3 |
# client 模式启动 consul agent -data-dir=/tmp/consul -node=agent-two -bind=192.168.1.115 -config-dir=/home/dev/consul/etc |
在集群中其他节点上以客户端模式运行consul,注意更改绑定IP 和节点名。
3.3 加入集群
客户端模式的consul 需要加入一个服务端节点,才能同步服务信息。
加入集群:
1 2 |
consul join 192.168.1.114 |
查看集群节点:
1 2 3 4 5 6 |
dev@ubuntu ~$ consul members Node Address Status Type Build Protocol DC agent_1 192.168.1.114:8301 alive server 0.7.2 2 dc1 agent_2 192.168.1.115:8301 alive client 0.7.2 2 dc1 agent_3 192.168.1.116:8301 alive client 0.7.2 2 dc1 |
客户端节点服务发现功能
1 2 |
curl http://localhost:8500/v1/catalog/service/web |
参考
有疑问加站长微信联系(非本文作者)