Consul 入门笔记

作者: 好刚编程 | 来源:发表于2017-01-16 19:42 被阅读828次

    原文链接 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
    

    参考

    @刚刚小码农

    相关文章

      网友评论

      • sowork:console的开发模式和生产模式对比有什么区别?
      • 598e5c2da9d4:Consul如何删除一个服务呢?
        好刚编程:删除服务可以通过HTTP API 进行,具体可以参考这两篇文章

        https://www.consul.io/docs/agent/http/operator.html

        http://www.tuicool.com/articles/j2YVB3

      本文标题:Consul 入门笔记

      本文链接:https://www.haomeiwen.com/subject/etmpbttx.html