今日鸡汤:
就像余华那样:“我不再装模作样的拥有很多友人,而是回到孤单之中,以真正的自我开始新的生活。”
毕竟,只有自己能和自己呆一辈子,是吧。
今天看看Istio流量治理的各个组件:
Istio是如何通过VirtualService进行路由规则配置的?
VirtualService定义了对特定目标服务的一组流量规则,形式上为一个虚拟服务,将满足条件的流量都转发到对应的服务后段。通过VirtualService的配置,应用在访问目标服务时,只需要指定目标服务的地址即可,不需要额外指定其他目标资源的信息。在实际请求中到底将流量路由到由哪种特征的后端,就基于在VirtualService中配置的路由规则执行。
VirtualService包含什么字段?
VirtualService 包含hosts和gateway这两个公共字段,以及http、tcp和tls三个复合字段。
Gateway描述应用流量规则的Gateway,VirtualService描述的规则可以作用到网格里的sidecar和入口的Gateway。
- 当服务只是在网格内访问时,gateway可以省略
- 当服务只在网格外访问,配置要关联的Gateway,表示相应Gateway进来的流量要执行对应的规则。
- 当服务在网格内外都访问时,外部访问的Gateway和"mesh"字段都要配置在这里。
HTTPRoute用于处理HTTP流量,使用http字段的规则表示:满足HTTPMatchRequest条件的流量都被路由到HTTPRouteDestination,执行HTTPRedirect、HTTPRewrite、HTTPRetry、HTTPFaultInjection、CorsPolicy等策略。
TLSRoute用于处理非终结的TLS和HTTPS的流量,使用SNI做路由选择。匹配TLSMatchAttributes条件的流量都会路由到RouteDesitination。
所有不满足HTTP和TLS条件的流量都会用TCPRoute 。
Istio是如何通过DestinationRule进行目标规则配置的?
DestinationRule定义了满足路由规则的流量到达后端的访问策略。在Istio可以配置目标服务的负载均衡策略、连接池大小、异常实例驱除等规则。
DestinationRule 与VirtualService有什么区别?
VirtualService 描述的是满足什么条件的流量被哪个后端处理,而DestinationRule 描述的是这个请求到达某个后端后应该怎么处理。
DestinationRule的流量策略有哪些?
使用TrafficPolicy来定义规则内容,包括负载均衡、连接池大小、异常点检测等。
- 负载均衡设置(loadBalancerSettings):支持4种负载均衡算法,轮询(ROUND_ROBIN)、最少连接(LEAST_CONN)、随机选择(RANDOM)、不做负载均衡(PASSTHROUGH)。
- 连接池设置(ConnectionPollSettings):配置阈值防止一个服务的失败级联影响到整个应用。包括TCP连接池配置、HTTP连接池配置。
- 异常实例检测设置(OutlierDetection):定期考察被访问服务实例的工作情况,连续访问异常时隔离服务。
DestinationRule的应用场景有哪些?
- 定义Subset,将流量路由到不同的Subset实例上。
- 服务熔断,使用connectionPool设置最大请求和超时时间,使用outlierDetection设置隔离时间和实例数。
- 负载均衡。
- TLS认证配置,设置模式为ISTIO_MUTUAL开启双向TLS。
Istio是如何通过Gateway进行服务网关配置的?
Istio通过Gateway将网格内的服务发布成外部可访问的服务,还可以通过Gateway配置外部访问的端口、协议与内部服务的映射关系。
Gateway如何与VirtualService配合使用的?
Gateway定义了服务从外面怎么访问,VirtualService 定义了匹配到内部服务后怎样流转。
Gateway有哪些应用场景?
- 将网格内的HTTP服务发布为HTTP外部访问。
- 将网格内的HTTPS服务发布为HTTPS外部访问。 内部服务本身为HTTPS服务,Istio Gateway的协议为HTTPS,TLS模式为 PASSTHROUGH,表示Gateway只透传应用程序提供的HTTPS内容。
- 将网格内的HTTP服务发布为HTTPS外部访问。内部服务为HTTP服务,借助Gateway的配置提供HTTPS的对外访问能力。这里,Gateway协议为HTTPS,TLS 模式为SIMPLE,表示Gateway提供标准的单向TLS认证。
- 将网格内的HTTP服务发布为双向HTTPS外部访问。在Gateway上开放HTTPS服务,Gateway的模式设置为MUTUAL。
- 将网格内的HTTP服务发布为HTTPS外部访问和HTTPS内部访问。Gateway模式为SIMPLE。
Istio是如何通过ServiceEntry进行外部服务配置的?
ServiceEntry可以把外部服务加入Istio的服务发现,注册到网格中。
网友评论