博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Consul 入门
阅读量:4306 次
发布时间:2019-06-06

本文共 6157 字,大约阅读时间需要 20 分钟。

1. 什么是Consul?

Consul 有很多组件,对于整体来说,它是一个服务发现和服务配置的工具,它提供了一下特性:

  • 服务发现
  • 健康检查
  • KV存储
  • 多数据中心

2.安装Consul

以下是在 CentOS 系统上操作

下载

wget https://releases.hashicorp.com/consul/1.1.0/consul_1.1.0_linux_amd64.zip

查看版本

consul -vConsul v1.1.0Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

3.启动 Agent

使用dev模式启动。

$ consul agent -dev==> Starting Consul agent...==> Consul agent running!           Version: 'v1.1.0'           Node ID: 'a94cdf4f-e36d-9bef-927c-61c1d14500cd'         Node name: 'bogon'        Datacenter: 'dc1' (Segment: '
') Server: true (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, DNS: 8600) Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false==> Log data will now stream in as it occurs: 2018/06/23 00:03:45 [DEBUG] agent: Using random ID "a94cdf4f-e36d-9bef-927c-61c1d14500cd" as node ID 2018/06/23 00:03:45 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:a94cdf4f-e36d-9bef-927c-61c1d14500cd Address:127.0.0.1:8300}] 2018/06/23 00:03:45 [INFO] serf: EventMemberJoin: bogon.dc1 127.0.0.1 2018/06/23 00:03:45 [INFO] serf: EventMemberJoin: bogon 127.0.0.1 2018/06/23 00:03:45 [INFO] agent: Started DNS server 127.0.0.1:8600 (udp) 2018/06/23 00:03:45 [INFO] raft: Node at 127.0.0.1:8300 [Follower] entering Follower state (Leader: "") 2018/06/23 00:03:45 [INFO] consul: Adding LAN server bogon (Addr: tcp/127.0.0.1:8300) (DC: dc1) 2018/06/23 00:03:45 [INFO] consul: Handled member-join event for server "bogon.dc1" in area "wan" 2018/06/23 00:03:45 [INFO] agent: Started DNS server 127.0.0.1:8600 (tcp) 2018/06/23 00:03:45 [INFO] agent: Started HTTP server on 127.0.0.1:8500 (tcp) 2018/06/23 00:03:45 [INFO] agent: started state syncer 2018/06/23 00:03:45 [WARN] raft: Heartbeat timeout from "" reached, starting election 2018/06/23 00:03:45 [INFO] raft: Node at 127.0.0.1:8300 [Candidate] entering Candidate state in term 2 2018/06/23 00:03:45 [DEBUG] raft: Votes needed: 1 2018/06/23 00:03:45 [DEBUG] raft: Vote granted from a94cdf4f-e36d-9bef-927c-61c1d14500cd in term 2. Tally: 1 2018/06/23 00:03:45 [INFO] raft: Election won. Tally: 1 2018/06/23 00:03:45 [INFO] raft: Node at 127.0.0.1:8300 [Leader] entering Leader state 2018/06/23 00:03:45 [INFO] consul: cluster leadership acquired 2018/06/23 00:03:45 [DEBUG] consul: Skipping self join check for "bogon" since the cluster is too small 2018/06/23 00:03:45 [INFO] consul: member 'bogon' joined, marking health alive 2018/06/23 00:03:45 [INFO] consul: New leader elected: bogon 2018/06/23 00:03:45 [DEBUG] agent: Skipping remote check "serfHealth" since it is managed automatically 2018/06/23 00:03:45 [INFO] agent: Synced node info 2018/06/23 00:03:46 [DEBUG] agent: Skipping remote check "serfHealth" since it is managed automatically 2018/06/23 00:03:46 [DEBUG] agent: Node info in sync 2018/06/23 00:03:46 [DEBUG] agent: Node info in sync

 4. 查看集群成员

在另外一个终端使用 consul members, 可以查看集群成员信息。

$ consul membersNode   Address         Status  Type    Build  Protocol  DC   Segmentbogon  127.0.0.1:8301  alive   server  1.1.0  2         dc1  

也可以通过HTTP API 来查看Consul成员信息

$ curl localhost:8500/v1/catalog/nodes[    {        "ID": "a94cdf4f-e36d-9bef-927c-61c1d14500cd",        "Node": "bogon",        "Address": "127.0.0.1",        "Datacenter": "dc1",        "TaggedAddresses": {            "lan": "127.0.0.1",            "wan": "127.0.0.1"        },        "Meta": {            "consul-network-segment": ""        },        "CreateIndex": 5,        "ModifyIndex": 6    }]

5.服务注册

定义一个服务步骤

$ sudo mkdir /etc/consul.d

定义一个服务名为web, 运行端口为80

$ echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' \    | sudo tee /etc/consul.d/web.json

重启agent,并制定配置目录

$ consul agent -dev -config-dir=/etc/consul.d==> Starting Consul agent......    [INFO] agent: Synced service 'web'...

下面通过HTTP API的方式来查询服务

$ curl http://localhost:8500/v1/catalog/service/web[    {        "ID": "68530a9c-2434-9a80-32ac-e4e455086655",        "Node": "bogon",        "Address": "127.0.0.1",        "Datacenter": "dc1",        "TaggedAddresses": {            "lan": "127.0.0.1",            "wan": "127.0.0.1"        },        "NodeMeta": {            "consul-network-segment": ""        },        "ServiceID": "web",        "ServiceName": "web",        "ServiceTags": [            "rails"        ],        "ServiceAddress": "",        "ServiceMeta": {},        "ServicePort": 80,        "ServiceEnableTagOverride": false,        "CreateIndex": 6,        "ModifyIndex": 6    }]

同时也可以通过下面的HTTP API 来查询服务的健康状况

$ curl 'http://localhost:8500/v1/health/service/web?passing'[    {        "Node": {            "ID": "68530a9c-2434-9a80-32ac-e4e455086655",            "Node": "bogon",            "Address": "127.0.0.1",            "Datacenter": "dc1",            "TaggedAddresses": {                "lan": "127.0.0.1",                "wan": "127.0.0.1"            },            "Meta": {                "consul-network-segment": ""            },            "CreateIndex": 5,            "ModifyIndex": 6        },        "Service": {            "ID": "web",            "Service": "web",            "Tags": [                "rails"            ],            "Address": "",            "Meta": null,            "Port": 80,            "EnableTagOverride": false,            "CreateIndex": 6,            "ModifyIndex": 6        },        "Checks": [            {                "Node": "bogon",                "CheckID": "serfHealth",                "Name": "Serf Health Status",                "Status": "passing",                "Notes": "",                "Output": "Agent alive and reachable",                "ServiceID": "",                "ServiceName": "",                "ServiceTags": [],                "Definition": {},                "CreateIndex": 5,                "ModifyIndex": 5            }        ]    }]

更新服务

可以通过修改配置文件和发送SIGHUP 到agent, 更新服务的信息。

另外,也可以通过HTTP API 的方式动态添加或者移除服务信息。

转载于:https://www.cnblogs.com/lzeffort/p/9219813.html

你可能感兴趣的文章
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>
JPA多条件动态查询
查看>>
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>
vue+springboot打包发布
查看>>
XSL 开发总结
查看>>
beta阶段第六次scrum meeting
查看>>
SpringBoot+MybatisPlus实现批量添加的两种方式
查看>>
vue 设计结构
查看>>
Sqlerver2005+按照ID分组取前几条
查看>>
Python的编码和解码
查看>>
docker
查看>>
停车场系统安全岛设计施工要求
查看>>
Docker实战
查看>>
asp.net core结合Gitlab-CI实现自动化部署
查看>>