Overview
nftlb 용 스탠드 nftables로드 밸런서, iptables를 대체 할 차세대 리눅스 방화벽은 완전한로드 밸런서 및 트래픽 분배기로 작동하도록 조정됩니다.
nftlb nftables 규칙 관리자는 계층 2, 계층 3 및 계층 4에서로드 밸런싱을위한 가상 서비스를 생성하여 규칙 수를 최소화하고 구조를 사용하여 패킷을 효율적으로 일치시킵니다. 또한 프로그래밍 방식으로 nftlb와 상호 작용하고 자동화를 충족 할 수있는 유연성을 갖기 위해 쉬운 JSON API 서비스가 제공됩니다. 따라서 선호하는 상태 검사기를 사용하여 nftlb와 매우 쉽게 통합 할 수 있습니다.
의 철학 nftlb 가능한 가장 성능을 달성하기 위해 커널에 데이터 경로를 유지하는 것입니다,하지만 컨트롤 평면과 히스는 사용자 공간을 검사하여 동작을 쉽게 변경할 수있는 유연성을 가지며 나머지 리눅스 스택과 호환되도록합니다 .
Zevenet에서 우리는 완전한 기능을 갖춘로드 밸런서를 만들기 위해 수년 동안 iptables와 netfilter 인프라를 사용해 왔기 때문에 우리가 절약하고있는 그러한 접근 방식의 한계를 잘 알고 있습니다. nftlb.
nftlb가 필요한 이유는 무엇입니까?
리눅스 커널은 이미 IPVS 라 불리는 내부로드 밸런서를 계산하거나 LVS (Linux Virtual Server)로도 알려져 있습니다.이 소프트웨어는 완벽한 소프트웨어이며 오랫동안 사용 되어온 매우 안정적입니다. 하지만로드 밸런서에는 몇 가지 제한 사항이 있습니다. 커널 측은 사용자 공간에서 수행해야하는 작업에 사용되며 현재 NetFilter가 제공하는 인프라를 복제하는 특정 기능을 위해 사용되며 iptables 및 기타 소프트웨어 일부가 필요하면 필요합니다 더 복잡한 (투명한 프록시, 멀티 포트 또는 멀티 프로토콜과 같이). SNAT 및 DSR 토폴로지를 제공하지만 DNAT는 제공하지 않습니다.
iptables 방식을 사용하는 경우 주요 제한 사항은 가상 서비스에 의해 생성 될 규칙 수와 백엔드 수 (백엔드 당 최소 2 규칙과 여러 일치 항목 포함)와 백엔드 추가 횟수에 따라 증가하는 선형 복잡성입니다 . 규칙을 순차적으로 처리하면 너무 많은 규칙이 포함되는 경우 성능이 저하되며 고전적인 iptables 잠금 문제로 인해이 규칙은 더욱 심각해집니다. IPv6로드 밸런싱을 제공하기 위해서는 ip6tables라는 다른 명령을 사용하는 불편 함이 있습니다. 또한이 접근법은 DNAT (투명성을위한 대상 NAT) 및 SNAT (원본 NAT)로드 균형 조정을 제공하지만 DSR (직접 서버 리턴) 토폴로지에서는 작동하지 않습니다.
와 nftlb 기반 지주 우리는이 모든 문제를 저장합니다.
이 모든 토폴로지를 구축하고 하나에서 다른 토폴로지로 쉽게 변경할 수 있습니다.
기본적으로 멀티 포트 및 멀티 프로토콜을 처리 할 수 있습니다.
IPv4 및 IPv6 트래픽을 완벽하게 관리 할 수 있습니다.
로드 밸런싱에 필요한 모든 기능을 제공하기 위해 하나의 인터페이스 만 사용됩니다.
nftables는보다 표현력있는 언어를 제공하므로 2 규칙을 사용하여 일정한 복잡성으로 완벽한로드 밸런서를 구축 할 수 있습니다!
일치 항목은 가상 서비스별로 인덱싱되므로 모든 항목을 순차적으로 처리 할 필요가 없습니다.
규칙을 업데이트 할 때 잠금 문제가 없도록 RCU 하위 시스템이 제공됩니다.
데이터 경로는 커널 공간에 남아 있지만 제어 플레인의 사용자 공간에 유연성을 제공합니다.
그것은 입증되었습니다 그것은 LVS보다 더 빨리 10x를 수행 할 수 있습니다..
nftlb 기능
현재 nftlb 다음과 같은 기능을 제공합니다.
지원되는 토폴로지 : 대상 NAT, 원본 NAT, 직접 서버 반환 및 상태 비 저장 DNAT 이를 통해 단일 무장 및 이중 무장 네트워크 아키텍처에서로드 밸런서를 사용할 수 있습니다.
IPv4 및 IPv6 제품군 모두 지원.
멀티 레이어로드 밸런서 : 레이어 2의 DSR, 레이어 3에서의 프로토콜 불가지론에 기반한 IP 기반로드 밸런싱, 레이어 4에서 UDP, TCP 및 SCTP의로드 밸런싱 지원.
범위 및 포트 목록에 대한 다중 포트 지원
여러 가상 서비스 (또는 팜)가 지원됩니다.
스케줄러 사용 가능 : 가중치, 라운드 로빈, 구성 가능 해시 (IP, 포트, MAC 또는 이들의 조합) 및 대칭 해시.
시간 초과 (IP, 포트, MAC 또는 이들의 조합 당)로 구성 가능한 지속성 또는 클라이언트 - 백엔드 유사성 지원.
서비스 당 보안 정책 지원 : 화이트 및 블랙리스트 (수신), 사용자 공간 필터 대기열, 가짜 TCP 프레임 필터링, 설정된 최대 연결 수, 초당 TCP RST 제한, 초당 새로운 연결 제한 등.
백엔드 당 우선 지원.
JSON API를 통해 프로그래밍 방식으로 가상 서비스 및 백엔드를 실시간으로 관리합니다.
보안 키로 웹 서비스 인증.
자동화 된 테스트 베드가 포함되어 있습니다.
공식 자식 저장소 : https://github.com/zevenet/nftlb
ChangeLog에 : https://www.zevenet.com/knowledge-base/nftlb/nftlb-changelog/