Consul架构

Consul介绍

Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具,它提供以下关键特性:

  • 服务发现:Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务
  • 健康检查:Consul客户端可用提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%). 这个信息可由operator用来监视集群的健康.被服务发现组件用来避免将流量发送到不健康的主机
  • Key/Value存储:应用程序可用根据自己的需要使用Consul的层级的Key/Value存储.比如动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用
  • 多数据中心:Consul支持开箱即用的多数据中心.这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域

Consul 使用场景

  1. docker 实例的注册与配置共享
  2. coreos 实例的注册与配置共享
  3. vitess 集群
  4. SaaS 应用的配置共享
  5. 与confd服务集成,动态生成nginx和haproxy配置文件

集群架构

IP 主机 角色
10.22.4.9 node1 consul-server1
10.22.4.15 node2 consul-server2
10.22.4.37 node3 consul-server3

Consul部署

Consul官网下载

Consul官网提供最新版本可用下载,根据服务需求下载适合您的操作系统和体系结构的软件包
consul1

本文下载最新的1.12.1版本

[root@node1 ~]# wget https://releases.hashicorp.com/consul/1.12.1/consul_1.12.1_linux_amd64.zip

部署

解压

[root@node1 ~]# unzip consul_1.12.1_linux_amd64.zip 
Archive:  consul_1.12.1_linux_amd64.zip
  inflating: consul 

[root@node1 ~]# mv consul /usr/local/bin/  

consul启动

启动master节点

[root@node1 ~]# consul agent -server -bootstrap-expect=3 -data-dir=/data/consul_data -node=consul-master  -bind=10.22.4.9  -client=0.
==> Starting Consul agent...
           Version: '1.12.1'
...
2022-06-02T15:02:49.178+0800 [ERROR] agent.server.autopilot: Failed to reconcile current state with the desired state
2022-06-02T15:02:50.576+0800 [INFO]  agent: Synced node info

#后台启动
[root@node1 ~]# nohup consul agent -server -bootstrap-expect=3 -data-dir=/data/consul_data -node=consul-master  -bind=10.22.4.9  -client=0.0.0.0 -datacenter=dc1 -ui &
  • server: 以server身份启动,默认是client
  • bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失
  • data-dir:data存放的目录,更多信息请参阅consul数据同步机制
  • node:节点id,集群中的每个node必须有一个唯一的名称,默认情况下,Consul使用机器的hostname
  • bind:监听的ip地址。默认绑定0.0.0.0,可以不指定。表示Consul监听的地址,而且它必须能够被集群中的其他节点访问。Consul默认会监听第一个private IP,但最好还是提供一个。生产设备上的服务器通常有好几个网卡,所以指定一个不会出错
  • client: 客户端的ip地址,0.0.0.0是指谁都可以访问(不加这个,下面的ui :8500无法访问)
  • ui: 可以访问UI界面
  • config-dir指定配置文件夹,Consul会加载其中的所有文件
  • datacenter 指定数据中心名称,默认是dc1

启动salve1节点

#slave1节点
[root@node2 ~]# nohup consul agent -server -bootstrap-expect 3 -data-dir /data/consul_data -node=consul-salve1  -bind=10.22.4.15 -client=0.0.0.0 -datacenter=dc1 -ui &

#slave2节点
[root@node3 ~]# nohup consul agent -server -bootstrap-expect 3 -data-dir /data/consul_data -node=consul-salve2  -bind=10.22.4.37 -client=0.0.0.0 -datacenter=dc1 -ui &

将salve1、salve2加入master集群节点

consul集群:当一个consul agent启动后,它不知道任何其他节点,要加入到集群中的其他节点,agent必须加入一个已经存在的集群(cluster)。要加入这样的集群,它只需要知道这个集群中的一个节点即可。它加入后将会和这个member gossip(交谈)并迅速发现集群中的其他节点。一个consul agent可以加入任何类型的其他agent,而不只是那些运行于server mode的agent

[root@node2 ~]# consul join 10.22.4.9
Successfully joined cluster by contacting 1 nodes.
[root@node3 ~]# consul join 10.22.4.9
Successfully joined cluster by contacting 1 nodes.

查看集群状态

[root@node1 ~]# consul members
Node           Address          Status  Type    Build   Protocol  DC   Partition  Segment
consul-master  10.22.4.9:8301   alive   server  1.12.1  2         dc1  default    <all>
consul-salve1  10.22.4.15:8301  alive   server  1.12.1  2         dc1  default    <all>
consul-salve2  10.22.4.37:8301  alive   server  1.12.1  2         dc1  default    <all>

访问consul web界面

浏览器访问IP:8500即可
consul2

文章作者: 鲜花的主人
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱吃可爱多
Linux Tools Linux Tools
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