[IstioCon 2021]为什么停止与Istio上的源地址连接?

刚刚阅读1回复0
zaibaike
zaibaike
  • 管理员
  • 注册排名1
  • 经验值203810
  • 级别管理员
  • 主题40762
  • 回复0
楼主

北京时间2月23日,在亚洲地域第二届街道社区领袖会议IstioCon 2021中,宏碁云原生动物开放源码项目组核心人物徐中虎登载了《Preserve Original Source Address within Istio》主题演说。

演说次要就包容三部门的内容:

统计数据流的接纳情景常用的统计数据流维持形式Istio统计数据流维持的计划统计数据流的接纳情景

统计数据流接纳情景多种多样,好比说:

1)单纯的会话维持,能按照应用法式的门商标,如前所述源IP做阻抗平衡,未来自统一应用法式的许诺,转发到统一办事项目实例;

2)用于UAC控造,常用的黑白名单设置;

3)出访条记和监视统计,出访条记和监视目标中包容虚拟世界的统计数据流,有助于开发人员阐发和Debug;

4)IP德律风(VoIP)和在线视频办事项目标寡所周知代表控造手艺SIP无线电通信链接是一类如前所述IP门商标区分接纳者的形式,源IP门商标关于SIP来说至关重要。

他们能看到差别的控造手艺情景BazoisIP的倚赖水平纷歧,关于某些强倚赖的情景,若是不克不及实现统计数据流的维持,那么Istio则不克不及应用于此情景。

常用的源IP维持形式及布景常识

在Istio等办事项目分层控造手艺呈现以前,寡所周知的办事项目出访数学模子总的来看。开发人员一般将统计数据办事项目摆设在企业阻抗平衡电子设备后面,以应对高并发、高可用的需求。企业透过阻抗平衡电子设备供给更多办事项目标同一出访入口,常用的阻抗平衡电子设备有硬件阻抗平衡F5,软件阻抗平衡LVS、HaProxy、Nginx等。差别阻抗平衡器供给更多的源IP门商标维持的形式不尽不异。

他们常用的源IP维持的形式从OSI收集数学模子L3-L7次要就分为:

1. L3

LVS,是Mach层的软阻抗,从根本原理上看归属于一次相连,性能归属于软阻抗中更高的,也是业界接纳最普遍的L3阻抗平衡器。LVS组织工做数学模子有NAT贸易形式、DR贸易形式、隧道贸易形式。他们次要就如前所述NAT贸易形式看一下LVS的统计数据流维持。

(1)当接纳者许诺抵达Director Server,那时许诺的统计数据统计数据流会先到Mach内部空间的PREROUTING链。那时统计数据流的源IP为CIP,最末目的IP为VIP。

(2) PREROUTING查抄发现统计数据流的最末目的IP是Yak,将统计数据流送至INPUT链, LVS次要就组织工做在INPUT链。

(3) IPVS对照统计数据流许诺的办事项目能否为集群办事项目,若是,修改统计数据流的最末目的IP门商标为后端办事项目器IP,接着将统计数据流zhigangyuePOSTROUTING链。那时统计数据流的源IP为CIP,最末目的IP为RIP ,在那个过程完成了最末目的IP的转换(DNAT),而统计数据流始末未变。

(4) POSTROUTING链透过选路,将统计数据流推送给Real Server。

HAProxy通明化统计数据传输贸易形式也是一类L3层的统计数据流维持形式,但是它组织工做在接纳者内部空间,是寡所周知的两次相连数学模子。1)接纳者详细来说与HAProxy创建一条相连,当接纳者许诺抵达HAProxy时,HAProxy以获取应用法式的IP门商标。

2)HAProxy组织工做在通明化统计数据传输贸易形式下,按照阻抗平衡战略选择一个虚拟世界的后端办事项目,接着存取应用法式的IP门商标,与后端办事项目创建捷伊相连。通明化全权倚赖socket的IP_TRANSPARENT

3)虚拟世界办事项目器响应统计数据流必需颠末HAProxy全权,因而,通明化统计数据传输还得倚赖个性化路由器的设置装备摆设以及TPROXY。

2. L4

TOA, TOA应用法式是如前所述三层协定(TCP)以获取虚拟世界源IP的办法,素质是将源IP门商标插入TCP协定的Options表头。宏碁云供给更多了TOA应用法式,接纳者只要在在Mach中安拆TOA模块,在接纳细穗能系统挪用的形式以获取源IP门商标。

Proxy Protocol是别的一类三层的统计数据流维持形式,协定国际尺度最早由HAProxy街道社区开展而来。其组织工做根本原理出格单纯,要求应用法式在TCP相连创建之后,应用统计数据推送之前,详细来说推送一个Proxy Protocol协定头,办事项目器透过解析协定头以获取虚拟世界的应用法式IP门商标。Proxy Protocol国际尺度要求应用法式和办事项目端同时全力撑持全权协定。那里Client在虚拟世界世界中能是Envoy、HAProxy、Nginx等全力撑持全权协定的阻抗平衡器。

3. L7

五层统计数据流维持的形式相对而言最单纯,更具代表性的是HTTP头x-forwarded-for,x-forwarded-for中能包容原始接纳者的IP门商标,高级语言HTTP库根本都能主动以获取统计数据流。

别的,开发人员能自定义协定类型,将应用法式的源IP门商标塞到协定帧。

Istio统计数据流维持窘境

他们从办事项目分层工具向和南北向别离来看一下,当前Istio办事项目分层中统计数据流以获取的障碍。

