Consul介绍:

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

Consul的如何实现的?

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

微服务概念:

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。简而言之,微服务架构风格是一种将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的流程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务至少集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。

Consul的安装与配置

我们需要去下载Consul ,下载很简单,直接去:https://www.consul.io/downloads.html 选择对应的平台即可,如果你的是Mac OS x 那么直接双击那个可执行文件即可,我的平台是windows10 ,那么相对于MacOsX是比较困难的,即配置环境变量,将文件的位置放到你的path中就可以了,其目的就是为了在Cmd终端中能够键入执行Consul命令,如果你的环境变量已经配置成功,请在Cmd中敲击consul,如果结果如下,那么恭喜您,你成功进入Consul大门。

名词解释

Client : Consul 的 Client模式,就是客户端模式。是 Consul 节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到 Server,本身是不持久化这些信息。
Server :Consul 的 Server 模式,表明这个 Consul 是个 Server ,这种模式下,功能和 Client 都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
Server-Leader:  Server 是它们的老大,它和其它 Server 不一样的一点是,它需要负责同步注册的信息给其它的 Server ,同时也要负责各个节点的健康监测。
raft: Server 节点之间的数据一致性保证协议使用的是 raft,而 zookeeper 用的 paxos,etcd采用的也是raft
服务发现协议:Consul 采用 http 和 DNS 协议,etcd 只支持 http 。
服务注册:Consul 支持两种方式实现服务注册,一种是通过 Consul 的服务注册 Http API,由服务自己调用 API 实现注册,另一种方式是通过 json 格式的配置文件实现注册,将需要注册的服务以 json 格式的配置文件给出。Consul 官方建议使用第二种方式。

启动Consul

如果是在单机情况下使用开发模式启动,在终端中输入:

1

~ » consul agent -dev

开启Consul 集群

首先创建Server-Leader,即老大,那么在终端上输入以下命令:

consul agent -server 表示以服务器模式启动代理。其中:

-bootstrap-expect=2 表示节点个数为2个。
-node=consul-server-1 表示节点名称
-client=0.0.0.0 表示客户端 IP
-bind=10.211.55.2 表示服务端 IP
-datacenter=dc1 数据中心名称

需要注意的是,如果你启动的Server模式的话,你一定要注意node名不要相同,否则将会替换你的项。

那么Server-Leader已经创建了,需要别的服务器去进行连接了,如果是Server模式,输入以下命令,只不过是拼接了-join id.

  • -data-dir=/tmp/consul 表示临时数据存储路径

  • -join 10.211.55.2 表示加入 10.211.55.2 所在的集群

这个时候如果出现Consul agent Running!!还有一大堆东西。那么说明你已经集群成功了,你可以去自己的通过Consul提供的UI去看节点状况,地址为 你自己的id+8500端口,即192.168.10.6:8500或者你的子节点均可,但是如果说你的节点个数是4个,你还有几个节点没有放上去,那么UI是出不来了(有可能会报500错)。

那么除了UI查看节点以外,还可以通过终端输入指令来查看我们的节点状态。

1

consul members

如果我们希望得到更为详细的信息,可以使用指令来查看

1

consul operator raft list-peers

如果说你没有服务器集群,那么输入以上命令就会出现以下结果:

创建.NET Core API 并注册服务

如果你的 Consul Cluster 已经搭建完成,那么可以接下来创建一个.NET Core API 来实现服务的注册。

我们创建一个空的解决方案,添加解决方案文件夹 “服务注册”,创建Api项目。

修改启动配置文件

在launchSettings.json中修改启动ip和端口。

添加健康检查控制器

在项目中添加一个名为  HealthController 的 API 控制器,用于在将服务注册到 Consul 后的健康检查。

在项目中添加Consul,或者键入命令,这当然,由你选择。

注册Consul中间件,修改Startup.cs文件,这里使用的是 Consul 的服务注册 Http API。

 完成后,启动项目,此时已成功注册。

原文地址:https://www.cnblogs.com/ZaraNet/p/10123291.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

8分钟学会Consul集群搭建及微服务概念相关推荐

  1. Redis 集群,分布式,微服务概念和区别理解

    概念: 集群是个物理形态,分布式是个工作方式. 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 1:分布式是指将不同的业务分布在不同的地方.而集群指的是将几 ...

  2. Consul集群搭建

    转载自  Consul集群搭建 概述 作为服务发现的几种产品,比较可以查看这里.Consul官方也提供了几种产品之间的比较,点击查看. 服务发现产品 Consul有很多组件,但总体来说,它是一个发现和 ...

  3. 集群,分布式,微服务的区别

    参考文献: 集群,分布式,微服务概念和区别理解 谢谢作者分享!

  4. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

     前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...

  5. consul集群搭建,配合nginx完成服务动态发现和健康检查

    1.概述 1.1 介绍 consul是一个服务发现和配置共享的服务软件,结合nginx的主动健康检查模块nginx_upstream_check_module和服务发现模块nginx-upsync-m ...

  6. Eureka集群搭建,unavailable-replicas服务节点不可用解決方案

    最近由于项目需要搭建了eureka集群,集群搭建完成后,发现服务节点均在unavailable-replicas下,即说明集群搭建失败,各节点之间不能互相通信,网上查找了各种资料,终于解决,现将问题处 ...

  7. SpringCloud(三)Eureka之集群搭建以及将服务注册到多个EurekaServer

    概述:为了保证EurekaServer的高可用,可以采用服务集群方式.当有一台挂掉时,其他节点仍可以继续提供服务.在EurekaServer的集群配置中,他们为分别配置对方为自己的注册中心,并将自己节 ...

  8. 现阶段Java高可用集群架构与微服务架构的简单分析

    一.如何选择 1.高可用集群 适用于中小型创业公司项目架构,小型技术团队快速迭代版本发布部署需求,前期低成本运行,爆发时可通过投入适量成本横向扩容服务器抗压. 特点: 前期技术开发成本低 一定的服务器 ...

  9. 集群,分布式和微服务的区别

    一.概念 集    群: 同一个业务,部署在多个服务器上 分布式: 同一个业务,拆分成多个子业务,部署在不同的服务器上 微服务: 同一个业务,按照功能模块拆分,每一个服务只对应一个功能模块 二.区别 ...

最新文章

  1. 原创 | 初学者友好!最全算法学习资源汇总(附链接)
  2. IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析
  3. Perl/CGI脚本语言编程学习资料及开发工具下载大全
  4. Rabbit的Windows安装
  5. Minecraft InputFix
  6. [x-means] 1.x-means简介
  7. HDU 题目分类(转载)
  8. 回归分析中f多少合适_问下,spss回归分析得出的R方值、F值、t值各有何含义,数值大小有何含义?...
  9. diy个人级超级计算机,八核+七卡!泡泡网DIY个人超级计算机
  10. 微信记账本小程序(代码+功能介绍)
  11. 闲谈IPv6-体会一下移动IP路由扩展头以及地址选项头的实际操作(Howto)
  12. 流媒体协议(三):FLV协议
  13. 【翻译】介绍一下Opta。Rails上的Terraform
  14. windows10 1909 原版纯净系统分享
  15. 案例拆解:元气森林,这些企业微信裂变经验值得你学习
  16. 中国石油大学《化工热力学》第一阶段在线作业
  17. 5G,建设得怎么样了?
  18. 2022年深圳市生态环境专项资金申请指南
  19. 百度O2O两条腿:百度地图和百度糯米
  20. Win7/Win8.1新装备:谷歌推64位Chrome测试版

热门文章

  1. linux系统输入指令,详解linux系统输入输出管理和vim的常用功能
  2. Autofac之自动装配
  3. 了解cron以及使用cron定时备份MySQL
  4. Vue 组件实例属性的使用
  5. SpringBoot+Shiro学习(四):Realm授权
  6. WPF/MVVM 快速开发
  7. no ip domain-lookup 什么意思
  8. 真快!10秒内将k8s集群运行起来
  9. Blazor 组件之间使用 EventCallback 进行通信
  10. 在.NET Core中使用Channel(一)