实战中的asp.net core结合Consul集群&Docker实现服务治理

整体架构目录:ASP.NET Core分布式项目实战-目录

一、前言

 

在写这篇文章之前,我看了很多关于consul的服务治理,但发现基本上都是直接在powershell或者以命令工具的方式在服务器上面直接输入consul agent .... 来搭建启动consul集群,一旦把命令工具关掉,则consul无法再后台启动,尤其是在linux系统中。

如果在window系统中,采用bat文件到时可以做成开机自启,或者在linux中把命令做成一个service 服务文件来启动就可以实现后台运行。

因此为了社区能更好的发展技术,且能把consul应用在生产环境中,我认真回顾了在公司项目中的应用,特此把我开发及总结的分享给大家,此篇文章采用docker引擎,并且只涉及到consul集群部署以及结合asp.net core微服务注册。

当然如果内容有涉及安全隐患的,大家可以积极留言,共同进步。

 注:以下所涉及到部署过程全部经过楼主我反复的验证,总结得来。大家在应用的过程中如果出现问题,可以留言咨询。

二、部署consul集群

 

1、介绍一下Consul

consul 关键特性
  服务发现:支持服务发现。你可以通过 DNS 或 HTTP 的方式获取服务信息。
  健康检查:支持健康检查。可以提供与给定服务相关联的任何数量的健康检查(如 web 状态码或 cpu 使用率)。
  K/V 存储:键/值对存储。你可用通过 consul 存储如动态配置之类的相关信息。
  多数据中心:支持多数据中心,开箱即用。
  WEB UI:支持 WEB UI。点点点,你就能够了解你的服务现在的运行情况,一目了然,对开发运维是非常友好的。

 

说明:

在Consul方案中,每个提供服务的节点上都要部署和运行Consul的Client 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与其他工具的比较

实战中的asp.net core结合Consul集群&Docker实现服务治理

 

consul的端口解释

实战中的asp.net core结合Consul集群&Docker实现服务治理

好了,该介绍的已经介绍了,接下来就是正式部署吧

 

2、Docker上运行Consul 第一步:安全配置,适用授权和数据加密传输(生产环境是必须的)

为了consul的安全,需要进行gossip加密以及RPC加密结合TLS。
Gossip加密:主要用于节点间的接收发送集群信息安全。
RPC加密:主要用于Agent之间调用RPC授权的安全性。

 

此处大家可以参考官网或者一下资料:

https://www.jianshu.com/p/3d074ed76a68
https://www.consul.io/docs/agent/encryption.html

 

第二步:consul集群部署

准备服务器(可以采用虚拟机部署)

    名称   IP  
CentOS7-1   server1   192.168.216.160  
CentOS7-2   server2   192.168.216.161  
CentOS7-3   server3   192.168.216.162  
CentOS7-4   client1   192.168.216.163  
vs 2017   project部署在docker上   192.168.216.163  

部署server1

docker run -d --net=host -v $PWD/data:/consul/data -v $PWD/config:/consul/config --restart always --name consulServer1 consul agent -server -bind=192.168.216.160 -node=server1 -bootstrap-expect 3 -data-dir=http://www.likecs.com/consul/data -config-file=http://www.likecs.com/consul/config -client 0.0.0.0 -ui

 

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

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