学习网址:https://blog.csdn.net/sD7O95O/article/details/80750803 不会的,不了解概念的先看这个。
consul下载windows64位zip文件:https://www.consul.io/downloads.html ,下载后解压得到consul.exe文件。
开发者模式安装。于单个服务器的环境,不用于生产,开发者模式不保存任何的状态。
1、cmd先进入consul.exe所在路径,再输入下面的命令。
consul.exe agent -dev
输入上述命令后,即启动本机consul成功。
客户端地址为,127.0.0.1:8500 DNS为8600
2、向consul注册一个Asp.Net Core Api项目,并进行健康检查。
Startup.cs 中的 configure方法中,写如下代码:
扩展方法如下:
public static class ApplicationBuilderExtension
{
private static readonly Logger _logger = SelfLogManage.GetLog(typeof(ApplicationBuilderExtension));
//向consul注册服务,以进行安全检查
public static void UseConsul(this IApplicationBuilder app, IApplicationLifetime appLife)
{
try
{
var consulClient = new ConsulClient(
(x =>
x.Address = new Uri("http://127.0.0.1:8500"))
); // 请求注册的Consul地址(确保该 consul 存在 , 否则影响本项目运行)
//config consul health check
var healthCheck = new AgentServiceCheck
{
//服务启动后多久注册
DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//after app start register service time
//服务检查时间间隔,心跳间隔
Interval = TimeSpan.FromSeconds(30),
//健康检查地址(可为本项目接口或其他项目接口) 即使检查地址失败也不会影响本项目运行
HTTP = "http://localhost:54425/api/health",
Timeout = TimeSpan.FromSeconds(5)
};
//service register
var registration = new AgentServiceRegistration
{
Checks = new[] { healthCheck },
Address = "localhost",
Port = 54425,
ID = Guid.NewGuid().ToString(),
Name = "ConsulHealthCheck-API",
Tags = new string[] { "consul", "check" }
};
//服务启动时注册
consulClient.Agent.ServiceRegister(registration).GetAwaiter().GetResult();
//service Deregister when app stop
appLife.ApplicationStopped.Register(() =>
{
//服务停止时取消注册
consulClient.Agent.ServiceDeregister(registration.ID).GetAwaiter().GetResult();
});
}
catch (Exception e)
{
Environment.Exit(-1);
}
}
}