.NET Core微服务之基于Consul实现服务治理

一、Consul基础介绍

.NET Core微服务之基于Consul实现服务治理

  Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单。

  Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合

  关于Consul的更多介绍,比如优点,这里就不再赘述了,上网一搜就可以随处找到了。但是,必须贴一个和其他类似软件的对比:

.NET Core微服务之基于Consul实现服务治理

  此外,关于Consul的架构以及相关的角色,如下图所示:

.NET Core微服务之基于Consul实现服务治理

  要想利用Consul提供的服务实现服务的注册与发现,我们需要建立Consul Cluster。在Consul方案中,每个提供服务的节点上都要部署和运行Consul的agent,所有运行Consul Agent节点的集合构成Consul Cluster。Consul Agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上 的应用服务无关。以Server模式运行的Consul Agent节点用于维护Consul集群的状态,官方建议每个Consul Cluster至少有3个或以上的运行在Server Mode的Agent,Client节点不限。

  Consul支持多数据中心,每个数据中心的Consul Cluster都会在运行于Server模式下的Agent节点中选出一个Leader节点,这个选举过程通过Consul实现的raft协议保证,多个 Server节点上的Consul数据信息是强一致的。处于Client Mode的Consul Agent节点比较简单,无状态,仅仅负责将请求转发给Server Agent节点。

二、Consul集群搭建 2.1 环境准备

  这里我准备了三台Linux(CentOS)虚拟机和一台Windows Server 2008 R2虚拟机,借助VMware Workstation搭建,如下图所示。

.NET Core微服务之基于Consul实现服务治理

  其中,192.168.80.100会作为leader角色,其余两台192.168.80.101和192.168.80.102会作为follower角色。当然,实际环境中leader角色不会是一个固定的,会随着环境的变化(比如Leader宕机或失联)由算法选出新的leader。在进行下面的操作会前,请确保三台节点能够相互ping通,并能够和宿主机也ping通。另外,192.168.80.71会作为client角色,并且和其余三台虚拟机互相ping通。

2.2 下载Consul

  Consul的下载很简单,直接去:https://www.consul.io/downloads.html 选择对应的平台即可。

  这里我们的linux虚拟机选择的是Linux版本:

  

.NET Core微服务之基于Consul实现服务治理

  下载之后是一个zip文件,我们通过XFtp等工具将其传送到我们的linux节点中即可。

  而Windows Server虚拟机选择的是Windows版本,不再赘述。

2.3 安装与配置Consul   1.解压Consul.zip:

  分别在三台节点中解压,解压命令:

> unzip consul_1.1.0_linux_386.zip   

  解压之后将consul复制到我们的自定义文件目录中,比如:/usr/local/consul

> cp consul /usr/local/consul

  2.设置环境变量

  分别在三台节点中设置环境变量:

> vim /etc/profile  

  在profile中增加一行CONSUL_HOME并更改PATH:

# Consul

export CONSUL_HOME=http://www.likecs.com/usr/local/consul

export PATH=$PATH:$JAVA_HOME/bin:$CONSUL_HOME;  

  使得配置生效

> source /etc/profile

  测试是否生效,在三个节点测试输入consul

> consul

  看到下图所示的命令提示,就代表OK了。

  

.NET Core微服务之基于Consul实现服务治理

  3.启动Server(s)

  分别在三台节点上执行以下命令即可启动Consul

192.168.80.100>consul agent -server -ui -bootstrap-expect=3 -data-dir=http://www.likecs.com/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=192.168.80.100 -datacenter=dc1

192.168.80.101>consul agent -server -ui -bootstrap-expect=3 -data-dir=http://www.likecs.com/tmp/consul -node=consul-2 -client=0.0.0.0 -bind=192.168.80.101 -datacenter=dc1 -join 192.168.80.100

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxgwx.html