System configuration
システム要件
私たちのコネクタ cloudflared は、Raspberry Pi、ノートパソコン、またはデータセンターのサーバーに効果的に展開できるように、軽量で柔軟に設計されています。
Unlike legacy VPNs where throughput is determined by the server’s memory, CPU and other hardware specifications, Cloudflare Tunnel throughput is primarily limited by the number of ports configured in system software. Therefore, when sizing your cloudflared server, the most important element is sizing the available ports on the machine to reflect the expected throughput of TCP and UDP traffic.
ほとんどのユースケースに対して、以下の基本構成を推奨します:
- 各ネットワークロケーションに対して、2台の専用ホストマシンで
cloudflaredレプリカ を実行します。2台のホストを使用することで、サーバー側の冗長性とトラフィックのバランスを取ることができます。 - 各ホストには最低4GBのRAMと4つのCPUコアを割り当てます。
- 各ホストの
cloudflaredプロセスに50,000 ポート を割り当てます。
このセットアップは通常、8,000 WARPユーザー(ホストあたり4,000)からのトラフィックを処理するのに十分です。cloudflared が使用するリソースの実際の量は、1秒あたりのリクエスト数、帯域幅、ネットワークパス、ハードウェアなど、多くの変数に依存します。追加のユーザーがオンボードされる場合や、ネットワークトラフィックが既存の トンネル容量 を超える場合は、その場所に追加の cloudflared ホストを追加することでトンネルをスケールできます。
cloudflared がWARPデバイスからリクエストを受信すると、ホストマシンのポートを使用してリクエストを評価し、オリジンサービスに転送します。システム設計上、すべてのマシンは最大65,535ポートにハードウェア制限されています。さらに、マシン上の各サービスには消費できるポートの数に制限があります。このため、以下の展開モデルを推奨します:
cloudflaredは専用ホストマシンに展開する必要があります。このモデルは通常適切ですが、専用ホストが不可能なサーバーレスまたはクラスター化されたワークフローがあるかもしれません。- ホストマシンは
cloudflaredサービス用に50,000ポートを利用可能にする必要があります。残りのポートはシステム管理プロセスのために予約されています。
Linuxで cloudflared に利用可能なポートの数を増やすには:
マシンに /etc/sysctl.d/ ディレクトリがある場合:
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.d/99-cloudflared.confsudo sysctl -p /etc/sysctl.d/99-cloudflared.confそうでない場合:
echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.confsudo sysctl -p /etc/sysctl.confWindowsで cloudflared に利用可能なポートの数を増やすには、TCPおよびUDPの 動的ポート範囲 ↗ を設定します:
netsh int ipv4 set dynamicport tcp start=11000 num=50000netsh int ipv4 set dynamicport udp start=11000 num=50000netsh int ipv6 set dynamicport tcp start=11000 num=50000netsh int ipv6 set dynamicport udp start=11000 num=50000LinuxおよびmacOSでは、ulimit 設定がログインユーザーに利用可能なシステムリソースを決定します。cloudflared サーバーで以下のulimitsを設定することを推奨します:
| ulimit | 説明 | 値 |
|---|---|---|
-n | 開いているファイルまたはファイルディスクリプタの最大数 | ≥ 70,000 |
現在のulimitsを表示するには、ターミナルを開いて次を実行します:
ulimit -aオープンファイルの ulimit を設定するには:
ulimit -n 70000cloudflared によってプロキシされるほとんどのプライベートネットワークトラフィックは、次の2つのカテゴリのいずれかに該当します:
- TCPリクエスト(より一般的で、リソース集約度が低い)
- UDPリクエスト(あまり一般的でなく、リソース集約度が高い)
TCPトラフィックはポートをほぼ瞬時に使用および解放します。これは、50,000の利用可能なポートを持つ cloudflared インスタンスを過負荷にするには、組織が1秒あたり50,001のTCPリクエストを継続的に生成する必要があることを意味します。
UDPトラフィックはよりユニークです。DNSクエリ - 通常はUDPトラフィックの大部分 - は、cloudflared のポートによって5秒間保持されます。非DNSのUDPトラフィックは、接続の期間中、各ポートを保持しますが、その期間は任意の長さになる可能性があります。これは、50,000の利用可能なポートを持つ cloudflared インスタンスを過負荷にするには、プライベートリゾルバに対して1秒あたり10,000のDNSクエリを継続的に生成するか、接続リセット率よりも短い時間内に累積で50,000の非DNS UDPリクエストを生成する必要があることを意味します。
私たちの 基本的な推奨事項 は、Cloudflare Tunnelの展開の出発点として機能します。ネットワークに関与する代表的なユーザーの集団が少なくとも1週間活動した後、独自のトラフィックパターンに応じてトンネルのサイズをカスタマイズできます。
トンネル容量を計算するには:
- トンネルを実行する際に メトリクスサービス を設定します。
- 約1週間後、次の トンネルメトリクス をクエリします:
cloudflared_tcp_total_sessionscloudflared_udp_total_sessions
- 総セッション数を総時間で割ることにより、平均 TCPリクエスト毎秒 と 非DNS UDPリクエスト毎秒 を計算します。
- プライベートDNSリゾルバで、平均 プライベートDNSリクエスト毎秒 を取得します。
- 値を私たちのサイズ計算機に入力します:
Metrics
Result
これらの結果を使用して、トンネルが適切にサイズされているかどうかを判断できます。トンネル容量を増やすには、cloudflared レプリカ を実行している同一のホストマシンを追加します。