본문 바로가기

study

envoy proxy 에 대하여

- 프록시 서버에 대한 포스팅(과거)

https://velog.io/@sgyos000/%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84

 

프록시 서버

proxy

velog.io

- 소개

Lyft 사에서 제작을 시작하고 CNCF 의 세번째 Graduated Project인 프록시이며,

아래와 같은 목적으로 제작되었다.

“The network should be transparent to applications. When network and application problems do occur it should be easy to determine the source of the problem.”

네트워크는 애플리케이션에 투명해야하며, 장애가 발생했을시 어디에서 문제가 발생했는지 쉽게 파악할 수 있어야 한다.
CNCF(Cloud Nativa Computing Foundation)란?
마이크로서비스 및 컨테이너 기반의 클라우드와 관련된 오픈소스 프로젝트를 관리함으로써 생태계를 확장해 나가기 위한 리눅스 재단 산하의 단체이다. 쿠버네티스, 프로메테우스 등의 프로젝트 또한 소속되어 있다.

- 기능

1. Out of process architecture

  모든 envoy 는 각 어플리케이션마다 함께 실행되도록 설계된 self-contained 프로세스이다. 각 어플리케이션은 로컬호스트 envoy 와 통신하며 네트워크 토폴로지를 인식하지 못한다. 모든 프로그래밍 언어와 프레임 워크에서 사용 가능하고 배포의 투명성을 확보한다.

 

2. L3/L4 filter architecture

   플러그인 방식의 필터 체인을 통해 TCP/UDP 프록시 작업을 수행한다.

 

3. L7 filter architecture

  버퍼링, 속도 제한, 라우팅 등 http 연결관리 서브시스템 기능을 사용할 수 있다. envoy 는 L7 방식을 사용하여 L4에 비해 성능이 느릴 수 밖에 없다.

Why?
TCP 레벨에서는 IP, PORT 정보를 확인해서 통신 허용 여부를 판단 하는데,
HTTP 는 전체 request 를 읽고 파싱해야하며 헤더의 정보를 확인하고 무엇을 결정한다. 그리고 전체 reponse를 읽어와 클라이언트로 보내주어야 하기 때문이다.

  이외에도 circuit break( 어떤 서비스에서 오류가 발견되면 더이상 리소스 차지 않도록 닫아버리는 기능 ) 같은 여러 기능이 있다.


- 작동방식

Downstream ⇒ Listener ⇒ Filter ⇒ Cluster(Upstream)
  • Downstream: Envoy 에게 요청을 보내는 호스트
  • Listener: Downstream 으로부터 요청을 받는 부분
  • Filter: 수신된 메시지에 대해 라우팅, 프로토콜 변환, 통계 생성과 같은 다양한 작업을 수행하는 부분
  • Upstream: Envoy 가 요청을 보내는 호스트
  • Cluster: Upstream 호스트의 그룹

- 배포방식

  • Front envoy proxy
    특정 서비스가 아니라 전체 시스템 앞에 위치하는 프록시로 클라이언트에서 들어오는 호출을 받아서 각각의 서비스로 라우팅 한다. URL 기반으로 라우팅 하는 기능 이외에도, TLS(SSL) 처리하는 역할을 할 수 있다.

  • Service to service ingress listener
    특정 서비스 앞에 위치하는 배포 방식으로, 해당 서비스에 들어오는 트래픽을 처리한다. 트래픽에 대한 버퍼링이나 circuit breaker 와 같은 역할을 수행한다.

  • Service to service engress listener
    특정 서비스 뒤에 위치하는 배포 방식으로, 해당 서비스로부터 나가는 호출에 대하여 대상이 되는 서비스의 로드 밸런싱, 호출 횟수 통제와 같은 기능을 수행한다.

  • External service egress listener
    내부 서비스에서 외부 서비스로 나가는 트래픽을 관리하는 역할인데, 외부 서비스에 대한 일종의 대행자 역할이다.
참고 링크
https://bcho.tistory.com/1295
https://sphong0417.tistory.com/8
https://jwher.github.io/envoy
https://gruuuuu.github.io/cloud/envoy-proxy/

'study' 카테고리의 다른 글

boj 13300 javascript  (0) 2022.06.18
C 언어 기초  (0) 2022.06.17
컴퓨팅 사고  (0) 2022.06.15
Flutter 하이브리드 환경에서 PASS 앱 연동  (6) 2022.01.05
RN vs Flutter  (0) 2021.10.17