회사 개요 #
nftlb는 netfilter/nftables Linux 네트워킹 스택을 기반으로 합니다. 이 새로운 스택을 통해 현재의 로드 밸런싱 설계에 필요한 새로운 개념과 기능을 제공받을 수 있습니다.
이 문서는 nftables 로드 밸런서 데이터 경로와 제어 경로가 어떻게 설계되었는지에 대한 전반적인 이해를 제공하는 것을 목표로 합니다.
데이터 경로 후크 #
이는 nftlb가 구성 가능한 체인을 활용하는 Netfilter 후크입니다. 백엔드로 전달된 기존 연결을 가속화하기 위해 연결 추적 오프로드와 같은 새로운 개념이 포함되어야 합니다.
------------ | DNSBL | ------------ | 큐 수신 | 프리라우팅 포워드 포스트라우팅 ------------ ------------- -------------- ------------ ------- -------------- ------- | 필터 | 필터 | 필터 | 필터 | nat | | 필터 | nat | | 0 | 50-99 | 100 | -150 | 0 | | 0 | 100 | --> | | | 보안 정책 |-( Conntrack )-> | 보안 제한 | |-( 라우팅 )-> | | --> | | | 클러스터링 | 플로우 테이블 | DSR | VS{} | 도우미 | dNAT | VS{} | 플로우 오프로드 | | sNAT | | | | 무중단 dNAT | | 마크 | -------------- ------- ------------ ------------ ------------ ------------ ------------ ------------
입구 #
(0) 필터: 클러스터링 관리를 위해 예약되어 있습니다. 아직 nftlb에 포함되지 않았습니다.
(50-99) 필터: 플로우 테이블 가속을 위해 예약되었습니다. 아직 nftlb에 포함되지 않았습니다.
(100) 필터: 보안 정책(블랙리스트 및 화이트리스트), 직접 서버 반환 및 Stateless dNAT 토폴로지를 위해 순서대로 예약됨.
사전 라우팅 #
(-150) 필터: 가상 서비스 또는 백엔드별 보안 제한을 위해 예약됨. 예: 최대 연결 수, 초당 TCP RST 제한, 초당 TCP SYN 제한, 엄격하지 않은 TCP 연결 삭제, DNSBL 서비스 대기열, 가상 서비스 및 백엔드 표시, 도우미 사용, 가상 서비스당 입력 연결 로깅.
(0) 자연: 대상 NAT 변조를 위해 예약됨.
앞으로 #
(0) 필터 : 유량 오프로드용으로 예약됨. nftlb에 아직 포함되지 않음.
포스트라우팅 #
(100) nat : 대상 NAT 맹글링을 위해 예약되어 있습니다.
제어 경로 #
nftlb 제어 경로는 API를 갖춘 간단한 http 서버나 JSON 형식의 구성 파일을 허용하는 독립 실행형 바이너리를 제공하는 데몬으로 설계되었습니다.
------------- 번역 ------------- -------- JSON API | | objs에서 nft로 | | netlink | | ------------> | http 서버 | --------------> | libnftables | --------> | kernel | | | | | | | | ------------- | ------------- -------- | netlink | ---------------------------------------