2021年7月29日星期四

.Net Core微服务——Consul(3):健康检查

继续上一篇的话题,顺便放上一篇的传送门:点这里。

健康检查

经过之前的操作,我的consul已经支持自动扩展,并且调用也很靠谱。但是这里有个问题,一旦服务列表里的某个服务挂了,consul并不知道,还是会把实际无效的地址返回给我,就算重启consul容器也无法刷新到最新的状态。所以,咱们要监控服务可用性,主动区分出不可用服务,这种手段,就称之为健康检查。

进入编码环节。老规矩,还是进入到之前我封装好的注册方法,在注册时增加健康检查的内容:

       client.Agent.ServiceRegister(new AgentServiceRegistration()   {    ID = $"server {ip}:{port}",    Name = "shenzhen-ma",    Address = ip,    Port = int.Parse(port),    Tags = new string[] { weight },    Check = new AgentServiceCheck()    {     Interval = TimeSpan.FromSeconds(10),//每隔10秒发起检查     HTTP = $"http://{ip}:{port}/v1/client/base/index",//检查请求地址     Timeout = TimeSpan.FromSeconds(5),//超时时长5秒     DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10)//超过10秒还没能连接到服务,就开始注销本服务    }   });

变色部分就是健康检查的配置了。根据上面的配置,consul会周期性发起健康检查,并且根据结果自动移除不可用的服务。

这次我要严谨一些,用真实的远程服务器来模拟生产环境。手头服务器太多,很多有项目在跑。仔细翻了翻,发现还有两台相对空闲的服务器,一台是win server,另一台centos,嘿嘿,正好。centos做consul服务器,win服务器用来做下游调用方。

先把consul搞起来:

 进去访问下:

 OK了,现在转到另一台服务器跑几个客户端。这里偷个懒,直接把可运行文件拷贝过去,哈哈:

 看下consul控制台:

 还是熟悉的shenzhen-ma,两个服务已经稳稳的待在分组列表里了。注意我框起来的位置,它表示服务已经通过了健康检查。这时候我把5051这个程序关掉,再来看看:

 5051状态自动更新成failing,而且没过一会儿,它就会自动移除。5050这时候去再去访问,就访问不到5051了:

 

 再然后偷偷把5051跑起来,重新调用:

:http://www.30bags.com/a/413886.html
四川省德阳市绵竹市发生4.0级地震_蛙步报告 :http://www.30bags.com/a/409990.html
四川省第七届乡村文化旅游节(秋季)在宝兴开幕:http://www.30bags.com/a/425293.html
四川省旅游景区有序开放:http://www.30bags.com/a/426350.html
公么吃奶摸下面非常好 强壮的公么征服我厨房:http://lady.shaoqun.com/a/247964.html
口述办公室添的我好爽 小宝贝你下面都湿透了:http://lady.shaoqun.com/a/247976.html
男友压着我在镜子前做 她的双峰压在玻璃窗上:http://lady.shaoqun.com/m/a/247490.html
招生在高校旁边开酒店的推广方式有争议:http://lady.shaoqun.com/a/428527.html
为什么大学附近有那么多小旅馆?大学生不都住校园吗?:http://lady.shaoqun.com/a/428528.html
大学周边的酒店往往供不应求。他们在里面做什么?你有过难忘的经历吗?:http://lady.shaoqun.com/a/428529.html
女人给你这四个暗示是因为想和你发生关系!:http://lady.shaoqun.com/a/428530.html

没有评论:

发表评论