今天和大家来分享一款微服务治理工具-Consul。Consul是大名鼎鼎的Hashicorp公司开发的,Zookeeper、Etcd、Consul目前是业界三大服务治理工具,成三足鼎立之势。三者各有各的特点。这里就不一一说明三者的优缺,仅仅分析consul的优势:
1.封装了服务发现的api,开发调用非常简单
2.提供了健康检查功能
3.使用了raft算法保证了一致性,比复杂的paxos算法更直接,相比而言,zk采用的是paxos,二etcd采用的是raft
4.支持多数据中心,保证多机房使用。
5.支持 http 和 dns 协议接口.,zookeeper 的集成较为复杂,,etcd 只支持 http 协议
6.官方提供web管理界面, etcd 无此功能
7.唯一一款跨数据中心,其它几款都不支持跨数据中心
下面是Consul的架构图:
agent
组成 consul 集群的每个成员上都要运行一个 agent,可以通过 consul agent 命令来启动。agent 可以运行在 server 状态或者 client 状态。自然的,运行在 server 状态的节点被称为 server 节点;运行在 client 状态的节点被称为 client 节点。
client 节点
负责转发所有的 RPC 到 server 节点。本身无状态,且轻量级,因此,可以部署大量的 client 节点。
server 节点
负责组成 cluster 的复杂工作(选举、状态维护、转发请求到 lead),以及 consul 提供的服务(响应 RCP 请求)。考虑到容错和收敛,一般部署 3 ~ 5 个比较合适。
datacenter
多机房使用的数据共享
网上关于Consul单机和集群部署的例子很多,这里分享在在Windows平台下的简化部署方法并设置开机自动启动、避免不停的敲入一行行难记的命令:
Consul简化部署说明
部署Consul(只适用版本0.7)(Windows 64位服务器)时使用
1、 解压工具,把这三个文件放在和Consul同一个目录下,
里面有个批处理文件 ,修改里面的IP为服务器的内网IP(这个通过批处理也可以获取,但是不同环境,比如有多个网卡的服务器,或者有Wifi环境的笔记本会获取多个,为了稳定起见,这里还是建议手工录入)
2、 三个脚本都修改完后,依次启动每台机器上的srvanyui.exe工具,配置如下:
点确定后,会提示是否启动该服务,点“是”,在工具会看到新建的服务:
这样,不管机器如何重启,只要机器能成功启动,这个Consul节点就会自动加载到集群中去
通过打开cmd,可以看到所有节点状态:
简要说明:
1、先用srvanyui将consul安装成windows服务,路径选择批处理的路径
3、加入集群的IP,所有安装机器的加入到同一个IP总(consul join -rpc-addr=%ip%:8400 10.175.173.81)
4、加入集群后,查看命令后面要加rpc-addr=10.175.173.81:8400 http-addr=10.175.175.163:8500
查看成员:
consul members -rpc-addr=10.175.173.81:8400
consul members -http-addr=10.175.175.163:8500
查看信息:
consul info -rpc-addr=10.175.173.81:8400
consul info -http-addr=10.175.175.163:8500
查看版本:consul –v