Consul 快速入门
Consul是什么
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
安装Consul
这里提供两台Centos:consul1,consul2
安装方式:
[root@consul2 ~]# wget https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip [root@consul2 ~]# unzip consul_1.2.2_linux_amd64.zip [root@consul2 ~]# ./consul Usage: consul [--version] [--help] <command> [<args>] # consul1 同上
运行Agent
安装Consul后必须运行Agent,可以选择服务器或客户端模式。每个数据中心至少有一个服务器(推荐3~5个服务器集群)。
简单起见,先启动一个Agent的开发模式:
# Agent的开发模式 [root@consul2 ~]# ./consul agent -dev ==> Starting Consul agent... ==> Consul agent running! # 查看集群成员 [root@consul2 ~]# ./consul members Node Address Status Type Build Protocol DC Segment consul2 127.0.0.1:8301 alive server 1.2.2 2 dc1 <all> # 使用 HTTP API 查看 [root@consul2 ~]# curl localhost:8500/v1/catalog/nodes [ { "ID": "796b14fe-1332-4aa0-d96f-8f287a4ccc7e", "Node": "consul2", "Address": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "Meta": { "consul-network-segment": "" }, "CreateIndex": 9, "ModifyIndex": 10 } ] # 还可以使用 DNS 接口来查询节点(默认端口:8600) [root@consul2 ~]# yum install bind-utils [root@consul2 ~]# dig @127.0.0.1 -p 8600 consul2.node.consul ... ;; QUESTION SECTION: ;consul2.node.consul. IN A ;; ANSWER SECTION: consul2.node.consul. 0 IN A 127.0.0.1 ...
注册服务
1、定义一个服务
[root@consul2 ~]# mkdir /etc/consul.d [root@consul2 ~]# echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json [root@consul2 ~]# ./consul agent -dev -config-dir=/etc/consul.d
2、查询一个服务
# 使用 DNS API [root@consul2 ~]# dig @127.0.0.1 -p 8600 web.service.consul ... ;; QUESTION SECTION: ;web.service.consul. IN A ;; ANSWER SECTION: web.service.consul. 0 IN A 127.0.0.1 # 使用 DNS API 查找 SRV 记录 [root@consul2 ~]# dig @127.0.0.1 -p 8600 web.service.consul SRV ... ;; QUESTION SECTION: ;web.service.consul. IN SRV ;; ANSWER SECTION: web.service.consul. 0 IN SRV 1 1 80 consul2.node.dc1.consul. ;; ADDITIONAL SECTION: consul2.node.dc1.consul. 0 IN A 127.0.0.1 ... # 使用 HTTP API 查询 [root@consul2 ~]# curl http://localhost:8500/v1/catalog/service/web # 健康检查 [root@consul2 ~]# curl 'http://localhost:8500/v1/health/service/web?passing'
Consul集群
1、创建node1,consul server
[root@consul1 ~]# ./consul agent -server -bootstrap-expect=1 \ -data-dir=/tmp/consul \ -node=agent-one -bind=192.168.56.112 \ -enable-script-checks=true -config-dir=/etc/consul.d \ -client 0.0.0.0 -ui # -node:节点的名称 # -bind:绑定的一个地址,用于节点之间通信的地址,可以是内外网,必须是可以访问到的地址 # -server:这个就是表示这个节点是个SERVER # -bootstrap-expect:这个就是表示期望提供的SERVER节点数目,数目一达到,它就会被激活,然后就是LEADER了 # -dc:指明数据中心的名字 # -client 0.0.0.0 -ui:启动UI(为了方便后续的UI访问)
2、创建node2,consul client
[root@consul2 ~]# ./consul agent -data-dir=/tmp/consul \
-node=agent-two \
-bind=192.168.56.113 -enable-script-checks=true \
-config-dir=/etc/consul.d \
-ui
3、加入集群
[root@consul2 ~]# ./consul join 192.168.56.112 Successfully joined cluster by contacting 1 nodes. [root@consul2 ~]# ./consul members Node Address Status Type Build Protocol DC Segment agent-one 192.168.1.13:8301 alive server 1.2.2 2 dc1 <all> agent-two 192.168.1.12:8301 alive client 1.2.2 2 dc1 <default>
4、查询节点
[root@consul2 ~]# dig @127.0.0.1 -p 8600 agent-two.node.consul ... ;; QUESTION SECTION: ;agent-two.node.consul. IN A ;; ANSWER SECTION: agent-two.node.consul. 0 IN A 192.168.1.12
KV数据
类似Redis,一般也就用来做服务配置。
简单了解下命令就好:
consul kv put redis/config/minconns 1 consul kv put redis/config/minconns 2 # 更新 consul kv get redis/config/minconns consul kv delete redis/config/minconns consul kv delete -recurse redis # 批量删除
WEB UI
访问下:http://192.168.56.112:8500/ui
栏目解析:就是上面操作生成的一些东西
1、services:放置服务
2、nodes:放置consul节点
3、key/value:放置一些配置信息
4、dc1:配置数据中心
posted on 2019-12-11 15:02 morgan363 阅读(1153) 评论(0) 编辑 收藏 举报