consul服务发现与注册于配置 (mac版为例)

原创 2018年01月18日 14:52:24

consul 介绍

Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较 为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

consul 目录或文件说明

/tmp/consul: 数据存储
/Users/fox/bin/:程序安装目录
fox : mac系统用户的用户名

consul 安装

打开 https://www.consul.io/intro/getting-started/install.html ,在 Install Consul 下面有 binary package ,点击 这个 binary package (它是个超链接 https://www.consul.io/downloads.html),选择你要下载的版本
创建目录

mkdir -p /Users/fox/bin/

打开这个目录 /Users/fox/bin/,然后下载consul
解压缩后 只有一个 单文件 consul
执行脚本

./consul

输出

Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    agent          Runs a Consul agent
    catalog        Interact with the catalog
    event          Fire a new event
    exec           Executes a command on Consul nodes
    force-leave    Forces a member of the cluster to enter the "left" state
    info           Provides debugging information for operators.
    join           Tell Consul agent to join cluster
    keygen         Generates a new encryption key
    keyring        Manages gossip layer encryption keys
    kv             Interact with the key-value store
    leave          Gracefully leaves the Consul cluster and shuts down
    lock           Execute a command holding a lock
    maint          Controls node or service maintenance mode
    members        Lists the members of a Consul cluster
    monitor        Stream logs from a Consul agent
    operator       Provides cluster-level tools for Consul operators
    reload         Triggers the agent to reload configuration files
    rtt            Estimates network round trip time between nodes
    snapshot       Saves, restores and inspects snapshots of Consul server state
    validate       Validate config files/directories
    version        Prints the Consul version
    watch          Watch for changes in Consul

设置环境配置

sudo vim /etc/paths.d/user_fox

内容输入如下

/Users/fox/bin

应用生效

source /etc/profile

测试,在任何目录中,输入

consul

输出

Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    agent          Runs a Consul agent
    catalog        Interact with the catalog
    event          Fire a new event
    exec           Executes a command on Consul nodes
    force-leave    Forces a member of the cluster to enter the "left" state
    info           Provides debugging information for operators.
    join           Tell Consul agent to join cluster
    keygen         Generates a new encryption key
    keyring        Manages gossip layer encryption keys
    kv             Interact with the key-value store
    leave          Gracefully leaves the Consul cluster and shuts down
    lock           Execute a command holding a lock
    maint          Controls node or service maintenance mode
    members        Lists the members of a Consul cluster
    monitor        Stream logs from a Consul agent
    operator       Provides cluster-level tools for Consul operators
    reload         Triggers the agent to reload configuration files
    rtt            Estimates network round trip time between nodes
    snapshot       Saves, restores and inspects snapshots of Consul server state
    validate       Validate config files/directories
    version        Prints the Consul version
    watch          Watch for changes in Consul

consul 参数说明

-dev 开发者模式 该节点的启动不能用于生产环境,因为该模式下不会持久化任何状态
该启动模式仅仅是为了快速便捷的启动单节点consul
该节点处于server模式
该节点是leader
该节点是一个健康节点
-ui 启动自有主机的界面
-bootstrap-expect 1 集群节点,表示等待多少个节点再启动,这里是1个,一个就启动
-bind=127.0.0.1 绑定IP ,本机IP地址,内网IP
-advertise-wan=10.23.123.12 绑定外网ip
-node=node1 节点名称,如果没有,默认是主机名
-server 设置为服务端
-data-dir /tmp/consul 数据存储目录为 /tmp/consul
-datacenter=dc1 数据中心
更多请看
https://www.consul.io/docs/agent/options.html

consul agent server client

agent可以运行在server或者client模式

consul agent server 服务端

consul agent server 服务端启动

consul agent -dev -server -bootstrap-expect 1 -data-dir /tmp/consul -node=node1

停止

Ctrl+C  #按键

如果你按错了那么使用强制停止

ps -ef |grep consul

输出

  501   831   813   0  1:12下午 ttys001    0:02.37 consul agent -dev -config-dir /Users/fox/bin/consul.d/
  501   890   813   0  1:16下午 ttys001    0:00.00 grep consul

第一行就是要停止的进程

kill -9 831

查看成员

consul members

服务操作

创建一个 服务

新建目录

mkdir -p /Users/fox/bin/consul.d

创建web服务和service2服务

echo '{"service": {"name": "web", "tags": ["rails"], "port": 801}}' >/Users/fox/bin/consul.d/web.json

echo '{"service": {"name": "service2", "tags": ["rails"], "port": 802}}' >/Users/fox/bin/consul.d/service2.json

启动代理(你要先关闭之前开启的那个代理哦)

consul agent -dev -config-dir /Users/fox/bin/consul.d/

查询服务

DNS 查询

服务的DNS名称是 NAME.service.consul
service2:服务名称
web:服务名称

dig @127.0.0.1 -p 8600 service2.service.consul

输出

; <<>> DiG 9.9.7-P3 <<>> @127.0.0.1 -p 8600 service2.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56742
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;service2.service.consul.   IN  A

;; ANSWER SECTION:
service2.service.consul. 0  IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Thu Jan 18 13:29:46 CST 2018
;; MSG SIZE  rcvd: 68

HTTP API 查询

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

输出

[
    {
        "ID": "e3e23dc4-f3c7-24bb-e35a-53ae6bcae58a",
        "Node": "fox",
        "Address": "127.0.0.1",
        "Datacenter": "dc1",
        "TaggedAddresses": {
            "lan": "127.0.0.1",
            "wan": "127.0.0.1"
        },
        "NodeMeta": {
            "consul-network-segment": ""
        },
        "ServiceID": "service2",
        "ServiceName": "service2",
        "ServiceTags": [
            "rails"
        ],
        "ServiceAddress": "",
        "ServicePort": 802,
        "ServiceEnableTagOverride": false,
        "CreateIndex": 6,
        "ModifyIndex": 6
    }
]

