windows中安装consul,及与Asp.Net Core API一起使用

学习网址: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);
            }

        }

    }

猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/96479111