Consul入门笔记

作者: ironxu 2017-01-29 10:13:21

Consul [ˈk?:nsl] 是一个分布式的服务发现和配置管理工具,本文是根据consul入门指南(https://www.consul.io/intro/getting-started/install.html)整理的笔记。


 


1.安装


系统是三台虚拟机:


CentOS release 6.8


CentOS release 7


Ubuntu 16.04 LTS


前往官网下载地址(https://www.consul.io/downloads.html)下载相应系统最新的二进制包,复制consul_VERSION_linux_amd64.zip 到3个节点的 consul 目录下。


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.启动开发模式


开发模式命令:


consul agent -dev


consul members 命令查看当前集群的节点情况


dev@ubuntu ~$ consul members


NodeAddress Status  TypeBuild  Protocol  DC


ubuntu  127.0.0.1:8301  alive   server  0.7.2  2 dc1


通过HTTP API 查看节点信息


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 添加。这里以配置文件定义服务:


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 查询服务信息。


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 模式


#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 模式启动


# 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 需要加入一个服务端节点,才能同步服务信息。


加入集群:


consul join 192.168.1.114


查看集群节点:


dev@ubuntu ~$ consul members


Node Address Status  TypeBuild  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


客户端节点服务发现功能


curl http://localhost:8500/v1/catalog/service/web


 


参考


Consul 官方入门指导(https://www.consul.io/intro/getting-started/install.html)


Consul HTTP API(https://www.consul.io/docs/agent/http.html)


 


本文永久更新地址:http://www.linuxdiyf.com/linux/28019.html

相关资讯