一、概述
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件.
Consul 由 HashiCorp公司用Go语言开发, 基于Mozilla Public License 2.0的协议进行开源.
Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.
参数说明
–net=host docker参数, 使得docker容器越过了net namespace的隔离,免去手动指定端口映射的步骤
-server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求
-advertise 将本机私有IP传递到consul
-bootstrap-expect 指定consul将等待几个节点连通,成为一个完整的集群
-retry-join 指定要加入的consul节点地址,失败会重试, 可多次指定不同的地址
-client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1
-bind 该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
allow_stale 设置为true, 表明可以从consul集群的任一server节点获取dns信息, false则表明每次请求都会经过consul server leader
架构图
二、环境准备
操作系统:Centos7.4
IP地址规划
172.16.8.251 devops-consul-server01
172.16.8.252 devops-consul-server02
172.16.8.253 devops-consul-server03
三、部署安装
1、下载安装包
https://releases.hashicorp.com/consul/1.0.6/consul_1.0.6_linux_amd64.zip?_ga=2.106683203.1153500083.1519572033-1430546467.1519572033
2、解压
cd /app/tools/
unzip consul_1.0.6_linux_amd64.zip
mv consul /usr/bin/
3、Consul 启动
consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=172.16.8.251 -client=0.0.0.0 -node=172.16.8.251
consul agent -server -join=172.16.8.251 -ui -data-dir=/var/lib/consul-data -bind=172.16.8.252 -client=0.0.0.0 -node=172.16.8.252
consul agent -server -join=172.16.8.251 -ui -data-dir=/var/lib/consul-data -bind=172.16.8.253 -client=0.0.0.0 -node=172.16.8.253
4、查看集群状态
consul members
Node Address Status Type Build Protocol DC Segment
172.16.8.251 172.16.8.251:8301 alive server 1.0.6 2 dc1
172.16.8.252 172.16.8.252:8301 alive server 1.0.6 2 dc1
172.16.8.253 172.16.8.253:8301 alive server 1.0.6 2 dc1
输入http://172.16.8.251:8500/ui/访问Consul,可查看到如下界面: