Consul .netcore
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的更多相关文章
- Asp.Net 技术
Asp.Net 技术Nuget 管理器Spring.NET 框架Spring.core 包 微服务Consul .NetCore 框架:Spring.net Nhibernate 框架Dapper.n ...
- 微服务(入门二):netcore通过consul注册服务
基础准备 1.创建asp.net core Web 应用程序选择Api 2.appsettings.json 配置consul服务器地址,以及本机ip和端口号信息 { "Logging&qu ...
- 微服务(入门三):netcore ocelot api网关结合consul服务发现
简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...
- 微服务(入门一):netcore安装部署consul
环境准备 vs开发环境:vs2017 consul版本: 1.4.4 netcore版本:2.1 安裝Consul 1.从官网下载consul到本地,选择系统对应的版本进行下载到本地,下载地址:h ...
- .netcore consul实现服务注册与发现-集群完整版
原文:.netcore consul实现服务注册与发现-集群完整版 一.Consul的集群介绍 Consul Agent有两种运行模式:Server和Client.这里的Server和Clien ...
- .netcore consul实现服务注册与发现-单节点部署
原文:.netcore consul实现服务注册与发现-单节点部署 一.Consul的基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分 ...
- .netcore consul实现服务注册与发现-集群部署
一.Consul的集群介绍 Consul Agent有两种运行模式:Server和Client.这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关 ...
- NetCore项目实战篇06---服务注册与发现之consul
至此,我们的解决方案中新建了三个项目,网关(Zhengwei.Gateway).认证中心(Zhengwei.Identity)和用户资源API(Zhengwei.Use.Api).当要访问用户API的 ...
- .NetCore快速上手Consul,留给自己一点思考的空间
互联网热潮下,"微服务"技术架构成为了一种高大上的技术,其顾名思义就是将传统的大的业务服务拆分成独立的小服务,当拆分的服务慢慢多起来的时候,我们会发现服务地址很难管理,传统的方式一 ...
随机推荐
- Django templates 和 urls 拆分
如果在Django项目 下面新建了blog和polls两个APP应用,在每个APP下面都各自新建自己的url和templates,那么我们需要如何进行项目配置呢? INSTALLED_APPS = [ ...
- JavaScript字符串转换日期
JavaScript字符串转换日期 方法1:function strToDate(str){ var val=Date.parse(str); var newDate=new Date(val ...
- C++提高编译与链接速度的资料
1,https://blog.csdn.net/lihao21/article/details/47610309 2,https://www.zhihu.com/question/37330979 3 ...
- IOS数据持久化存储之SQLite3第三方库FMDB的使用
SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3.在IOS中使用SQLite如果使 ...
- 浅谈JobExecutionContext&JobDataMap
- Simple Cubemap Reflection
[Simple Cubemap Reflection] Cubemap加在MainTex上,所以Property需要按如下定义: 注意_Cubemap的类型是CUBE. 使用Cubemap,需要计算反 ...
- 网站转为https协议,苹果商店应用转为https协议总结
log_format www.44755.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...
- iOS导航栏自由缩放头像效果
效果图: 上代码: 先给一个self.navigationItem.titleView ,然后再放个ImangeView添加到titleView上: UIView *titleView = [[UIV ...
- Oracle-属性查询
1. 查询表的部分字段属性 select t.*, c.comments from user_tab_columns t, user_col_comments c where t.table_name ...
- sqlserver三种数据集合运算
2.1 并集运算(UNION) (1)UNION ALL(不删除重复行) Code: 1 SELECT empID,empName,position,degree 2 FROM Employees ...