1.介绍consul
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.
2.consul优势
2.1 使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接
2.2 支持多数据中心
2.3 支持健康检查
2.4 支持http和dns协议封口
2.5 官方提供web管理界面
2.6 部署简单,运维友好
相比同类的服务发现与配置的主流的产品,我个人更看好的功能是DNS API,并且提供简单的web管理界面。
3.consul的使用场景
3.1 docker 实例的注册与配置共享
3.2 coreos 实例的注册与配置共享
3.3 redis &MySQL 高可用的实现
3.4 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件
4. 基于consul redis高可用
首先部署一个3节点的consul server 集群,用于提供主要服务。
其次redis主从服务部署,consul client 并且注册服务,并提供读域名和写域名。
最后 APP应用服务的DNS解析指向consul server 节点,通过consul dns解析 获得后端的redis master和slave的ip地址。
当故障发生,redis的主从切换时。consul会自动做DNS和域名的对应关系。
5.基于consul MySQL高可用
基本于redis的高可用类似,需要MHA高可用做配合,proxysql做读写分离。不过不再需要MHA的vip,只需要使用MHA的补binlog日志功能。
https://www.percona.com/blog/2016/09/16/consul-proxysql-mysql-ha/
#可以参考下percona博客分享
6.关于consul dns缓存问题
consul dns缓存可以设置为 有缓存状态和无缓存状态。默认TTL值是0。可调整有缓存的参数是
dns_config.node_ttl
。建议使用默认的无缓存状态。
7.结束语
关于 consul 1.0 如何具体实现server搭建和实现redis的高可用 参考我的好基友言伟同学的博客。目前网上流传的都是consul 老的版本,感谢言伟同学的分享。也请关注知数堂分享的新姿势。
http://412166174.blog.51cto.com/3102369/1975822
http://412166174.blog.51cto.com/3102369/1976520