Consul 快速入门 - Kong最佳实践

Consul是什么

Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
安装Consul

这里提供两台Centos:local12,local13
安装方式:

[root@local13 ~]# wget https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip
[root@local13 ~]# unzip consul_1.2.2_linux_amd64.zip
[root@local13 ~]# ./consul
Usage: consul [–version] [–help] []

local12同上

运行Agent

安装Consul后必须运行Agent,可以选择服务器或客户端模式。每个数据中心至少有一个服务器(推荐3~5个服务器集群)。

简单起见,先启动一个Agent的开发模式:

Agent的开发模式

[root@local13 ~]# ./consul agent -dev
==> Starting Consul agent…
==> Consul agent running!

查看集群成员

[root@local13 ~]# ./consul members
Node Address Status Type Build Protocol DC Segment
local13 127.0.0.1:8301 alive server 1.2.2 2 dc1

使用 HTTP API 查看

[root@local13 ~]# curl localhost:8500/v1/catalog/nodes
[
{
“ID”: “796b14fe-1332-4aa0-d96f-8f287a4ccc7e”,
“Node”: “local13”,
“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@local13 ~]# yum install bind-utils
[root@local13 ~]# dig @127.0.0.1 -p 8600 local13.node.consul

;; QUESTION SECTION:
;local13.node.consul. IN A
;; ANSWER SECTION:
local13.node.consul. 0 IN A 127.0.0.1

注册服务

1、定义一个服务

[root@local13 ~]# mkdir /etc/consul.d
[root@local13 ~]# echo ‘{“service”: {“name”: “web”, “tags”: [“rails”], “port”: 80}}’ | sudo tee /etc/consul.d/web.json
[root@local13 ~]# ./consul agent -dev -config-dir=/etc/consul.d

2、查询一个服务

使用 DNS API

[root@local13 ~]# 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@local13 ~]# 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 local13.node.dc1.consul.
;; ADDITIONAL SECTION:
local13.node.dc1.consul. 0 IN A 127.0.0.1

使用 HTTP API 查询

[root@local13 ~]# curl http://localhost:8500/v1/catalog/service/web

健康检查

[root@local13 ~]# curl ‘http://localhost:8500/v1/health/service/web?passing’

Consul集群

1、创建node1,consul server

[root@local12 ~]# ./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@local13 ~]# ./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@local13 ~]# ./consul join 192.168.56.112
Successfully joined cluster by contacting 1 nodes.
[root@local13 ~]# ./consul members
Node Address Status Type Build Protocol DC Segment
agent-one 192.168.1.13:8301 alive server 1.2.2 2 dc1
agent-two 192.168.1.12:8301 alive client 1.2.2 2 dc1

4、查询节点

[root@local13 ~]# 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
WEB UI

栏目解析:就是上面操作生成的一些东西

1、services:放置服务
2、nodes:放置consul节点
3、key/value:放置一些配置信息
4、dc1:配置数据中心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值