Cloudflare는 Rust로 작성된 자체 프록시인 Pingora로 전환했습니다.

Cloudflare, NGINX에서 Pingora로 마이그레이션

Pingora는 Rust를 사용하여 Cloudflare에서 만든 새로운 HTTP 프록시입니다.

클라우드플레어 공개 최근에 누가 이주해 프록시를 사용하기 위한 콘텐츠 전송 네트워크 «핑고라», Rust로 작성된 것이 눈에 띕니다. 그만큼 새 프록시 교체됨 Lua 스크립트를 사용한 NGINX 서버 기반 구성으로 하루에 XNUMX억 개 이상의 요청을 처리합니다.

전문 프록시 «Pingora»로의 전환을 통해 새로운 기능을 구현하고 안전한 메모리 작업으로 보안을 강화할 수 있었을 뿐만 아니라 성능 및 리소스 절약도 크게 향상되었습니다.

Pingora 기반 솔루션은 Lua를 사용할 필요가 없으며 Cloudflare의 로드 최적화 아키텍처를 사용하여 동일한 양의 트래픽을 처리하면서 CPU 리소스를 70%, 메모리를 67% 적게 사용합니다.

오랫동안, NGINX 스크립트를 기반으로 한 사용자와 최종 서버 간의 트래픽 프록시 시스템 그리고 루아 Cloudflare의 요구 사항 충족그러나 네트워크가 성장하고 복잡성이 증가함에 따라 보편적인 해결책은 충분하지 않았습니다, 확장성 및 고객을 위한 새로운 기회 구현의 제한 사항 및 성능 측면 모두에서.

특히 단순한 게이트웨이와 로드밸런서를 넘어 기능을 추가하는데 어려움이 있었다. 예를 들어, 서버가 요청을 처리할 수 없는 경우 다른 HTTP 헤더 집합을 제공하여 요청을 다른 서버로 리디렉션해야 했습니다.

건축물 대신 별도의 작업 프로세스(작업자)로 분할된 요청으로, Pingora는 다중 스레딩 모델을 사용합니다., Cloudflare의 사용 시나리오(통계적 변화가 큰 다양한 사이트의 트래픽 집중도가 높음)에서 CPU 코어 간에 리소스를 보다 효율적으로 배포했습니다.

특히 nginx의 프로세스에 불균형 요청을 바인딩하면 CPU 코어에 불균형적인 로드가 발생하여 리소스 집약적인 요청과 I/O 차단으로 인해 다른 요청의 처리 속도가 느려졌습니다.

또한 연결 풀을 컨트롤러 프로세스에 바인딩하면 다른 컨트롤러 프로세스에서 이미 설정된 연결을 재사용할 수 없으므로 컨트롤러 프로세스 수가 많을 때 효율성이 저하됩니다.

핑고라 도입으로 수술횟수 160배 단축 가능 새로운 연결 설정 재사용 요청 비율을 87,1%에서 99,92%로 늘립니다. 감소된 재연결 및 CPU 코어의 보다 효율적인 사용 외에도 새 프록시의 성능 향상은 주로 nginx와 함께 사용되는 느린 Lua 드라이버의 제거로 인한 것입니다.

Rust 언어는 고성능을 허용하기 때문에 선택되었습니다. 메모리 안전 도구의 가용성과 결합됩니다. 자격을 갖춘 Cloudflare 엔지니어와 코드 검토에도 불구하고 C 언어로 작성된 프로그램은 메모리 문제(예: HTML 파서의 취약성)로 이어지는 버그를 피할 수 없다고 언급되었습니다.

새로운 코드에 관해서는 Pingora의 크래시 분석 사례에 대해 이야기했는데, 이는 애플리케이션의 문제가 아니라 Linux 커널의 버그 및 하드웨어 오류로 밝혀졌습니다.

또한, 최근에 열리는 Open-Source Summit Europe 컨퍼런스에서 Linus Torvalds가 Linux 커널에 Rust 언어에 대한 지원을 포함하는 것에 대해 언급한 것을 알 수 있습니다. 커널 6.0에는 Rust 언어로 장치 드라이버를 개발하기 위한 패치가 포함되어 있지 않지만 Linus에 따르면 커널 6.1에서 허용될 가능성이 높으며 통합을 활용하지 못할 것입니다.

보안에 대한 긍정적인 영향 외에도 Rust에 대한 지원을 추가하는 이유로 Linus는 새로운 참가자의 커널 작업에 대한 관심을 높일 수 있는 기회를 잡았습니다. 이는 고령의 베테랑의 맥락에서 중요합니다.

최종적으로 그것에 대해 더 많이 알고 싶다면에서 세부 정보를 확인할 수 있습니다. 다음 링크.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.