시스템 요구사항
Cloudflare의 커넥터인 cloudflared는 라즈베리 파이, 개인 노트북, 데이터 센터의 서버 등 어디에나 효과적으로 배포할 수 있도록 가볍고 유연하게 설계되었습니다.
기존 VPN의 처리량이 서버의 메모리, CPU 및 기타 하드웨어 사양에 의해 결정되는 것과 달리, Cloudflare Tunnel의 처리량은 주로 시스템 소프트웨어에 구성된 포트 수에 의해 제한됩니다. 따라서 cloudflared 서버의 크기를 조정할 때 가장 중요한 요소는 예상되는 TCP 및 UDP 트래픽 처리량을 반영하여 시스템에서 사용 가능한 포트 수를 조정하는 것입니다.
권장 사항
대부분의 사용 사례에 대해 다음의 기본 구성을 권장합니다:
- 각 네트워크 위치당 2개의 전용 호스트 머신에서
cloudflared복제본을 실행합니다. 두 개의 호스트를 사용하면 서버 측 이중화 및 트래픽 분산이 가능합니다. - 각 호스트는 최소 4GB RAM과 4개의 CPU 코어로 크기를 조정합니다.
- 각 호스트의
cloudflared프로세스에 50,000개의 포트를 할당합니다.
이 설정은 일반적으로 8,000명의 WARP 사용자(호스트당 4,000명)의 트래픽을 처리하기에 충분합니다. cloudflared가 사용하는 실제 리소스 양은 초당 요청 수, 대역폭, 네트워크 경로 및 하드웨어를 포함한 여러 변수에 따라 달라집니다.
포트 수
cloudflared가 WARP 장치로부터 요청을 받으면 호스트 머신의 포트를 사용하여 요청을 평가하고 원본 서비스로 전달합니다. 모든 머신은 시스템 설계상 최대 65,535개의 포트로 하드웨어 제한이 있습니다. 따라서 다음 배포 모델을 권장합니다.
cloudflared는 전용 호스트 머신에 배포되어야 합니다.- 호스트 머신은
cloudflared서비스에서 사용할 수 있도록 50,000개의 포트를 할당해야 합니다.
포트 수 늘리기
Linux:
/etc/sysctl.d/ 디렉토리가 있는 경우:
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.d/99-cloudflared.conf
sudo sysctl -p /etc/sysctl.d/99-cloudflared.conf
그렇지 않은 경우:
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
Windows:
TCP 및 UDP에 대한 동적 포트 범위를 설정합니다.
netsh int ipv4 set dynamicport tcp start=11000 num=50000
netsh int ipv4 set dynamicport udp start=11000 num=50000
netsh int ipv6 set dynamicport tcp start=11000 num=50000
netsh int ipv6 set dynamicport udp start=11000 num=50000
Private DNS
DNS 쿼리는 다른 요청에 비해 더 많은 시스템 리소스를 사용합니다. 서비스 가용성을 최적화하려면 프라이빗 DNS 트래픽을 자체 Cloudflare Tunnel로 분리하는 것이 좋습니다.
ulimits
Linux 및 macOS에서 ulimit 설정은 사용 가능한 시스템 리소스를 결정합니다. cloudflared 서버에서 열린 파일(-n)에 대한 ulimit을 70000으로 설정하는 것을 권장합니다.
# 현재 ulimit 확인
ulimit -a
# 열린 파일 ulimit 설정 (현재 세션에만 적용)
ulimit -n 70000
예상 처리량
- TCP 트래픽: 포트를 거의 즉시 사용하고 해제합니다. 50,000개의 사용 가능한 포트가 있는
cloudflared인스턴스를 과부하시키려면 초당 50,001개의 TCP 요청을 지속적으로 생성해야 합니다. - UDP 트래픽:
- DNS 쿼리는 포트를 5초 동안 유지합니다. 초당 10,000개의 DNS 쿼리를 처리할 수 있습니다.
- 비-DNS UDP 트래픽은 연결 기간 동안 각 포트를 유지합니다.