0)基本概念

consul常用于服务发现 【微服务】

web_Api

\

\   ->注册服务                                          raft选举leader

-----------------------------------------------------------------——

【Server1】<---------------------->     【Server2】

|                                       |

\                                 /

\                        /

【Server3】                                       
-----------------------------------------------------------------——

\

\->发现服务

1)下载

https://www.consul.io/   注意系统版本

2)设置环境变量

拷贝.exe对应的文件路径 放到环境变量path中

3)cmd中启动服务   -dev 表示默认

consul agent -dev

建立集群使用 同一服务器下解决端口占用问题时只能用相同端口注册一个服务

方式一、

pc-1  【ip:192.168.109.1】

consul agent -server -ui -bootstrap-expect=2 -data-dir=e:\consul -node=consul-1 -client=0.0.0.0 -bind=192.168.109.1 -datacenter=dc1

pc-2 【ip:192.168.109.128】

consul agent -server -ui -bootstrap-expect=2  -data-dir=c:\consul -node=consul-2 -client=0.0.0.0 -bind=192.168.109.128  -datacenter=dc1  -join 192.168.109.1

方式二、

4)打开vs

5)新建web api项目

6)在Startup.cs下修改Configure函数如下

   public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseMvc();
String ip = Configuration["ip"];//部署到不同服务器的时候不能写成127.0.0.1或者0.0.0.0,因为这是让服务消费者调用的地址
int port = int.Parse(Configuration["port"]);//获取服务端口
var client = new ConsulClient(ConfigurationOverview); //回调获取
var result = client.Agent.ServiceRegister(new AgentServiceRegistration()
{
ID = "ServerNameFirst" + Guid.NewGuid(),//服务编号保证不重复
Name = "ServerFirst",//服务的名称 集群使用consul
Address = ip,//服务ip地址
Port = port,//服务端口
Check = new AgentServiceCheck //健康检查
{
DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后反注册
Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔,或者称为心跳间隔(定时检查服务是否健康)
HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址
Timeout = TimeSpan.FromSeconds(5)//服务的注册时间
}
});
}
1
2
3
4
5
6
7
8
9
10
11
/// <summary>
       /// 获取Consul的实例
       /// </summary>
       /// <param name="obj"></param>
       private static void ConfigurationOverview(ConsulClientConfiguration obj)
       {
           //consul的地址
           obj.Address = new Uri("http://127.0.0.1:8500");
           //数据中心命名
           obj.Datacenter = "dc1";
       }

7)设置健康检查控制器HealthController.cs

1
2
3
4
5
6
[Route("api/[controller]")]
public class HealthController : Controller
{
    [HttpGet]
    public IActionResult Get() => Ok("ok");
}

8)生成项目

9)打开项目对应文件夹 ->bin->Debug->netcoreapp2.0   路径上输入cmd 直接进入对应目录并打开cmd

10)运行命令进行服务注册   dotnet PeerApi.dll --ip localhost --port 14446      解释:PeerApi.dll替换成你的dll    localhost代替ip地址  注意:如果未放在iis上 输入localhost代替127.0.0.1 其他ip地址不变  14446 是端口号 替换你的端口

11)打开 http://localhost:8500/ui/dc1/services  【consul自带的监控页面】  可以查看到具体注册的服务

12)服务发现  可以查看链接

1
http://127.0.0.1:8500/v1/catalog/service/ServerFirst  【ServerFirst 为服务名称】

Consul .netcore的更多相关文章

  1. Asp.Net 技术

    Asp.Net 技术Nuget 管理器Spring.NET 框架Spring.core 包 微服务Consul .NetCore 框架:Spring.net Nhibernate 框架Dapper.n ...

  2. 微服务(入门二):netcore通过consul注册服务

    基础准备 1.创建asp.net core Web 应用程序选择Api 2.appsettings.json 配置consul服务器地址,以及本机ip和端口号信息 { "Logging&qu ...

  3. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  4. 微服务(入门一):netcore安装部署consul

    环境准备  vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul  1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...

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

    原文:.netcore consul实现服务注册与发现-集群完整版 一.Consul的集群介绍    Consul Agent有两种运行模式:Server和Client.这里的Server和Clien ...

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

    原文:.netcore consul实现服务注册与发现-单节点部署 一.Consul的基础介绍     Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分 ...

  7. .netcore consul实现服务注册与发现-集群部署

    一.Consul的集群介绍 Consul Agent有两种运行模式:Server和Client.这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关 ...

  8. NetCore项目实战篇06---服务注册与发现之consul

    至此,我们的解决方案中新建了三个项目,网关(Zhengwei.Gateway).认证中心(Zhengwei.Identity)和用户资源API(Zhengwei.Use.Api).当要访问用户API的 ...

  9. .NetCore快速上手Consul,留给自己一点思考的空间

    互联网热潮下,"微服务"技术架构成为了一种高大上的技术,其顾名思义就是将传统的大的业务服务拆分成独立的小服务,当拆分的服务慢慢多起来的时候,我们会发现服务地址很难管理,传统的方式一 ...

随机推荐

  1. django html模板继承 {%block 标记名} {%endblock%}

    对于url文件 url(r'^tp1/', views.tp1) 对于views文件,跳转到tp1.html 同时将list列表传到前端 def tp1(request): list = [1, 2, ...

  2. ror笔记2

    在rails app的 config 文件夹中新建unicorn.rb内容如下 worker_processes 2 working_directory "/home/mage/boleht ...

  3. AngularJS1.6版本中ui-router路由中/#!/的解决方法 - zhuan

    本地编译出的文件可以正常运行,但是服务器编译后到了测试那里路由上就莫名的出现了/#!/,这导致了很多问题. 后来查了下是服务器编译器把AngularJS升级到了1.6版本,而我本地的依旧是1.5. 但 ...

  4. 双 MySQL 启动、停止脚本

    5.5 启动 #!/bin/bash # author: Wang Xiaoqiang # func: Start MySQL 5.5 pid=`netstat -lnpt | awk -F '[ / ...

  5. 前端开发之CSS篇三

    主要内容:  一.CSS布局之浮动     二.清除浮动带来的问题     三.margin塌陷问题和水平居中     四.善用父级的的padding取代子级的margin     五.文本属性和字体 ...

  6. 第五章 大数据平台与技术第11讲 MapReduce编程

    在大规模的数据当中,需要分发任务,需要进行分布式的并行编程.Hadoop这样一种开源的大数据分析平台. Map阶段 Reduce阶段:相同的键把它聚集到一起之后,然后通过Reduce方式把相同的键聚集 ...

  7. ios crash log

    1.IOS策略 1.1 低内存闪退 前面提到大多数crash日志都包含着执行线程的栈调用信息,但是低内存闪退日志除外,这里就先看看低内存闪退日志是什么样的.我们使用Xcode 5和iOS 7的设备模拟 ...

  8. linux系统/proc/stat信息与top的cup信息的联系及区别

    一. /proc 目录 Linux系统上的/proc目录是一种文件系统,即proc文件系统,与其它常见的文件系统不同的是,/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  9. spring4-3-AOP-基于配置文件

    1.建立业务类和切面类 2.在配置文件中配置bean 引入命名空间:

  10. Linux静态库与动态库详解

    引言 为了代码的复用性和模块化,我们常常使用一些库文件,在Windows操作系统下位.lib .dll作为静态库和动态库的后缀名. 在Linux下,静态链接库名字一般为libabcdef.a,其中ab ...