@@ -16,6 +16,8 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
1616
1717### Envoy 컴포넌트 구조
1818
19+ ---
20+
1921<Tabs >
2022 <Tab label = " Basic" >
2123 <div style = { { textAlign: ' center' }} >
@@ -52,6 +54,11 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
5254 * 주요 기능은 raw byte 를 HTTP 메시지로 Convert 를 담당하고,
5355 * HTTP Header 조작, Retry 설정, Redirect, Timeout
5456 * 내부적으로 HTTP L7 Filter 들이 존재하여 부가적인 작업을 수행한다.
57+
58+ :::quote
59+ <b >Reference</b >
60+ https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/http_filters
61+ :::
5562 </Tab >
5663 <Tab label = " Cluster" >
5764 :::success
@@ -96,6 +103,12 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
96103 - 원래 목적지
97104 :::
98105
106+ :::quote
107+ <b>Reference</b>
108+ https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto
109+ https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/service_discovery
110+ :::
111+
99112 <BlueText>Cluster - Connection Pool</BlueText> <br/>
100113 * Cluster 는 Connection Pool 관리 기능도 수행한다.
101114
@@ -108,8 +121,8 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
108121 ` ` ` yaml
109122 " connect_timeout " : " 5s" , # ## Tomcat / Netty connection timeout 보다 작게 설정한다. (기본 값 5초)
110123 " typed_extension_protocol_options " : {
111- " envoy.extension_protocol_options " : {
112- " @type" :"type.googleapis.com/envoy.extensions.upostreams .http.v3.HttpProtocolOptions",
124+ " envoy.extensions.upstreams.http.v3.HttpProtocolOptions " : {
125+ " @type" :"type.googleapis.com/envoy.extensions.upstreams .http.v3.HttpProtocolOptions", ,
113126 " common_http_protocol_options " : {
114127 " idle_timeout" :"60s"
115128 # ## Tomcat / Netty idle timeout 설정보다 작게 설정한다.
@@ -122,6 +135,13 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
122135 }
123136 }
124137 ```
138+
139+ :::quote
140+ <b >Reference</b >
141+ https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-httpprotocoloptions
142+ https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#config-core-v3-http2protocoloptions
143+ :::
144+
125145 </Tab >
126146 <Tab label = " Flow" >
127147 :::success
@@ -143,6 +163,14 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
143163 * Listener 내부적으로 Listener Filters로 전달하고, Filter Chains를 순회하면서 요청을 처리하는데 적합한 Filter를 찾고 해당 Filter 가 요청을 처리한다.
144164 * Router Filter 는 요청에 적합한 Cluster 를 찾아서 해당 Cluster <BlueText >(Upstream 호스트 집단)</BlueText > 에게 트래픽을 Forwarding 한다.
145165 * Cluster 는 내부에 설정된 로드밸린싱 정책을 고려해서 적합한 Endpoint 를 선정하고, 매칭된 곳으로 트래픽을 전달한다. <BlueText >(To Upstream)</BlueText >
166+
167+ 다시 정리하면, 아래의 과정이다.
168+ 1 . ** 요청 수신** : Downstream → Envoy Listener (예: 0.0.0.0:8080)
169+ 2 . ** 필터 체인 실행** : Listener Filters → Network Filters → HTTP Filters
170+ 3 . ** 라우팅 결정** : Router Filter가 Route 규칙에 따라 Cluster 선택
171+ 4 . ** 로드밸런싱** : Cluster가 LB 정책으로 Endpoint 선택
172+ 5 . ** 요청 전달** : 선택된 Upstream Endpoint로 프록시
173+ 6 . ** 응답 반환** : Upstream → Envoy → Downstream
146174 </Tab >
147175 <Tab label = " xDS" >
148176 * Envoy 컴포넌트(Listener, Cluster, Filter...) 들을 등록하는 방식에는 Static, Dynamic 이 있다.
@@ -152,13 +180,25 @@ envoy 의 주요 컴포넌트 구조와 트래픽 처리 흐름(Listener -> filt
152180 <div style = { { textAlign: ' center' }} >
153181 <img src = " /img/post/envoy/xds.png" alt = " xds" style = { { display: ' inline-block' }} />
154182 </div >
183+
184+ ** 주요 xDS API 종류**
185+ - LDS (Listener Discovery Service): Listener 설정
186+ - RDS (Route Discovery Service): Route 설정
187+ - CDS (Cluster Discovery Service): Cluster 설정
188+ - EDS (Endpoint Discovery Service): Endpoint 설정
189+ - SDS (Secret Discovery Service): TLS 인증서 관리
155190 </Tab >
156191</Tabs >
157192
158193---
159194
160195### 📚 Reference
161196
162- - [ Envoy-internals 아키텍쳐 Overview by 북극 펭귄] ( https://cla9.tistory.com/191 )
197+ - [ Envoy 공식 문서] ( https://www.envoyproxy.io/docs/envoy/latest/ )
198+ - [ Listener] ( https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/listeners )
199+ - [ Cluster] ( https://www.envoyproxy.io/docs/envoy/latest/configuration/upstream/cluster_manager/cluster_manager )
200+ - [ Routing] ( https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_routing )
201+ - [ xDS API] ( https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol )
202+ - [ 아키텍처 설명 by 북극 펭귄] ( https://cla9.tistory.com/191 )
163203
164204<br /><br />
0 commit comments