美文网首页
Consul服务发现安装(单机)

Consul服务发现安装(单机)

作者: 一根线条 | 来源:发表于2020-02-19 15:55 被阅读0次

    三种安装方式

    1、使用编译好的二进制文件进行安装
    2、使用源码进行安装
    3,在Kubernetes环境中安装

    二进制方式安装

    安装参考地址

    1,下载并安装

    下载地址:consul_1.7.0_linux_amd64.zip

    下载consul二进制格式的压缩包,解压后里面只有一个名为consul的二进制可执行文件,只需该文件的查找路径在系统的PATH中即可。

    方法1:拷贝该文件,直接放入 /usr/local/bin/ 路径下

    unzip consul_${CONSUL_VERSION}_linux_amd64.zip
    sudo chown root:root consul
    sudo mv consul /usr/local/bin/
    consul --version
    

    方法2:修改环境变量配置文件

    例如在~/.bashrc 、vim /etc/profile中添加consul的访问路径,首先可以通通过以下指令查看当前的PATH环境变量的配置项

    $ echo $PATH
    

    以编辑“~/.bashrc”文件为例

    export PATH=/path/to/consul:$PATH
    

    执行以下命令使配置生效

    source ~/.bashrc
    

    2,验证安装

    重新打开一个命令行窗口,输入以下指令

    consul
    

    如果安装正常,则会输出以下的内容

    usage: consul [--version] [--help] <command> [<args>]
    
    Available commands are:
        agent          Runs a Consul agent
        event          Fire a new event
    

    3,运行Consul Agent

    安装Consul后,需要启动Consul代理。本次将在开发模式下运行Consul,这种模式不安全,也不可扩展,但可以让您轻松体验Consul的大部分功能,而无需额外配置。

    执行以下命令完成Agent的启动

    consul agent -dev
    

    警告:永远不要在生产中运行Consul的-dev模式。这个模式会快速启动一个单节点的Consul且不能数据持久化。

    查看Consul成员信息

    consul members
    

    4,停止Consul Agent

    使用以下指令关闭Consul Agent

    consul leave
    

    附:常用的几个简单指令

    命令 说明
    consul agent -dev 以开发模式运行Consul
    consul members 检查Consul数据中心的成员
    consul leave 关闭Consul代理

    更多的命令请参考官网
    agent参数说明

    5,使用服务注册

    Consul服务搭建好之后通过提供服务定义HTTP API注册一个服务。

    1)通过配置文件

    问价的后缀必须为“.json”或".hcl"才能被Consul所加载

    方法1:通过“-config-file”参数制定服务配置

    方法2:将服务配置文件放置到“-config-dir”目录下

    consul agent -dev -config-dir /etc/consul.d
    

    其中“/etc/consul.d”为自己创建的文件夹


    一个Server的完整配置格式如下:

    {
      "service": {
        "id": "redis",
        "name": "redis",
        "tags": ["primary"],
        "address": "",
        "meta": {
          "meta": "for my service"
        },
        "tagged_addresses": {
          "lan": {
            "address": "192.168.0.55",
            "port": 8000,
          },
          "wan": {
            "address": "198.18.0.23",
            "port": 80
          }
        },
        "port": 8000,
        "enable_tag_override": false,
        "checks": [
          {
            "args": ["/usr/local/bin/check_redis.py"],
            "interval": "10s"
          }
        ],
        "kind": "connect-proxy",
        "proxy_destination": "redis", // Deprecated
        "proxy": {
          "destination_service_name": "redis",
          "destination_service_id": "redis1",
          "local_service_address": "127.0.0.1",
          "local_service_port": 9090,
          "config": {},
          "upstreams": [],
          "mesh_gateway": {
            "mode": "local"
          },
          "expose": {
            "checks": true,
            "paths": [
              {
                "path": "/healthz",
                "local_path_port": 8080,
                "listener_port": 21500,
                "protocol": "http2"
              }
           ]
          }
        },
        "connect": {
          "native": false,
          "sidecar_service": {}
          "proxy": {  // Deprecated
            "command": [],
            "config": {}
          }
        },
        "weights": {
          "passing": 5,
          "warning": 1
        },
        "token": "233b604b-b92e-48c8-a253-5f11514e4b50",
        "namespace": "foo"
      }
    }
    

    服务定义必须包含名称(name ),并且可以选择提供id、标记(tags)、地址(address)、元(meta)、端口(port)、启用标记覆盖(enable_tag_override)和检查(check)。如果未提供,则将id设置为名称。所有服务都要求每个节点有一个唯一的ID,因此如果名称可能冲突,那么应该提供唯一的ID。

    可以使用“services”在配置文件中同时提供多个服务定义

    {
      "services": [
        {
          "id": "red0",
          "name": "redis",
          "tags": [
            "primary"
          ],
          "address": "",
          "port": 6000,
          "checks": [
            {
              "args": ["/bin/check_redis", "-p", "6000"],
              "interval": "5s",
              "timeout": "20s"
            }
          ]
        },
        {
          "id": "red1",
          "name": "redis",
          "tags": [
            "delayed",
            "secondary"
          ],
          "address": "",
          "port": 7000,
          "checks": [
            {
              "args": ["/bin/check_redis", "-p", "7000"],
              "interval": "30s",
              "timeout": "60s"
            }
          ]
        },
        ...
      ]
    }
    

    HCL格式为

    services {
      id = "red0"
      name = "redis"
      tags = [
        "primary"
      ]
      address = ""
      port = 6000
      checks = [
        {
          args = ["/bin/check_redis", "-p", "6000"]
          interval = "5s"
          timeout = "20s"
        }
      ]
    }
    services {
      id = "red1"
      name = "redis"
      tags = [
        "delayed",
        "secondary"
      ]
      address = ""
      port = 7000
      checks = [
        {
          args = ["/bin/check_redis", "-p", "7000"]
          interval = "30s"
          timeout = "60s"
        }
      ]
    }
    

    2)通过HTTP API动态注册服务

    参考地址

    6,启动管理界面

    这是最简单快速的启动方式,在启动consul时直接启动webui界面,跟上-ui参数参考以下示例,端口默认为8500,访问方式:8500/ui

    [root@hp161 consul]# consul agent -dev -ui -client=0.0.0.0
    ==> Starting Consul agent...
               Version: 'v1.7.0'
               Node ID: '33935b63-f499-3c3d-3856-fbb47851bbab'
             Node name: 'hp161'
            Datacenter: 'dc1' (Segment: '<all>')
                Server: true (Bootstrap: false)
           Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
          Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
               Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
    
    Consul UI

    相关文章

      网友评论

          本文标题:Consul服务发现安装(单机)

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