服务发现与负载均衡
本文讲述Istio在服务网格中,如何对交互的服务进行负载均衡。
服务注册:Istio假定存在一个服务可以将pod/VM的地址信息注册上去。假设一个新的服务可以自动注册上去,而当服务不健康的时候可以自动移除。管理平台,比如说Kubernetes, Mesos 已经提供了类似功能在容器的基本应用中。基于VM的应用程序存在大量的解决方案。
**服务发现:**领航者消费的信息来自于服务注册,提供一个未知平台的服务发现接口。在网格中,使者实例完成了服务注册,相应地动态更新负载均衡池数据。
如上图,在网格中的服务可以互相使用DNS。所有HTTP请求都会通过使者并实现自动路由。使者分布在负载均衡池里的服务请求。使者支持复杂的负载均衡算法,Istio允许三种方式:轮询,随机,权重最少的请求。
为了负载均衡,使者周期性地检查在池里面的每个实例的健康状态。使者允许断路器按照规则来分类实例,健康与不健康基于健康检查API的返回的失败率。另一方面,当大量的检查失败超过了规定的界限,它将会从池里面被剔除。同样的,当大量的健康健康数据超过规定的界限,这个实例就会重新加入负载均衡池。你可以在失败处理中找到更多关于使者的失败处理特性。
服务健康检查时,不断响应503状态码。发生了这样的事情,那么服务将很快地从负载均衡池中移除。
(全文完)
领取专属 10元无门槛券
私享最新 技术干货