.netcore consul实现服务注册与发现-单节点部署

一、Consul的基础介绍


    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

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

640?wx_fmt=png

二、Consul安装前的理解


    Consul Agent有两种运行模式:ServerClient。这里的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正式安装(单节点)


1、下载Consul

官网地址:https://www.consul.io/downloads.html,下载对应的版本即可

640?wx_fmt=png

确认好版本好,下载到我们的本机目录命令:  

> wget -P /opt/consul/  https://releases.hashicorp.com/consul/1.2.2/consul_1.2.2_linux_amd64.zip

2、安装Consul

#先解压Consul文件

> unzip consul_1.2.2_linux_amd64.zip

#将Consul文件拷贝到执行目录

> mv consul /usr/local/bin/

注:如果找不到unzip命令请安装,命令如:yum install -y unzip

3、测试Consul是否安装成功

> consul

如下图表示成功:

640?wx_fmt=png

4、启动与配置Consul服务

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

如下图表示启动成功:

640?wx_fmt=png

输入地址查看服务状态:目前Consul正常运行

640?wx_fmt=png

进一步查看server的情况与角色状态

查看各个server的情况

> consul members

查看目前全部的consul的角色状态:

> consul operator raft list-peers

640?wx_fmt=png

5、通过配置文件来注册服务(也可以从consul api 接口添加服务注册,他会自动持久化

vi /etc/consul/services_config.json

{

"services":[

{

"id": "CLIENT_SERVICE_01",

"name" : "MVCClientService",

"tags": [

"urlprefix-/MVCClientService01"

],

"address": "172.16.1.110",

"port": 5000,

"checks": [

{

"name": "clientservice_check",

"http": "http://172.16.1.110:5000",

"interval": "10s",

"timeout": "5s"

}

]

},

{

"id": "CLIENT_SERVICE_02",

"name" : "APIClientService",

"tags": [

"urlprefix-/APIClientService02"

],

"address": "172.16.1.110",

"port": 5000,

"checks": [

{

"name": "clientservice_check",

"http": "http://172.16.1.110:5001/api/values",

"interval": "10s",

"timeout": "5s"

}

]

}

]

}

重新运行命令:

consul agent -server -ui -bootstrap-expect=1 -config-dir=/etc/consul -data-dir=/tmp/consul -node=consul-1 -client=0.0.0.0 -bind=172.16.1.174 -datacenter=dc1

注:一定要保证后端服务正常运行:端口5000,5001

运行成功后,如下图:

640?wx_fmt=png

以上操作都是在Consul Server 端进行操作的,按官方说明:Consul Server与Consul Client要进行区分,后端的服务应该部署在Consul Client上,他们分别处理自己的事情就好。

相关文章:

  • .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

  • winserver的consul部署实践与.net core客户端使用(附demo源码)

原文地址: https://blog.csdn.net/hailang2ll/article/details/82020027


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

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式事务解决方案以及 .Net Core 下的实现(上)

数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性。但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题。最近在研究分布式事物,分布式的解决方案有很多解决方案,也让我在研究的同…

微软MVP张善友告诉你,微服务选型要注意这些地方

周六的下午,广州周大福金融中心的写字楼静悄悄的,53楼的实盈多功能会议室却异常火爆,热闹非凡。来自广州各大科技公司的技术小伙伴们齐聚一堂,他们都在期待着一个人,那就是——微软MVP张善友和他带来的 .NET Core 微服…

像鱼

链接: 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 给你一个边长为 n 的用硬币摆成的实心三角形,请问把他倒过来最少需要多少步? 例子…

[ZJOI2005]午餐(贪心+dp)

首先若只有一个窗口,利用贪心,按吃饭时间从大到小排序即可 正确性证明: 定义 eat[i] 第i个人的吃饭时间,time[i] 第i个人的打饭时间 延长时间T[i]max(eat[i]- ∑ji1ntimej\sum\limits_{ji1}^ntime_jji1∑n​timej​ ,0) 最后…

【图论】【模板】静态仙人掌(luogu 5236)

【模板】静态仙人掌 题目大意 给你一个无向仙人掌图(保证每条边至多出现在一个简单回路中的无向图),问你两个点之间的最短路距离 输入样例#1 9 10 2 1 2 1 1 4 1 3 4 1 2 3 1 3 7 1 7 8 2 7 9 2 1 5 3 1 6 4 5 6 1 1 9 5 7输出样例#1 5 …

SCF: 简单配置门面

Simple Configuration Facade, 简写为 SCF。是 代码 和 外部配置 (properties文件, 环境变量,系统/命令行参数, yaml文件, 等等)之间的一层抽象. 命名上和另一个著名组件slf4j (Simple Logging Facade for Java)相似, 在配置领域的地位也和slf4j (.NET可…

【矩阵乘法】【倍增】美食家(luogu 6772)

美食家 题目大意 给你一个有向图,边权为经过所需时间 每个点有一个点权,有些点还有有特殊的点权 当你到达一个点后,可以获得该点的点权(重复经过可以重复获得,但不能停留),若在某个时间到某个…

.net core实践系列之短信服务-为什么选择.net core(开篇)

前言从今天我将会写.net core实战系列,以我最近完成的短信服务作为例子。该系列将会尽量以最短的时间全部发布出来。源码也将优先开源出来给大家。源码地址:https://github.com/SkyChenSky/Sikiro.SMS.NET CORE简介ASP.NET Core 是一个跨平台的高性能开源…

.netcore consul实现服务注册与发现-集群完整版

一、Consul的集群介绍Consul Agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关, 以Server模式运行的Consul Agent节点用于维护Consul集群的状态,官方建议每…

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎,而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼),手残把&打成整除了(大样例还对了gg) T2乱推,然后打了个O(n)O(n)O(n),却WA了15分? T3看了看,修改不会相互影响?那不…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core(开篇)》简单的介绍了(水了一篇).net core。这次针对短信服务的架构设计和技术栈的简析。源码地址:https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的使用,CAP 会越来越多的帮助到更多的人。CAP …

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖。相较于虚拟机而言,Docker共享的是…

记一次.net core 集成vue 实践

简介以前我们总是喜欢用服务端渲染前端(虽然也有htmlajax这种做法),后来node诞生了,前端工具链(不如说生态)诞生了,大家都开始了前端的重构之路,本文将以一简单案例介绍下我们是如何…

AspNetCore中使用Ocelot之 IdentityServer4

前言:Ocelot网关是基于AspNetCore开发的可扩展的高性能的企业级Api网关,目前已经基于2.0 升级版本升级,在使用AspNetCore 开发的时候可以使用2.0版本了,开源项目Ocelot 张大队长是主力的参与人员,以前提起张大队前面都…

Nginx主配置文件详解【笔记】

1 Nginx配置文件目录结构 最近使用Nginx做负载均衡,顺便整理Nginx配置文件笔记如下所述,本文主要梳理主配置文件各属性的作用。使用yum安装好Nginx后,可以在默认路径(/etc/nginx)看到如下配置文件。 /etc/nginx/ ├─…

微服务介绍及Asp.net Core实战项目系列之微服务介绍

0、目录整体架构目录:ASP.NET Core分布式项目实战-目录一、微服务选型在做微服务架构的技术选型的时候,以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构、量子服务架构的时候、甚至恢复成单体架构的时候,代价最…

【矩阵乘法】生成树计数(luogu 2109/NOI 2007)

生成树计数 luogu 2109 题目大意 有n个排成一列的点,把距离不超过k的点之间连边,问这个图的生成树个数 输入样例 3 5输出样例 75样例说明 样例对应的图如下: 数据范围 解题思路 因为n十分大,不能直接2^m暴力枚举&#x…

你需要知道的这几种 asp.net core 修改默认端口的方式

一般情况下,aspnetcore发布后的默认端口是5000,这个大家都知道,而且默认骨架代码中没有看到任何让你输入的ip地址和端口号,但作为程序员的我们,不希望被框架所管制,那如何实现默认端口的修改呢?…