← Cloudflare One / cloudflare-one / networks / connectors / cloudflare-tunnel / routing-to-tunnel
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
- Cloudflare Tunnel s trasa publikované aplikace
Vytvořte load balancer
Chcete-li vytvořit load balancer pro publikované aplikace Cloudflare Tunnel:
-
V dashboardu Cloudflare přejděte na Load Balancing stránce.
Přejděte na Load Balancing ↗ -
Vyberte Vytvořit load balancer, pak vyberte Veřejný load balancer.
-
V části Vyberte web, vyberte doménu trasy své publikované aplikace.
-
Na Hostname stránce zadejte hostname pro load balancer (například
lb.example.com). -
Na Fondy stránce vyberte Vytvořit Pool a zadejte popisný název.
-
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)
-
Vyberte Záložní pool. Viz zásady řízení provozu pro možnosti směrování.
-
(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
-
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:** <UUID_1>.cfargotunnel.com<br> **Host header**: server2.example.com"])
end
subgraph P2[Pool 1]
E2(["**Endpoint:** <UUID_2>.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:
- Vyhrazený Cloudflare Tunnel pro každé datové centrum.
- Jeden fond load balanceru na tunel. Hostname load balanceru je nastaven na hostname aplikace viditelný pro uživatele (
app.example.com). - Jeden endpoint load balanceru na fond. Hlavička Host tohoto endpointu je nastavena na
cloudflaredzveřejněný hostname aplikace (server1.example.com) - Alespoň dva
cloudflaredrepliky na tunel ve svých příslušných datových centrech pro případ, žecloudflaredhostitelský počítač spadne.
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:** <UUID_1>.cfargotunnel.com<br> **Host header**: app1.example.com"])
E2(["**Endpoint:** <UUID_2>.cfargotunnel.com<br> **Host header**: app1.example.com"])
end
subgraph P2[Pool for App 2]
E3(["**Endpoint:** <UUID_1>.cfargotunnel.com<br> **Host header**: app2.example.com"])
E4(["**Endpoint:** <UUID_2>.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:
- Dva tunely Cloudflare Tunnel se shodnými trasami k oběma aplikacím.
- Jeden fond load balanceru na aplikaci.
- Každý fond load balanceru má jeden endpoint na tunel.
- A DNS záznam pro každou aplikaci, která odkazuje na název hostitele load balanceru.
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ěď:
- Přidejte trasu publikované aplikace pro health check:
- Hostname:
health-check.example.com - Typ služby: HTTP_STATUS
- Stavový kód HTTP:
200
- Hostname:
- 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.