INTEGRITY Dokumentace

Veřejné load balancery

A veřejný load balancer umožňuje rozkládat provoz mezi servery, na kterých běží vaše publikované aplikace.

Když přidáte trasa publikované aplikace do vašeho Cloudflare Tunnel, Cloudflare vygeneruje subdoménu domény cfargotunnel.com s UUID vytvořeného tunelu. Aplikaci můžete přidat do fondu load balanceru pomocí <UUID>.cfargotunnel.com jako adresa endpointu a zadáním hostname aplikace (app.example.com) v hlavička Host endpointu. Load Balancer nepodporuje přímé přidání app.example.com jako endpoint, pokud je služba za Cloudflare Tunnel.

Vytvořit veřejný load balancer

Předpoklady

Vytvořte load balancer

Chcete-li vytvořit load balancer pro publikované aplikace Cloudflare Tunnel:

  1. V dashboardu Cloudflare přejděte na Load Balancing stránce.

    Přejděte na Load Balancing ↗
  2. Vyberte Vytvořit load balancer, pak vyberte Veřejný load balancer.

  3. V části Vyberte web, vyberte doménu trasy své publikované aplikace.

  4. Na Hostname stránce zadejte hostname pro load balancer (například lb.example.com).

  5. Na Fondy stránce vyberte Vytvořit Pool a zadejte popisný název.

  6. Přidejte endpoint tunelu s následujícími hodnotami:

    • Název endpointu: Název serveru, na kterém aplikace běží
    • Adresa endpointu: <UUID>.cfargotunnel.com (ID tunelu najdete v [Cloudflare dashboardu](https://dash.cloudflare.com/) v části **Networking** > **Tunnels**)
    • Hodnota hlavičky: Hostname vaší publikované trasy aplikace (například app.example.com)
    • Váha: 1 (pouze pokud existuje jeden endpoint)
  7. Vyberte Záložní pool. Viz zásady řízení provozu pro možnosti směrování.

  8. (Doporučeno) Na Monitory stránce připojte monitor k endpointu. Pro aplikaci HTTP nebo HTTPS vytvořte monitor HTTPS:

    • Typ: HTTPS
    • Cesta: /
    • Port: 443
    • Očekávaný kód (kódy): 200
    • Header Name: Host
    • Hodnota: app.example.com
  9. Uložte a nasaďte load balancer.

Chcete-li provést test, otevřete svou aplikaci pomocí názvu hostitele load balanceru (lb.example.com).

Viz dokumentace Load Balancing pro další podrobnosti o nastavení a konfiguraci load balanceru.

Volitelná nastavení Cloudflare

Aplikace se ve výchozím nastavení bude řídit nastavením Cloudflare pro hostname load balanceru, včetně Pravidla, Cache Rules a Pravidla WAF. Nastavení svého hostname můžete změnit v Cloudflare dashboard.

Časté architektury

Seznamte se s běžnými konfiguracemi vyvažování zátěže pro publikované aplikace za Cloudflare Tunnel.

Jedna aplikace na load balancer

V tomto příkladu předpokládejme webovou aplikaci běžící na serverech ve dvou různých datových centrech. Aplikaci chceme připojit ke Cloudflare, aby k ní uživatelé měli přístup odkudkoli na světě. Cloudflare má navíc mezi servery rozkládat zátěž tak, aby při výpadku primárního serveru převzal veškerý provoz sekundární server.

graph LR
		subgraph LB["Public load balancer <br> app.example.com "]
			subgraph P1[Pool 2]
				E1(["**Endpoint:** &lt;UUID_1&gt;.cfargotunnel.com<br> **Host header**: server2.example.com"])
			end
			subgraph P2[Pool 1]
				E2(["**Endpoint:** &lt;UUID_2&gt;.cfargotunnel.com<br> **Host header**: server1.example.com"])
			end
		end
		R@{ shape: text, label: "app.example.com" }
		R--> LB
    P1 -- Tunnel 1 --> cf1
    P2 -- Tunnel 2 --> cf2
		subgraph D2[Private network]
			subgraph r1[Region eu-west-1]
			cf1@{ shape: processes, label: "cloudflared <br> **Route:** server2.example.com" }
			S1(["Server 2<br> 10.0.0.1:80"])
			cf1-->S1
			end
			subgraph r2[Region us-east-1]
			cf2@{ shape: processes, label: "cloudflared <br> **Route:** server1.example.com" }
			S3(["Server 1 <br> 10.0.0.2:80"])
			cf2-->S3
			end
		end

		style r1 stroke-dasharray: 5 5
		style r2 stroke-dasharray: 5 5

Jak ukazuje diagram, typické nastavení zahrnuje:

Uživatelé se nyní mohou k aplikaci připojit pomocí hostname load balanceru (app.example.com). Upozorňujeme, že tato konfigurace platí pouze pro Active-Passive failover, protože každý fond podporuje pouze jeden endpoint na tunel.

Více aplikací na jeden load balancer

Následující diagram znázorňuje, jak pomocí jediného load balanceru směrovat provoz do dvou různých aplikací v soukromé síti.

graph LR
		subgraph LB["Public load balancer <br> lb.example.com"]
			subgraph P1[Pool for App 1]
				E1(["**Endpoint:** &lt;UUID_1&gt;.cfargotunnel.com<br> **Host header**: app1.example.com"])
				E2(["**Endpoint:** &lt;UUID_2&gt;.cfargotunnel.com<br> **Host header**: app1.example.com"])
			end
			subgraph P2[Pool for App 2]
				E3(["**Endpoint:** &lt;UUID_1&gt;.cfargotunnel.com<br> **Host header**: app2.example.com"])
				E4(["**Endpoint:** &lt;UUID_2&gt;.cfargotunnel.com<br> **Host header**: app2.example.com"])
			end
		end
		R@{ shape: text, label: "app1.example.com <br> app2.example.com" }
		R--> LB
    E1 -- Tunnel 1 -->cf1
		E3 -- Tunnel 1 --> cf1
		E2 -- Tunnel 2 --> cf2
		E4 -- Tunnel 2 --> cf2

		subgraph N[Private network]
			cf2[cloudflared <br> **Route:** app1.example.com <br> **Route:** app2.example.com]
			S3(["App 1 <br> 10.0.0.1:80"])
			cf2-->S3
			cf2-->S1
			cf1[cloudflared <br> **Route:** app1.example.com <br> **Route:** app2.example.com]
			S1(["App 2 <br> 10.0.0.2:80"])
			cf1-->S1
			cf1-->S3
		end

Toto nastavení load balancingu zahrnuje:

Uživatelé nyní mají přístup ke všem aplikacím přes load balancer. Protože každý fond obsahuje více tunelových endpointů, tato konfigurace podporuje Active-Active Failover. Režim Active-Active využívá k současnému zpracování požadavků všechny dostupné endpointy ve fondu, čímž díky rozložení provozu mezi ně zajišťuje lepší výkon a škálovatelnost.

DNS záznamy

Když přes dashboard nakonfigurujete trasu publikované aplikace, Cloudflare automaticky vygeneruje CNAME DNS záznam, který směruje název hostitele aplikace (app1.example.com) na subdoménu tunelu (<UUID>.cfargotunnel.com). Můžete upravit tyto záznamy DNS tak, aby místo toho směřovaly na hostname load balanceru.

Zde je příklad toho, jak budou vaše DNS záznamy vypadat před a po nastavení Více aplikací na jeden load balancer:

Před:

Typ Název Obsah
CNAME app1 <UUID_1>.cfargotunnel.com
CNAME app2 <UUID_1>.cfargotunnel.com
CNAME app1 <UUID_2>.cfargotunnel.com
CNAME app2 <UUID_2>.cfargotunnel.com

Po:

Typ Název Obsah
LB lb.example.com n/a
CNAME app1 lb.example.com
CNAME app2 lb.example.com

Známá omezení

Monitory a originy tunelů TCP

Monitory TCP nejsou u tunelových endpointů podporovány. Místo toho vytvořte endpoint kontroly stavu na cloudflared hostitele a použijte monitor HTTPS. Můžete například použít cloudflared a vrátit pevně danou HTTP stavovou odpověď:

  1. Přidejte trasu publikované aplikace pro health check:
    • Hostname: health-check.example.com
    • Typ služby: HTTP_STATUS
    • Stavový kód HTTP: 200
  2. Vytvořte monitor s tímto nastavením:
    • Typ: HTTPS
    • Cesta: /
    • Port: 443
    • Očekávaný kód (kódy): 200
    • Header Name: Host
    • Hodnota: health-check.example.com

Tento monitor ověřuje, že cloudflared je dostupný. Neověřuje se tím, zda upstream služba přijímá požadavky.

Afinita relace a repliky

Load balancer nerozlišuje mezi repliky stejného tunelu. Pokud spustíte stejné UUID tunelu na dvou různých hostitelích, load balancer bude oba hostitele považovat za jeden endpoint. Chcete-li zachovat afinita relace mezi klientem a konkrétním hostitelem, musíte každý hostitel připojit ke Cloudflare pomocí jiného tunel UUID.

Preference lokálního připojení

Pokud zaznamenáte nerovnoměrné rozložení provozu mezi endpoints na různých místech, možná budete muset upravit konfiguraci load balanceru.

Cloudflare používá Směrování Anycast směrovat požadavky koncových uživatelů do nejbližšího datacentra. cloudflared upřednostňuje obsluhu požadavků pomocí připojení ve stejném datovém centru, což může ovlivnit způsob rozložení provozu mezi jednotlivými endpointy.

Pokud spustíte cloudflared repliky na stejném UUID tunelu, zvažte přechod na samostatné tunely, abyste získali podrobnější kontrolu nad řízení provozu.