您的位置:首页 > 运维架构

Consul 入门笔记

2017-01-16 19:38 495 查看
原文链接 http://ironxu.com/?p=321



Consul [ˈkɑ:nsl] 是一个分布式的服务发现和配置管理工具,本文是根据consul 入门指南 整理的笔记。

1. 安装

系统是三台虚拟机:

CentOS release 6.8

CentOS release 7

Ubuntu 16.04 LTS

前往 官网下载地址 下载相应系统最新的二进制包,复制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
Node    Address         Status  Type    Build  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  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


客户端节点服务发现功能

curl http://localhost:8500/v1/catalog/service/web[/code] 

参考

Consul 官方入门指导

Consul HTTP API


@刚刚小码农
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  consul ops 服务发现