查询健康

 curl 'http://localhost:8500/v1/health/service/service2?passing'

输出

[
    {
        "Node": {
            "ID": "e3e23dc4-f3c7-24bb-e35a-53ae6bcae58a",
            "Node": "fox",
            "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": "service2",
            "Service": "service2",
            "Tags": [
                "rails"
            ],
            "Address": "",
            "Port": 802,
            "EnableTagOverride": false,
            "CreateIndex": 6,
            "ModifyIndex": 6
        },
        "Checks": [
            {
                "Node": "fox",
                "CheckID": "serfHealth",
                "Name": "Serf Health Status",
                "Status": "passing",
                "Notes": "",
                "Output": "Agent alive and reachable",
                "ServiceID": "",
                "ServiceName": "",
                "ServiceTags": [],
                "Definition": {},
                "CreateIndex": 5,
                "ModifyIndex": 5
            }
        ]
    }
]

Consul Web界面

加入 -ui 参数, 启动自有主机的界面
启动代理(你要先关闭之前开启的那个代理哦)

consul agent -dev -ui -config-dir /Users/fox/bin/consul.d/

等待一会,浏览器中输入如下,就可以看到UI界面了

http://localhost:8500/ui

Consul 集群 docker版

请打开网址查看
http://blog.csdn.net/fenglailea/article/details/79098246

Consul 集群

稍后添加

A&Q

Error starting agent: Failed to start Consul server: Failed to start RPC layer: listen tcp 127.0.0.1:8300: bind: address already in use

原因:你已经启动一个了,要么关闭它,要么继续使用已经启动过得
用这个命令查看

ps -ef |grep consul

https://segmentfault.com/a/1190000005005227
https://www.jianshu.com/p/28c6bd590ca0
http://tonybai.com/2015/07/06/implement-distributed-services-registery-and-discovery-by-consul/
https://www.cnblogs.com/newP/p/6349316.html

版权声明:原创文章欢迎转载,不过要记得加出处哦 https://blog.csdn.net/wljk506/article/details/79093848

微服务注册发现集群搭建——Registrator + Consul + Consul-template + nginx

在互联网应用领域,服务的动态性需求十分常见,这就对服务的自动发现和可动态扩展提出了很高的要求。 微服务系统动辄上万个服务,而且还要动态伸缩。以人工写好的IP、Port 硬编码脚本的方式无法做到大...
  • jek123456
  • jek123456
  • 2017-09-25 11:48:50
  • 2006

consul的跨局域网服务发现

1、背景知识 1.1、Consul 是什么     Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Moz...
  • qq_26819733
  • qq_26819733
  • 2017-09-03 17:24:07
  • 1019

consul(第一篇)consul 入门

consul 入门consul是什么consul包含多个组件,从整体上看可以理解为一个服务发现、配置的工具,包含一下几个特点: 服务发现(Service Discovery):客户端通过consul提...
  • liaokailin
  • liaokailin
  • 2016-06-01 21:31:37
  • 11006

服务发现系统consul

1. 什么是consul? 是一个服务管理软件。 支持多数据中心下,分布式高可用的,服务发现和配置共享。 consul支持健康检查,允许存储键值对。 一致性协议采用 Raft ...
  • early__xz
  • early__xz
  • 2016-03-25 11:12:54
  • 3890

Consul 简介、安装、常用命令的使用

1 Consul简介Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现...
  • u010046908
  • u010046908
  • 2017-03-13 13:43:42
  • 7020

微服务注册与发现

微服务注册与发现 转自:http://www.cnblogs.com/Leo_wl/p/5576217.html 1.什么是服务注册与发现    微服务将传统的"巨石"应用拆...
  • yueguanyun
  • yueguanyun
  • 2017-08-14 22:11:45
  • 536

使用consul实现服务的注册和发现

服务注册 - 服务进程在注册中心注册自己的位置。它通常注册自己的主机和端口号,有时还有身份验证信息,协议,版本号,以及运行环境的详细资料。 服务发现 - 客户端应用进程向注册中心发起查询,来获取服务的...
  • mn960mn
  • mn960mn
  • 2016-06-27 16:05:22
  • 5383

Consul 服务注册与服务发现

1. 服务注册 对 Consul 进行服务注册之前,需要先部署一个服务站点,我们可以使用 ASP.NET Core 创建 Web 应用程序,并且部署到 Ubuntu 服务器上。 ASP.N...
  • JdoOudDm7i
  • JdoOudDm7i
  • 2017-03-13 17:04:03
  • 692

简单RPC框架-基于Consul的服务注册与发现

一般我们常见的RPC框架都包含如下三个部分: 注册中心,用于服务端注册远程服务以及客户端发现服务服务端,对外提供后台服务,将自己的服务信息注册到注册中心客户端,从注册中心获取远程服务的注...
  • p77ll9l53x
  • p77ll9l53x
  • 2017-05-23 09:53:33
  • 749

consul三节点的集群搭建

https://www.consul.io/                           下载安装 consul_0.6.4_darwin_amd64.zip 和 consul_0.6.4_w...
  • wk3368
  • wk3368
  • 2016-08-15 17:15:16
  • 3396
收藏助手
不良信息举报
您举报文章:consul服务发现与注册于配置 (mac版为例)
举报原因:
原因补充:

(最多只允许输入30个字)