1)办事项目分层工具向办事项目出访时,因为Sidecar的注入,所有进出办事项目标流量均被Envoy拦截全权,当svcA出访svcB时,svcB的Sidecar Envoy与svcB创建一条相连,统计数据流是127.0.0.1,目标门商标也是127.0.0.1(将来是PodIP)。单纯从TCP通信的角度来看,svcB只能以获取到应用法式门商标是127.0.0.1。

2)Istio南北向办事项目出访中,接纳者许诺详细来说透过ELB办事项目全权转发到Istio的Ingress Gateway,接着Ingress Gateway再将许诺阻抗平衡到虚拟世界的办事项目实例。由图中可见,中间颠末的收集节点更多,同时包容ELB和Istio。统计数据流的维持愈加困难。

若何在Istio办事项目分层中以获取统计数据流

他们先来看一下Envoy中与统计数据流维持相关的根底才能,接着测验考试借助那些根本才能实现Istio办事项目分层中端到端的统计数据流维持计划。

Envoy供给更多了两个监听器级此外过滤器:统计数据流过滤器(“envoy.filters.listener.original_src”)和全权协定过滤器(“envoy.filters.listener.proxy_protocol”)。

1)统计数据流过滤器感化在Envoy的Inbound监听器,其组织工做根本原理是以获取下流相连的应用法式门商标,并以应用法式门商标为统计数据流与上游办事项目创建捷伊相连。素质上是IP_TRANSPARENT通明化统计数据传输,那一点对TCP统计数据流的以获取十分重要。前面他们介绍到通明化统计数据传输还必需处理IP包回程的问题,那一点他们留在后面再讲。2)全权协定过滤器也感化于监听器,次要就职责为解析Proxy Protocol协定,可在办事项目端以获取统计数据流,出格合适Ingress办事项目统计数据流以获取。3)Proxy Protocol Transport Socket,是Envoy与上游透过Proxy Protocol停止源IP维持的一类形式,其次要就构造全权协定头,并主动推送给上游全力撑持全权协定的办事项目。4)HTTP XFF(x-forwarded-for)主动注入,envoy能按照LDS HTTP相连办理设置装备摆设主动添加比来的下流应用法式的IP门商标到XFF中。

1. HTTP类协定源IP维持

那么能看到,工具向五层HTTP类协定能十分容易的透过添加XFF的形式,便利办事项目端以获取应用法式虚拟世界IP。其寡所周知的设置装备摆设如下:

Ingress办事项目出访情景,ELB供给更多的计划能分为TOA和Proxy Protocol两种。在TOA贸易形式下,必需在Ingress Gateway所在的节点安拆TOAMach模块才气使Ingress Gateway以获取原始应用法式IP门商标。在Proxy Protocol情景下,必需透过设置装备摆设envoy.filters.listener.proxy_protocol 过滤器才气使Ingress Gateway以获取虚拟世界客户IP。详细设置装备摆设如下,当然使能此过滤器必需十分小心,前提是确保所有进入Ingress Gateway的流量必然是Proxy Protocol。

两种贸易形式下,都需要设置装备摆设Ingress gateway使其全力撑持XFF主动添加, 别的能透过xff_num_trusted_hops额外设置装备摆设Envoy信赖的全权跳数,详细参考https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-for。

2. TCP源IP维持

Istio TCP统计数据流维持必需倚赖通明化统计数据传输和TPROXY,此特征曲到Istio 1.9才由我供给更多了完好的全力撑持。其接纳办法也十分单纯,接纳者只需设置Pod的Annotation 为http://sidecar.istio.io/interceptionMode: TPROXY。

Istio次要就透过以下设置装备摆设确保svcB和Sidecar Envoy之间透过svcA的门商标通信。

1)设置装备摆设统计数据流过滤器,Envoy就能存取下流应用法式的门商标(10.244.0.20)svcB创建相连。

2)设置装备摆设TPROXY和个性化路由器,确保svcB推送到10.244.0.20的统计数据流被Envoy领受。次要就是对统计数据流打标识表记标帜,接着按照自定义路由器,将非当地的统计数据流透过当地lo路由器。

-A PREROUTING -p tcp -m mark --mark 0x539 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff -A OUTPUT -p tcp -m connmark --mark 0x539 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff ip -f inet rule add fwmark 1337 lookup 133 ip -f inet route add local default dev lo table 133

Ingress TCP统计数据流维持相对更复杂,理论上除以上规则外,需要额外增加Proxy Protocol协定的全力撑持。在Ingress Gateway上设置装备摆设Proxy Protocol,

在svcB上设置装备摆设envoy.filters.listener.proxy_protocol,包管Envoy监听器以获取原始应用法式IP。

本文小结

源IP维持并非一个新颖的话题,然而他们在Istio办事项目分层中发现良多成熟的计划都黯然失效。说到底,那与Istio Sidecar的全权有莫大的关系,Istio Sidecar 主动注入间接招致了他们不克不及间接以个性化设置装备摆设处理统计数据流维持的问题。而是要连系Istio的设置装备摆设办理,实现同一的设置装备摆设计划。

本文按照本人在IstioCon 2021的分享整理而来,相关的案例demo都能在https://github.com/hzxuzhonghu/istio-demo

找到,希望对各人有所启发。

欢送点击下列链接存眷容器魔方,他们将为你供给更多:

容器魔方​www.zhihu.com/people/hua-wei-yun-she-qu他们每日更新关于云原生动物控造手艺动态、实战进阶、应用案例等;入群与行业控造手艺大牛,1万团云原生动物喜好者一路链接进修;不按期邀请云原生动物OG级控造手艺大咖分享控造手艺实战…………

0
回帖 返回网络科技

[IstioCon 2021]为什么停止与Istio上的源地址连接? 期待您的回复!

取消