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(),//服务启动多久后反注册
Interval = TimeSpan.FromSeconds(),//健康检查时间间隔,或者称为心跳间隔(定时检查服务是否健康)
HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址
Timeout = TimeSpan.FromSeconds()//服务的注册时间
}
});
}
 /// <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

    [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)服务发现  可以查看链接

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

在windows下.NET CORE 与Consul简单使用的更多相关文章

  1. ASP.NET Core 新建项目(Windows) - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新建项目(Windows) - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新建项目(Windows) 对于任何语言和框架,都 ...

  2. Windows下Anaconda的安装和简单使用

    Windows下Anaconda的安装和简单使用 Anaconda is a completely free Python distribution (including for commercial ...

  3. 如何使用在Windows 下AspNetCore Api 和 consul

    在Windows 下如何使用 AspNetCore Api 和 consul https://blog.csdn.net/sD7O95O/article/details/80750803 一.概念:什 ...

  4. windows下curl的安装和简单使用

    curl是利用URL语法在命令行方式下工作的开源文件传输工具.它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. 一 ...

  5. 开源一个windows下的定时任务框架,简单粗暴好用。

    这里是你想要的功能: 支持插件,将你要执行的任务编译成程序集放到框架的根目录下,再进行简单的配置就行了. 支持Corn表达式.想让任务在什么时候执行就在什么时候执行. 支持安装成windows ser ...

  6. Windows下 OpenSSL的安装与简单使用

    1. openssl的最新版本 最新版本是 openssl1.1.1 官方地址 https://www.openssl.org/source/ TLS1.3的协议(RFC8446)在2018.8.12 ...

  7. windows下Nginx与tomcat组合简单使用

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中瓦片资源越来越多,如果提高瓦片的访问效率是一个需要解决的 ...

  8. windows下使用RedisCluster集群简单实例

    一.开发环境 ruby环境准备 下载 64位的 RubyInstaller并安装 地址http://rubyinstaller.org/downloads/勾选下面三个不用配置环境变量 Image.p ...

  9. windows下使用vs code调试简单的C程序

    常使用visual studio code(vs code)打开.c文件,如果让vs code具备调试技能估计会比较有用 准备工作: 1. vs code安装插件:cpptools 2. window ...

随机推荐

  1. EasyUI 扩展自定义EasyUI校验规则 验证规则(常用的)

    $.extend($.fn.validatebox.defaults.rules, { CHS: { validator: function (value, param) { return /^[\u ...

  2. 算法学习--Day3

    今天搞了一波算法的哈希,代码难道不大,记录在这里吧. 题目描述     “臭味相投”——这是我们描述朋友时喜欢用的词汇.两个人是朋友通常意味着他们存在着许多共同的兴趣.然而作为一个宅男,你发现自己与他 ...

  3. EOJ3263:丽娃河的狼人传说(贪心)

    传送门 题意 分析 考虑将区间按右端点排序,再遍历区间,操作即可 建议以加方式写 trick 1.不需要判区间重合 代码 #include<cstdio> #include<cstr ...

  4. 退出ACM?

    我不知道为什么我有这样的想法,纵观CCCC,太弱太弱,再不把自己埋起来,狠起来,就真的非常菜了,去刷难题吧!我不管老郭的数据,只管自己的实力,每天三道难题CF的C题+总结.以及刷水题!!!(刷CF的B ...

  5. LuoguP2822 组合数问题(组合数,二维前缀和)

    P2822 组合数问题 输入输出样例 输入样例#1: 复制 1 2 3 3 输出样例#1: 复制 1 输入样例#2: 复制 2 5 4 5 6 7 输出样例#2: 复制 0 7 说明 [样例1说明] ...

  6. Spring 中的 18 个注解,你会几个?

    阅读本文大概需要 4 分钟. 作者:Java的小本家 @Controller 标识一个该类是 Spring MVC controller 处理器,用来创建处理 http 请求的对象. @RestCon ...

  7. print打印

    print打印输出的优点是简单直接粗暴有效,就是用print()把可能有问题的变量打印出来看看缺点是将来还得删掉它,想想程序里到处都是print(),运行结果也会包含很多垃圾信息 __________ ...

  8. Jquery | 基础 | 慕课网 | (*选择器)

    原生JS var elements1 = document.getElementsByTagName('*'); JQ var elements2 = $("*"); <!D ...

  9. first-child和last-child选择器 nth-child(n)第几个元素 nth-last-child(n)倒数第几个元素

    :first-child 和  :last-child 分别表示父元素中第一个 或者  最后一个 子元素设置样式,如上图

  10. python高级函数

    1 函数 1.1 函数即变量 函数定义:把一个函数体作为变量赋值给一个函数名,同时函数体存放到内存中. 函数调用:根据函数名去内存中寻找对用的函数体,找到了就执行. >>> def ...