H__D  

Consul是什么

  Consul 是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语音开发

  Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。

  官网:https://www.consul.io/

  中文文档:https://www.springcloud.cc/spring-cloud-consul.html

  安装教程:https://learn.hashicorp.com/consul/getting-started/install.html

  配置文档:https://www.consul.io/docs/agent/options.html

Consul的几个概念

  

  图来自于consul官方文档

  我们只看数据中心1,可以看出consul的集群是由N个SERVER,加上M个CLIENT组成的。而不管是SERVER还是CLIENT,都是consul的一个节点,所有的服务都可以注册到这些节点上,正是通过这些节点实现服务注册信息的共享。除了这两个,还有一些小细节,一一简单介绍。

  CLIENT
  CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。

  SERVER
  SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。

  SERVER-LEADER
  中间那个SERVER下面有LEADER的字眼,表明这个SERVER是它们的老大,它和其它SERVER不一样的一点是,它需要负责同步注册的信息给其它的SERVER,同时也要负责各个节点的健康监测。
  其它信息其它信息包括它们之间的通信方式,还有一些协议信息,算法。它们是用于保证节点之间的数据同步,实时性要求等等一系列集群问题的解决。这些有兴趣的自己看看官方文档(https://www.consul.io/docs/internals/index.html)。

安装Consul

  环境:CentOS 7.4

  1、下载二进制包

    命令:wget https://releases.hashicorp.com/consul/1.7.2/consul_1.7.2_linux_amd64.zip

  2、解压得到一个可执行文件

    命令:unzip consul_1.7.2_linux_amd64.zip -d /data/soft/consul_1.7.2

  3、配置环境变量,编辑/etc/profile 文件,内容如下:

    编辑命令:vim /etc/profile 

1 export CONSUL_HOME=/data/soft/consul_1.7.2
2 export PATH=$CONSUL_HOME:$PATH

    使用环境变量配置生效

    命令:source /etc/profile 

  4、验证 Consul 安装是否成功

    命令:consul -v

    

运行Agent 

  安装Consul后必须运行Agent,可以选择服务器或客户端模式。每个数据中心至少有一个服务器(推荐3~5个服务器集群)。

  简单起见,先启动一个Agent的开发模式:

  前台启动命令:consul agent -dev

  后台启动命令:nohup consul agent -dev  > /dev/null 2>&1 &

 

 1 # Agent的开发模式
 2 [root@H__D consul_1.7.2]# consul agent -dev
 3 ==> Starting Consul agent...
 4 
 5 # 查看集群成员
 6 [root@H__D consul_1.7.2]# consul members
 7 Node  Address         Status  Type    Build  Protocol  DC   Segment
 8 H__D  127.0.0.1:8301  alive   server  1.7.2  2         dc1  <all>
 9 
10 # 使用 HTTP API 查看
11 [root@H__D consul_1.7.2]# curl localhost:8500/v1/catalog/nodes
12 [
13     {
14         "ID": "864e18ee-1311-7990-a0b0-16d0567dfb19",
15         "Node": "H__D",
16         "Address": "127.0.0.1",
17         "Datacenter": "dc1",
18         "TaggedAddresses": {
19             "lan": "127.0.0.1",
20             "lan_ipv4": "127.0.0.1",
21             "wan": "127.0.0.1",
22             "wan_ipv4": "127.0.0.1"
23         },
24         "Meta": {
25             "consul-network-segment": ""
26         },
27         "CreateIndex": 10,
28         "ModifyIndex": 11
29     }
30 ]

   打开浏览器使用地址:http://127.0.0.1:8500,访问

    

Agent常用的参数

参数名称用途
-server 此标志用于控制代理是运行于服务器/客户端模式,每个 Consul 集群至少有一个服务器,正常情况下不超过5个,使用此标记的服务器参与 Raft一致性算法、选举等事务性工作
-client 表示 Consul 绑定客户端接口的IP地址,默认值为:127.0.0.1,当你有多块网卡的时候,最好指定IP地址,不要使用默认值
-bootstrap-expect 预期的服务器集群的数量,整数,如 -bootstrap-expect=3,表示集群服务器数量为3台,设置该参数后,Consul将等待指定数量的服务器全部加入集群可用后,才开始引导集群正式开始工作,此参数必须与 -server 一起使用
-data-dir 存储数据的目录,该目录在 Consul 程序重启后数据不会丢失,指定此目录时,应确保运行 Consul 程序的用户对该目录具有读写权限
-node 当前服务器在集群中的名称,该值在整个 Consul 集群中必须唯一,默认值为当前主机名称
-bind Consul 在当前服务器侦听的地址,如果您有多块网卡,请务必指定一个IP地址(IPv4/IPv6),默认值为:0.0.0.0,也可用使用[::]
-datacenter 代理服务器运行的数据中心的名称,同一个数据中心中的 Consul 节点必须位于同一个 LAN 网络上
-ui 启用当前服务器内部的 WebUI 服务器和控制台界面
-join 该参数指定当前服务器启动时,加入另外一个代理服务器的地址,在默认情况下,如果不指定该参数,则当前代理服务器不会加入任何节点。可以多次指定该参数,以加入多个代理服务器,
-retry-join 用途和 -join 一致,当第一次加入失败后进行重试,每次加入失败后等待时间为 30秒
-syslog 指定此标志意味着将记录 syslog,该参数在 Windows 平台不支持

 

 

posted on 2020-04-06 20:01  H__D  阅读(678)  评论(0编辑  收藏  举报