Consul 的安装与基本使用

2019-05-07  本文已影响0人  P_ursuit
  • 服务发现:Consul 的客户可以注册服务,例如 apimysql,并且其他客户可以使用Consul来发现给定服务的提供者。使用 DNS 或 HTTP,应用程序可以轻松找到它们所依赖的服务。
  • 运行状况检查:Consul 客户端可以提供任意数量的运行状况检查,这些检查与给定服务(“是 Web 服务器返回 200 OK”)或本地节点(“内存利用率低于 90%”)相关联。运营商可以使用此信息来监控群集运行状况,服务发现组件使用该信息将流量路由远离不健康的主机。
  • KV 商店:应用程序可以将 Consul 的分层键/值存储用于任何目的,包括动态配置,功能标记,协调,领导者选举等。简单的 HTTP API 使其易于使用。
  • 安全服务通信:Consul可以为服务生成和分发 TLS 证书,以建立相互的 TLS 连接。 意图 可用于定义允许哪些服务进行通信。可以使用可以实时更改的意图轻松管理服务分段,而不是使用复杂的网络拓扑和静态防火墙规则。
  • 多数据中心:Consul 支持多个数据中心。这意味着 Consul 的用户不必担心构建额外的抽象层以扩展到多个区域。

Consul 是一个分布式,高度可用的系统。本节将介绍基础知识,故意省略一些不必要的细节,以便您快速了解Consul的工作原理。有关更多详细信息,请参阅 深入的体系结构概述

1、安装

2、启动

consul agent -server -bind=192.168.xxx.134 -client=0.0.0.0 -bootstrap-expect=1 -data-dir=/usr/data/consul_data -node=server1

**-server ** 表示以服务端身份启动

**-bind ** 强制绑定到指定 IP

-client 指定客户端访问的 IP (consul 有丰富的 api 接口,这里的客户端指浏览器或调用方),0.0.0.0 表示不限制客户端 IP

-bootstrap-expect=3 表示 server 集群最低节点为 3,低于这个值将工作不正常(注:类似zookeeper一样,通常集群数为奇数,方便选举,consul采用的是raft算法)

-data-dir 表示指定数据的存放目录(该目录必须已存在)

-node 表示节点在 web ui 中显示的名称

启动成功后,不要关闭终端窗口,在浏览器之中访问:http://192.168.xxx.134:8500/ ,如若无误将会得到:

Consul Agent
nohup consul agent -server -bind=192.168.xxx.134 -client=0.0.0.0 -bootstrap-expect=1 -data-dir=/usr/data/consul_data -node=server1  > /dev/null 2>&1 &

3、启动 client 端

nohup consul agent -bind=192.168.xxx.134 -http-port=8500 -dns-port=8600 -client=0.0.0.0 -data-dir=/usr/data/consul_data/ -node=client1  > /dev/null 2>&1 &
nohup consul agent -bind=192.168.xxx.134 -http-port=7500 -dns-port=7600 -client=0.0.0.0 -data-dir=/usr/data/consul_data/ -node=client1  > /dev/null 2>&1 &

4、带 UI 启动

nohup consul agent -server -bind=192.168.xxx.134 -client=0.0.0.0 -bootstrap-expect=1 -data-dir=/usr/data/consul_data -node=server1 -ui > /dev/null 2>&1 &

5、搭建集群

搭建多个节点,在多个节点中启动 Consul ,通过 join 命令关联示例

例如: 将当前节点添加到 192.168.xxx.131 节点之中

consul join 192.168.xxx.131

成功后,会输出:Successfully joined cluster by contacting 1 node

查看集群:consul members

Node     Address               Status  Type    Build  Protocol  DC   Segment
server1  192.168.xxx.134:8301  alive   server  1.4.4  2         dc1  <all>
server2  192.168.xxx.131:8301  alive   server  1.4.4  2         dc1  <all>

6、服务注册/发现/注销

目前在 services 里,除了 consul 外,还没有其他服务,我们可以通过 service api 来进行注册,可以通过 postman、Insomnia 等 rest api工具或者 curl 命令,向 服务注册地址 进行注册,以 PUT 方式提交、Content-Type 为 application/json 格式,参数设置为以下 JSON 内容

{
     "ID": "elasticsearchID",
      "Service": "elasticsearch",
     "Name":"my-service-name",
      "Tags": [
                "mytags=1"
            ],
      "Meta": {
          "elasticsearch_version": "4.0"
      },
      "Port": 8080,
      "Address": "192.168.xxx.1",
      "EnableTagOverride": false,
      "Weights": {
          "Passing": 10,
          "Warning": 1
      }
}

往 192.168.xxx.131 这台机器的注册一个名为 my-service-name,ID 为 elasticsearchID的服务

具体 API 解释与更多使用参考 官网

7、开发者模式

​ 前面的几步操作在开发的过程中操作起来的步骤相对繁琐,因此 consul 也为开发人员推出了开发者模式(即 dev) 使用方式及其简单,输入如下命令即可:

consul agent -dev

开发模式,自带了 web ui,当然此种方式也默认 IP 为: 127.0.0.1 ,所以直接输入:http://127.0.0.1:8500 访问 UI 页面

8、在 Spring Cloud 中使用 Consul

​ 创建一个 Spring Cloud 工程「microcloud」,在该工程中使用 Consul

获取完整源码

上一篇 下一篇

猜你喜欢

热点阅读