.NET Core微服务之路:基于Consul实现服务的注册与发现

Consul介绍

  Consul是HashiCorp公司推出的开源工具[开源地址:https://github.com/hashicorp/consul],用于实现分布式系统的服务发现与配置。
 
 
  与市面上其他系统比较如下
 
  总体而言, Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合
此外,关于Consul的架构以及相关的角色,如下图所示:
  以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节点。
 

集群搭建

 

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
 

安装consul

 

节点1

./consul agent -server -ui -bootstrap-expect=3 -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=192.168.0.115 -datacenter=dc1
 

节点2

./consul agent -server -ui -bootstrap-expect=3 -data-dir=/tmp/consul -node=consul-2 -client=0.0.0.0 -bind=192.168.0.114 -datacenter=dc1 -join 192.168.0.115
 

节点3

./consul agent -server -ui -bootstrap-expect=3 -data-dir=/tmp/consul -node=consul-3 -client=0.0.0.0 -bind=192.168.0.113 -datacenter=dc1 -join 192.168.0.115
 

客户端

./consul agent -bind 192.168.0.112 -client 192.168.0.112 -data-dir=C:\Counsul\tempdata -node LZZ.DEV.WebServer -join 192.168.0.115
 
  • -node:节点的名称
  • -bind:绑定的一个地址,用于节点之间通信的地址,可以是内外网,必须是可以访问到的地址
  • -server:这个就是表示这个节点是个server
  • -client:这个表示这个节点是个client
  • -bootstrap-expect:这个就是表示期望提供的SERVER节点数目,数目一达到,它就会被激活,然后就是LEADER了
 

查看所有consul成员

./consul members
 

查看服务成员

./consul operator raft list-peers
 

关闭一台服务,测试leader状态

但是只要超过一半的Server(这里是2/3还活着)还活着,集群是可以正常工作的,这也是为什么像Consul、ZooKeeper这样的分布式管理组件推荐我们使用3个或5个节点来部署的原因。
 

查看服务状态

 

创建ASP.NET Core程序

 
安装consul包
 
 
 

猜你喜欢

转载自www.cnblogs.com/SteveLee/p/9787898.html