伏法朝朝忧闷,强梁夜夜欢歌,损人利己骑马骡,正直公停挨饿,
修桥补路瞎眼,杀人放火儿多,我到西天问我佛,佛说……我也没辙!
一、三台机器server模式
介绍
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等)。使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。
特性
服务发现 Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务.
健康检查 Consul客户端可用提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%). 这个信息可由operator用来监视集群的健康.被服务发现组件用来避免将流量发送到不健康的主机.
Key/Value存储 应用程序可用根据自己的需要使用Consul的层级的Key/Value存储.比如动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用.
多数据中心 Consul支持开箱即用的多数据中心.这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域.
Consul面向DevOps和应用开发者友好.是他适合现代的弹性的基础设施.
服务注册发现流程
Consul在业界最广泛的用途就是作为服务注册中心,同Eureka类型,consul作为服务注册中心它的注册和发现流程:
![](https://img.haomeiwen.com/i13118451/cabf95e1e73ffc20.png)
在上面的流程图上有三个角色,分别为服务注册中心、服务提供者、服务消费者。
1.服务提供者Provider启动的时候,会向Consul发送一个请求,将自己的host、ip、应用名、健康检查等元数据信息发送给Consul
2.Consul 接收到 Provider 的注册后,定期向 Provider 发送健康检查的请求,检验Provider是否健康
- 服务消费者Consumer会从注册中心Consul中获取服务注册列表,当服务消费者消费服务时,根据应用名从服务注册列表获取到具体服务的实例(1个或者多个),从而完成服务的调用。
Consul建议的架构
基于Consul的leader选举模式,Consul官方建议的是consul-server采用3或5节点来保证可用性,而每台client注册在本地的服务器上负责健康检查和向server上报信息,不同概念的应用处于不同的数据中心下。
下图源自Consul官方站点:
![](https://img.haomeiwen.com/i13118451/050d1e78c1f7fad6.png)
环境准备
三台机器:
vm-a 172.31.129.12 centos7
vm-b 172.31.129.13 centos7
vm-c 172.31.129.17 centos7
Consul官网(https://www.consul.io/downloads.html)下载相应系统的consul可执行文件。
我下载的是consul_1.7.2_linux_amd64.zip,在上面的每台机器上解压,并拷贝到/usr/local/pid/目录下。
#解压
unzip consul_1.4.3_linux_amd64.zip
#consul数据、配置存放文件夹
mkdir consul-data
二、两台机器(一个server模式,一个client模式)
直接接启动cousul
./consul
server [10.0.86.194]
启动 Server 节点
[root@centos7 sdb]# ./consul agent -server -bootstrap-expect=1 -data-dir=consul-data -config-dir=consul-data -node=server-node1 -bind=10.0.86.194 -client=10.0.86.194 -datacenter=sdb -ui
client [10.0.86.208]
启动 Client 节点
[root@centos7 sdb]# ./consul agent -data-dir=consul-data -node=client-node1 -bind=10.0.86.208 -datacenter=sdb -config-dir=consul-data
加入集群
[root@centos7 sdb]# ./consul join 10.0.86.194
查看集群列表
[root@centos7 sdb]# ./consul members
单机启动
在consul执行文件同级目录建立一个名为consul-data文件夹
[root@centos7 pid]# nohup ./consul agent -server -bootstrap-expect=1 -data-dir=consul-data -config-dir=consul-data -node=server-node1 -bind=10.0.88.95 -client=0.0.0.0 -datacenter=pid -ui > /dev/null 2>&1 &
网友评论