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

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

  注意101和102的启动命令中,有一句 -join 192.168.80.100 => 有了这一句,就把101和102加入到了100所在的集群中。

  启动之后,集群就开始了Vote(投票选Leader)的过程,通过下面的命令可以看到集群的情况:

  

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

  在Windows Server虚拟机上启动:

> consul agent -bind 0.0.0.0 -client 192.168.80.71 -data-dir=C:\Counsul\tempdata -node EDC.DEV.WebServer -join 192.168.80.100

  启动后会有如下提示:

  

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

  4.通过UI查看集群

  Consul不仅提供了丰富的命令查看集群情况,还提供了一个WebUI,默认端口8500,我们可以通过访问这个URL(eg. :8500)得到如下图所示的WebUI:

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

  可以看到三个节点都正常启动,下面我们就来试试向Consul注册一下我们基于ASP.NET Core的WebAPI服务。

  5.模拟Leader挂掉,查看Consul集群的新选举Leader

  这里我暴力一点直接将Leader节点关机:shutdown -h now,可以看到我们的80.100已经挂了。

  

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

  查看其余两个节点的日志可以发现,consul-3 (80.102)被选为了新的leader:

  

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

  当然,也可以通过80.101或102的WebUI查看:

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

  也可以通过以下命令查看目前的各个Server的角色状态:

> consul operator raft list-peers

  

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

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

三、ASP.NET Core WebAPI服务注册 3.1 准备一个ASP.NET Core WebAPI程序

  Step1.创建一个ASP.NET Core WebAPI程序

  

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

  Step2.创建一个HealthController用于Consul的健康检查

[Produces("application/json")] [Route("api/Health")] public class HealthController : Controller { [HttpGet] public IActionResult Get() => Ok("ok"); }

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

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