INTEGRITY Dokumentace

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:

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ů.

Nastavení monitoru

Monitor můžete vytvořit v pracovní postup load balanceru nebo v Monitory kartě:

  1. Přejděte na Load Balancing.

  2. Vyberte Monitory kartě.

  3. Vyberte Vytvoření monitoru.

  4. 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

  5. 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ím 2xx by pokrylo všechny kódy odpovědí v 200 rozsah).
    • 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:
    • Follow Redirects:
      • Namísto hlášení 301 nebo 302 kód jako nezdravý, požadavek health monitoru sleduje přesměrování až na konečný endpoint.
    • 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.

  6. Vyberte Save.

Připravte své servery

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.

Nastavení monitoru

Ú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
Vytvoření monitoru
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.

Odpověď
{
  "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"
  }
}
Připravte své servery

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ě:

  1. Přejděte na Load Balancing.

  2. Vyberte Fondy kartu a poté Vytvoření poolu.

  3. 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
  4. 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.
  1. Tento postup zopakujte pro další koncové body v poolu.

  2. (Volitelné) Nastavte souřadnice pro Proximity Steering na poolu.

  3. 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.
  4. 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
Vytvoření poolu
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.

Odpověď
{
  "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:

  1. Přejděte na Load Balancing.
  2. Vyberte Fondy kartě.
  3. 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é:

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

  1. Přejděte na Load Balancing a vyberte Vytvořit load balancer.

  2. Na Nastavení Load Balanceru, vyberte Veřejný load balancer

  3. Vyberte web, ke kterému chcete tento load balancer přidat.

  4. 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č.
  5. Vyberte Next.

  6. 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.
  7. Vyberte Next.

  8. 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.
  9. Vyberte Next.

  10. Na Řízení provozu stránce vyberte možnost pro Řízení provozu a vyberte Next.

  11. Na Custom Rules stránce vyberte existující pravidlo nebo vytvořit nové pravidlo.

  12. Vyberte Next.

  13. 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

  1. Přejděte na Load Balancing a vyberte Vytvořit load balancer.

  2. Na Nastavení Load Balanceru, vyberte Private load balancer

  3. Přiřaďte svému load balanceru buď soukromou IP adresu Cloudflare, nebo zadanou IP adresu, a vytvořte pro něj popis.

  4. 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.
  5. Vyberte Next.

  6. 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.
  7. Vyberte Next.

  8. Na Řízení provozu stránce vyberte možnost pro Řízení provozu a vyberte Next.

  9. Vyberte Next.

  10. 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
Create Load Balancer
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.

Odpověď
{
  "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:

  1. Pokud aktualizujete své pooly a monitory, znovu zkontrolujte stav poolu, abyste se ujistili, že vše funguje podle očekávání.
  2. 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.
  3. 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 CNAME zá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:

  1. V dashboardu Cloudflare přejděte na Oznámení stránce.

    Přejděte na Oznámení ↗
  2. Na Typ upozornění z Usage Based Billing, klikněte na Vyberte.

  3. Vyplňte následující údaje:

    • Název
    • Produkt
    • Limit oznámení (přesná metrika se liší podle produktu)
    • E-mail pro oznámení
  4. 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: