consul介绍
Consul包含多个组件,可是做为一个总体,为你的基础设施提供服务发现和服务配置的工具.他提供如下关键特性:
服务发现 Consul的客户端可用提供一个服务,好比 api 或者mysql ,另一些客户端可用使用Consul去发现一个指定服务的提供者.经过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务.
健康检查 Consul客户端可用提供任意数量的健康检查,指定一个服务(好比:webserver是否返回了200 OK 状态码)或者使用本地节点(好比:内存使用是否大于90%). 这个信息可由operator用来监视集群的健康.被服务发现组件用来避免将流量发送到不健康的主机.
Key/Value存储 应用程序可用根据本身的须要使用Consul的层级的Key/Value存储.好比动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用.
多数据中心 Consul支持开箱即用的多数据中心.这意味着用户不须要担忧须要创建额外的抽象层让业务扩展到多个区域.
Consul面向DevOps和应用开发者友好.是他适合现代的弹性的基础设施.
mysql
基础架构
Consul是一个分布式高可用的系统. 这节将包含一些基础,咱们忽略掉一些细节这样你能够快速了解Consul是如何工做的.若是要了解更多细节,请参考深刻的架构描述.linux
每一个提供服务给Consul的阶段都运行了一个Consul agent . 发现服务或者设置和获取 key/value存储的数据不是必须运行agent.这个agent是负责对节点自身和节点上的服务进行健康检查的.web
Agent与一个和多个Consul Server 进行交互.Consul Server 用于存放和复制数据.server自行选举一个领袖.虽然Consul能够运行在一台server , 可是建议使用3到5台来避免失败状况下数据的丢失.每一个数据中心建议配置一个server集群.sql
你基础设施中须要发现其余服务的组件能够查询任何一个Consul 的server或者 agent.Agent会自动转发请求到server .shell
每一个数据中运行了一个Consul server集群.当一个跨数据中心的服务发现和配置请求建立时.本地Consul Server转发请求到远程的数据中心并返回结果.json
consul集群规划
192.168.31.178
192.168.31.179
192.168.31.178
Server
Client
Client
192.168.31.178 server2
192.168.31.179 server3
192.168.31.178 server4
bootstrap
consul部署
下载consul1.6.2 也能够下载最新的1.7.3版本的
[root@server2 etc]# cd /data/soft/
[root@server2 soft]# wget https://releases.hashicorp.com/consul/1.6.2/consul_1.6.2_linux_amd64.zip
[root@server2 soft]# unzip consul_1.6.2_linux_amd64.zip
[root@server2 soft]# mv consul /usr/local/bin/consul
[root@server2 soft]# scp /usr/local/bin/consul server3:/usr/local/bin/
[root@server2 soft]# scp /usr/local/bin/consul server4:/usr/local/bin/
[root@server2 soft]# ansible all -m shell -a " mkdir -p /data/consul /etc/consul.d"
配置client-server
server2 192.168.31.78(server主机)
[root@server2 soft]# cat /etc/consul.d/consul_config.json
{ </