上篇主要介绍了下docker和consul集群的部署
https://blog.csdn.net/qazlj/article/details/86742532
下面接着介绍下业务系统接入到Consul服务发现,以及结合Ocelot API网关进行接口访问
通过netcore分别创建一个webapi应用,这里通过应用内写代码注册到我们部署好的Consul集群中,
Nuget安装Consul包
创建一个健康检查控制器,供Consul服务调用,(这里不是必须的,只要是个能正常响应的接口地址就行)
[Produces("application/json")]
[Route("api/Health")]
public class HealthController : Controller
{
// 状态码是200设置此服务是健康的状态,否则是故障状态。
[HttpGet]
public IActionResult Get() => Ok("ok");
}
appsettings.json添加配置
"Service": {
"Name": "webapp1", //服务名
"IP": "172.172.0.10", //这个应用可访问的ip
"Port": "80" //访问应用的端口
},
"Consul": {
"IP": "172.172.0.5",//注册到Consul服务
"Port": "8500"
}
根据配置文件创建两个实体类
public class ConsulService
{
public string IP { get; set; }
public int Port { get; set; }
}
public class HealthService
{
public string Name { get; set; }
public string IP { get; set; }
public int Port { get; set; }
}
创建一个Consul注册服务
public static class ConsulBuilderExtensions
{
// Consul服务注册
public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app, IApplicationLifetime lifetime, HealthService healthService, ConsulService consulService)
{
var consulClient = new ConsulClient(x => x.Address = new Uri($"http://{consulService.IP}:{consulService.Port}"));//请求注册的 Consul 地址
var httpCheck = new AgentServiceCheck()
{
DeregisterCritic