← Cloudflare Load Balancing / load-balancing / get-started
Rychlý start
Rychle začněte pracovat s Load Balancing. Podrobnější vysvětlení najdete v Studijní cesta.
Tento návod předpokládá, že znáte Cloudflare Komponenty Load Balancing.
Než začnete
Ověřte, že:
- Mějte přístup k více koncové body (origin servery, privátní nebo veřejné IP adresy, virtuální IP adresy (VIP) atd.), ať už fyzické, nebo cloudové.
- Mějte přístup k Load Balancing, který je k dispozici jako doplněk pro jakýkoli typ účtu.
- Mějte testovací a produkční hostnamy pokryté Certifikáty SSL/TLS.
Vytvořte monitor
Monitor v pravidelných intervalech odesílá kontrolní požadavky, aby vyhodnotil stav každého koncového bodu v rámci pool.
Když pool stane se nedostupným, load balancer daný pool vyřadí z rotace koncových bodů.
Monitor můžete vytvořit v pracovní postup load balanceru nebo v Monitory kartě:
-
Přejděte na Load Balancing.
-
Vyberte Monitory kartě.
-
Vyberte Vytvoření monitoru.
-
Přidejte následující informace:
- Typ: Protokol, který se má použít pro monitory
- Zákazníci mimo plán Enterprise: Vyberte HTTP, HTTPS, nebo TCP.
- Zákazníci s plánem Enterprise: Vyberte HTTP, HTTPS, TCP, UDP ICMP, ICMP Ping, nebo SMTP.
- Cesta: Cesta endpointu, na kterou se odesílají požadavky monitoru
- Port: Cílový port pro monitory
- Typ: Protokol, který se má použít pro monitory
-
Pro další nastavení vyberte Pokročilá nastavení monitoru stavu:
- Interval:
- Zvýšením výchozí hodnoty můžete zlepšit dobu failoveru, ale zároveň můžete zvýšit zátěž svých endpointů.
- Minimální čas v sekundách je 60 (Pro), 15 (Business) a 10 (Enterprise).
- Časový limit a Opakování:
- Požadavek monitoru stavu se vyhodnotí jako nedostupný, pokud překročí dobu trvání zadanou v Časový limit (a tuto dobu překročí vícekrát, než je zadaný počet Opakování).
- Očekávaný kód (kódy): Očekávané kódy odpovědi HTTP uvedené jednotlivě (
200,302) nebo jako rozsah (například zadáním2xxby pokrylo všechny kódy odpovědí v200rozsah). - Tělo odpovědi:
- Hledá podřetězec bez rozlišování velkých a malých písmen v těle odpovědi.
- Ověřte, že je hodnota poměrně stálá a nachází se v prvních 10 KB stránky HTML.
- Simulate Zone:
- Doporučujeme použít stejnou zónu, ve které Load Balancer existuje.
- Změní nastavení egress zóny požadavku monitoru stavu tak, aby byla zajištěna kompatibilita s funkcemi jako Authenticated Origin Pulls (mTLS), Argo Smart Routing, Bring your own CA (mTLS), Dedicated CDN Egress IPs, a HTTP/2 to Origin.
- Follow Redirects:
- Namísto hlášení
301nebo302kód jako nezdravý, požadavek health monitoru sleduje přesměrování až na konečný endpoint.
- Namísto hlášení
- Nakonfigurujte hlavičky požadavku:
- Užitečné, pokud vaše endpointy očekávají konkrétní příchozí hlavičky.
- Hlavička:
- HTTP hlavičky požadavku, které se mají odeslat v rámci health monitoru. Ve výchozím nastavení doporučujeme nastavit hlavičku Host. Hlavičku User-Agent nelze přepsat. Tento parametr platí pouze pro monitory typu HTTP a HTTPS.
- Interval:
-
Vyberte Save.
Ověřte, že váš firewall nebo webový server neblokuje ani neomezuje četnost vašich nakonfigurovaných monitorů stavu nebo požadavků souvisejících s IP adresy Cloudflare ↗.
Každý monitor stavu používá HTTP user-agent "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", kde $poolid je prvních 16 znaků přidružený fond.
Úplný seznam vlastností monitoru najdete v Vytvoření monitoru. Pokud potřebujete pomoc s ověřováním API, viz Dokumentace Cloudflare API.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Load Balancing: Monitors and Pools Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/load_balancers/monitors" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"type": "https",
"description": "Login page monitor",
"method": "GET",
"path": "/health",
"header": {
"Host": [
"example.com"
],
"X-App-ID": [
"abc123"
]
},
"port": 8080,
"timeout": 3,
"retries": 0,
"interval": 90,
"expected_body": "alive",
"expected_codes": "2xx",
"follow_redirects": true,
"allow_insecure": true,
"consecutive_up": 3,
"consecutive_down": 2,
"probe_zone": "example.com"
}'Odpověď obsahuje úplnou definici nového monitoru.
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": ":monitor-id",
"created_on": "2021-01-01T05:20:00.12345Z",
"modified_on": "2021-01-01T05:20:00.12345Z",
"type": "https",
"description": "Login page monitor",
"method": "GET",
"path": "/health",
"header": {
"Host": [
"example.com"
],
"X-App-ID": [
"abc123"
]
},
"port": 8080,
"timeout": 3,
"retries": 0,
"interval": 90,
"expected_body": "alive",
"expected_codes": "2xx",
"follow_redirects": true,
"allow_insecure": true,
"consecutive_up": 3,
"consecutive_down": 2,
"probe_zone": "example.com"
}
}Ověřte, že váš firewall nebo webový server neblokuje ani neomezuje četnost vašich nakonfigurovaných monitorů stavu nebo požadavků souvisejících s IP adresy Cloudflare ↗.
Každý monitor stavu používá HTTP user-agent "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", kde $poolid je prvních 16 znaků přidružený fond.
Příklad konfigurace monitoru
| Pole | Hodnota |
|---|---|
| Typ | HTTP |
| Cesta | / |
| Port | 80 |
| Interval | 60 |
| Metoda | GET |
| Časový limit | 5 sekund |
| Opakování | 2 |
| Očekávaný kód (kódy) | 200 |
Vytvoření poolů
V rámci Cloudflare pooly reprezentují vaše koncové body a způsob jejich organizace. Pool tak může být skupinou několika koncových bodů, nebo můžete mít v jednom poolu i jen jeden koncový bod (například origin server).
Pokud znáte terminologii DNS, představte si pool jako „sadu záznamů“, s tím rozdílem, že Cloudflare vrací pouze adresy, které jsou považovány za funkční. K jednotlivým poolům lze pro vlastní monitorování připojit monitory stavu. Pool může mít připojený buď jeden monitor, nebo skupinu monitorů, nikdy obojí zároveň.
Pool můžete vytvořit v pracovní postup load balanceru nebo v Fondy kartě:
-
Přejděte na Load Balancing.
-
Vyberte Fondy kartu a poté Vytvoření poolu.
-
Pro svůj pool zadejte následující informace:
- Název (musí být jedinečný)
- Popis, který název dále upřesňuje
- Volba pro Směrování koncových bodů, což ovlivňuje způsob, jakým váš pool směruje provoz na jednotlivé koncové body
-
Pro každý endpoint zadejte následující informace:
- Název (musí být jedinečný)
- Adresa endpointu nebo přidružený hostname
- (Volitelné) Virtuální síť. Povinné, pokud má koncový bod privátní IP adresu.
- A Váha
- (Volitelné) název hostitele kliknutím na Přidejte hlavičku Host
- (Volitelné) Cílový port, na který bude provoz obsluhován.
-
Tento postup zopakujte pro další koncové body v poolu.
-
(Volitelné) Nastavte souřadnice pro Proximity Steering na poolu.
-
U poolu aktualizujte následující údaje:
- Práh stavu:
Health Threshold udává počet endpointů ve stavu healthy, které musí pool jako celek mít, aby byl považován za Funkční a přijímat provoz podle pořadí poolu v load balanceru. Zvýšením tohoto čísla se pool stává spolehlivějším, zároveň se ale zvyšuje pravděpodobnost, že se stane nezdravým.
- Sledovat: Připojte monitor
- Regiony monitoru stavu: Zvolte, zda se má stav poolu kontrolovat z více lokalit, což zvyšuje přesnost, ale může vést k sondovacímu provozu na váš koncový bod
- Oznámení pro pool: Můžete si nastavit nové výstrahy (a zobrazit stávající), abyste byli upozorněni, když se pooly povolí nebo zakážou, nebo když se u poolů či endpointů změní jejich stav funkčnosti.
- Práh stavu:
-
Až budete hotovi, vyberte Save.
Úplný seznam vlastností najdete v Vytvoření poolu. Pokud potřebujete pomoc s ověřováním API, viz Dokumentace Cloudflare API.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Load Balancing: Monitors and Pools Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/load_balancers/pools" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "Primary data center - Provider XYZ",
"name": "primary-dc-1",
"enabled": false,
"load_shedding": {
"default_percent": 0,
"default_policy": "random",
"session_percent": 0,
"session_policy": "hash"
},
"minimum_origins": 2,
"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
"check_regions": [
"WEU",
"ENAM"
],
"origins": [
{
"name": "app-server-1",
"address": "0.0.0.0",
"enabled": true,
"weight": 0.56,
"header": {
"Host": [
"example.com"
]
}
}
],
"origin_steering": {
"policy": "random"
},
"notification_filter": {
"origin": {
"disable": false,
"healthy": null
},
"pool": {
"disable": false,
"healthy": null
}
}
}'Odpověď obsahuje úplnou definici nového poolu.
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "17b5962d775c646f3f9725cbc7a53df4",
"created_on": "2021-01-01T05:20:00.12345Z",
"modified_on": "2021-01-01T05:20:00.12345Z",
"description": "Primary data center - Provider XYZ",
"name": "primary-dc-1",
"enabled": false,
"load_shedding": {
"default_percent": 0,
"default_policy": "random",
"session_percent": 0,
"session_policy": "hash"
},
"minimum_origins": 2,
"monitor": "f1aba936b94213e5b8dca0c0dbf1f9cc",
"check_regions": [
"WEU",
"ENAM"
],
"origins": [
{
"name": "app-server-1",
"address": "0.0.0.0",
"enabled": true,
"weight": 0.56,
"header": {
"Host": [
"example.com"
]
}
}
],
"origin_steering": {
"policy": "random"
},
"notification_filter": {
"origin": {
"disable": false,
"healthy": null
},
"pool": {
"disable": false,
"healthy": null
}
}
}
}Po vytvoření poolu budete chtít také vytvořit nové oznámení s následujícími zadanými parametry:
"alert_type": "load_balancing_health_alert",
"filters": {
"pool_id": <<ARRAY_OF_INCLUDED_POOL_IDS>>,
"new_health": <<ARRAY_OF_STATUS_TRIGGERS>> ["Unhealthy", "Healthy"],
"event_source": <<ARRAY_OF_OBJECTS_WATCHED>> ["pool", "origin"]
}Ověřte stav poolu
Než na své pooly nasměrujete jakýkoli provoz, ujistěte se, že jsou pooly a monitory nastavené správně. Stav kontroly stavu bude unknown dokud nejsou k dispozici výsledky první kontroly.
Potvrzení stavu poolu pomocí dashboardu:
- Přejděte na Load Balancing.
- Vyberte Fondy kartě.
- U poolů a jednotlivých endpointů zkontrolujte hodnoty v Stav a Endpoint Health sloupce.
Další informace o stavech poolů a endpointů najdete v Jak se pool stane nezdravým.
Chcete-li zjistit aktuální stav dostupnosti všech poolů, použijte Seznam poolů příkaz, přičemž věnujte pozornost healthy hodnotu pro pooly a origins (endpointy).
K řešení problémů se stavem konkrétního poolu použijte Pool Health Details příkazu.
Neočekávaný stav funkčnosti
Pokud si všimnete, že zdravé pooly jsou označovány jako nezdravé:
- Zkontrolujte jak se koncové body a fondy stávají nefunkčními.
- Viz Sekce Řešení problémů.
Vytvoření load balanceru na testovací subdoméně
Místo toho, abyste začínali na produkční doméně, byste si pravděpodobně měli vytvořit Load Balancer na testovací nebo staging doméně. V závislosti na uspořádání vaší infrastruktury to může vyžadovat dočasné úpravy vašich monitorů a poolů.
Když začnete s testovací doménou, můžete ověřit, že vše funguje správně, ještě před směrováním produkčního provozu.
Vytvoření Public nebo Private load balanceru v dashboardu:
Vytvoření veřejného load balanceru
-
Přejděte na Load Balancing a vyberte Vytvořit load balancer.
-
Na Nastavení Load Balanceru, vyberte Veřejný load balancer
-
Vyberte web, ke kterému chcete tento load balancer přidat.
-
Na Hostname stránka:
- Zadejte Hostname, což je název DNS, na kterém je load balancer dostupný. Další podrobnosti o prioritě záznamu najdete v DNS záznamy pro vyrovnávání zátěže.
- Z Data Localization rozbalovací nabídce vyberte region kterou chcete použít ve své doméně.
- Přepnutím ikony oranžového mraku aktualizujte režim proxy, což ovlivňuje způsob směrování provozu a to, které IP adresy se inzerují.
- Přidejte popis pro svůj load balancer.
- Pokud chcete vyrovnávání zátěže založené na relacích, přepněte Session Affinity přepínač.
- Pokud chcete Adaptive Routing, přepněte Adaptive Routing přepínač.
-
Vyberte Next.
-
Na Add a Pool stránka:
- Vyberte jeden nebo více existujících poolů nebo vytvořit nový fond.
- Pokud se chystáte nastavit řízení provozu na Vypnuto, změňte pořadí poolů ve svém load balanceru, čímž upravíte pořadí náhradních poolů.
- V případě potřeby aktualizujte Fallback Pool.
- Pokud nastavíte traffic steering na Random, můžete nastavit Váhy (přes API) vašim poolům a určuje tak procento provozu odesílaného na jednotlivé pooly.
-
Vyberte Next.
-
Na Monitory stránka:
- Zkontrolujte monitory připojené k vašim poolům.
- V případě potřeby můžete připojit existující monitor nebo vytvořit nový monitor.
-
Vyberte Next.
-
Na Řízení provozu stránce vyberte možnost pro Řízení provozu a vyberte Next.
-
Na Custom Rules stránce vyberte existující pravidlo nebo vytvořit nové pravidlo.
-
Vyberte Next.
-
Na Zkontrolovat stránka:
- Zkontrolujte konfiguraci a proveďte případné změny.
- Zvolte, zda Save as Draft nebo Save and Deploy.
Vytvoření privátního load balanceru
-
Přejděte na Load Balancing a vyberte Vytvořit load balancer.
-
Na Nastavení Load Balanceru, vyberte Private load balancer
-
Přiřaďte svému load balanceru buď soukromou IP adresu Cloudflare, nebo zadanou IP adresu, a vytvořte pro něj popis.
-
Na Add a Pool stránka:
- Vyberte jeden nebo více existujících poolů nebo vytvořit nový fond.
- Pokud se chystáte nastavit řízení provozu na Vypnuto, změňte pořadí poolů ve svém load balanceru, čímž upravíte pořadí náhradních poolů.
- V případě potřeby aktualizujte Fallback Pool.
- Pokud nastavíte traffic steering na Random, můžete nastavit Váhy (přes API) vašim poolům a určuje tak procento provozu odesílaného na jednotlivé pooly.
-
Vyberte Next.
-
Na Monitory stránka:
- Zkontrolujte monitory připojené k vašim poolům.
- V případě potřeby můžete připojit existující monitor nebo vytvořit nový monitor.
-
Vyberte Next.
-
Na Řízení provozu stránce vyberte možnost pro Řízení provozu a vyberte Next.
-
Vyberte Next.
-
Na Zkontrolovat stránka:
- Zkontrolujte konfiguraci a proveďte případné změny.
- Zvolte, zda Save as Draft nebo Save and Deploy.
Úplný seznam vlastností najdete v Create Load Balancer. Pokud potřebujete pomoc s ověřováním API, viz Dokumentace Cloudflare API.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Load Balancers Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/load_balancers" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "Load Balancer for lb.example.com",
"name": "lb.example.com",
"enabled": true,
"ttl": 30,
"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
"default_pools": [
"17b5962d775c646f3f9725cbc7a53df4",
"9290f38c5d07c2e2f4df57b1f61d4196",
"00920f38ce07c2e2f4df50b1f61d4194"
],
"proxied": true,
"steering_policy": "random_steering",
"session_affinity": "cookie",
"session_affinity_attributes": {
"samesite": "Auto",
"secure": "Auto",
"drain_duration": 100,
"zero_downtime_failover": "sticky"
},
"session_affinity_ttl": 5000,
"adaptive_routing": {
"failover_across_pools": true
},
"location_strategy": {
"prefer_ecs": "always",
"mode": "resolver_ip"
},
"random_steering": {
"pool_weights": {
"de90f38ced07c2e2f4df50b1f61d4194": 0.3,
"9290f38c5d07c2e2f4df57b1f61d4196": 0.5
},
"default_weight": 0.2
}
}'Odpověď obsahuje úplnou definici nového load balanceru.
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "699d98642c564d2e855e9661899b7252",
"created_on": "2021-01-01T05:20:00.12345Z",
"modified_on": "2021-01-01T05:20:00.12345Z",
"description": "Load Balancer for lb.example.com",
"name": "lb.example.com",
"enabled": true,
"ttl": 30,
"fallback_pool": "17b5962d775c646f3f9725cbc7a53df4",
"default_pools": [
"17b5962d775c646f3f9725cbc7a53df4",
"9290f38c5d07c2e2f4df57b1f61d4196",
"00920f38ce07c2e2f4df50b1f61d4194"
],
"proxied": true,
"steering_policy": "random_steering",
"session_affinity": "cookie",
"session_affinity_attributes": {
"samesite": "Auto",
"secure": "Auto",
"drain_duration": 100,
"zero_downtime_failover": "sticky"
},
"session_affinity_ttl": 5000,
"random_steering": {
"pool_weights": {
"de90f38ced07c2e2f4df50b1f61d4194": 0.3,
"9290f38c5d07c2e2f4df57b1f61d4196": 0.5
},
"default_weight": 0.2
}
}
}Volitelné - Přehled analytiky load balancingu
Při odesílání ukázkových požadavků na svou testovací doménu zkontrolujte analytika vyrovnávání zátěže stránku a ověřte, že váš load balancer rozděluje požadavky podle vašeho očekávání.
Směrování produkčního provozu
Jakmile máte load balancer nastavený a ověřili jste, že vše funguje správně, můžete ho nasadit na ostrou doménu nebo subdoménu:
- Pokud aktualizujete své pooly a monitory, znovu zkontrolujte stav poolu, abyste se ujistili, že vše funguje podle očekávání.
- Ověřte, že váš produkční hostname má správný pořadí priority DNS záznamů a vztahuje se na něj certifikát SSL/TLS.
- Nakonfigurujte load balancer tak, aby přijímal produkční provoz, což může zahrnovat některou z těchto možností:
- Úprava Hostname vašeho stávajícího load balanceru.
- Aktualizace
CNAMEzáznam, který odesílá provoz na váš load balancer.
Volitelné: další kroky
Váš load balancer by měl přijímat produkční provoz (což můžete ověřit v analytika).
Produkt je již formálně nastaven, přesto můžete zvážit následující doporučení.
Oznámení založená na využití
Protože se jedná o službu s fakturace podle využití, Cloudflare doporučuje nastavit oznámení o fakturaci na základě využití, abyste předešli neočekávaným účtům.
Chcete-li tato oznámení nastavit:
-
V dashboardu Cloudflare přejděte na Oznámení stránce.
Přejděte na Oznámení ↗ -
Na Typ upozornění z Usage Based Billing, klikněte na Vyberte.
-
Vyplňte následující údaje:
- Název
- Produkt
- Limit oznámení (přesná metrika se liší podle produktu)
- E-mail pro oznámení
-
Vyberte Save.
Doplňkové možnosti konfigurace
Způsob, jakým váš load balancer směruje provoz, můžete dále přizpůsobit nebo load balancer integrovat s dalšími produkty Cloudflare: