← Poskytovatel Cloudflare Terraform / terraform / tutorial
4: Zlepšení výkonu
V tomto tutoriálu přidáte druhý origin server pro základní rozložení provozu metodou round robin a poté použijete Cloudflare Load Balancing podle potřeby přesměruje provoz při výpadku. Konfiguraci load balancing dále vylepšíte pomocí funkce "geo steering", která poskytuje výsledky z původního serveru, jenž je vašim koncovým uživatelům geograficky nejblíže.
Předpoklady
- Dokončeno Návod 1, Návod 2 a Návod 3
- Load Balancing povoleno na vašem účtu Cloudflare
1. Přidejte další záznam DNS pro www
Vytvořte novou větev a přidejte záznam DNS pro váš server v Asii:
git checkout -b step4-configure-load-balancingPřidejte záznam DNS pro druhý webový server umístěný v Asii. Pro účely tohoto příkladu
je IP adresa tohoto serveru 198.51.100.15. Přidejte druhý záznam DNS
do svého main.tf:
# Asia origin server
resource "cloudflare_dns_record" "www_asia" {
zone_id = var.zone_id
name = "www"
content = "198.51.100.15"
type = "A"
ttl = 300
proxied = true
comment = "Asia origin server"
}Použijte tuto změnu, abyste viděli základní chování round-robin:
terraform plan
terraform applyOtestujte základní rozložení zátěže:
# Make several requests to see both origins
for i in {1..4}; do
curl https://www.example.com
sleep 1
doneOčekávaný výstup:
Hello, this is 203.0.113.10!
Hello, this is 203.0.113.10!
Hello, this is 198.51.100.15!
Hello, this is 203.0.113.10!Uvidíte náhodné rozložení zátěže mezi dvěma origin servery. Tento základní load balancing založený na DNS má svá omezení: chybí kontroly stavu, geografické směrování a rozložení je nepředvídatelné. Pro pokročilejší scénáře, jako jsou origins v různých geografických lokalitách nebo automatické převzetí služeb při selhání, budete chtít použít Cloudflare Load Balancing.
2. Přejděte na používání produktu Cloudflare Load Balancing
Jak je popsáno v Návod pro Load Balancing, musíte splnit tři úkoly:
- Vytvoření monitoru, který provádí kontroly stavu vašich origin serverů.
- Vytvoření poolu jednoho nebo více origin serverů, na které bude směrován provoz rozdělovaný load balancerem.
- Vytvoření load balanceru s externím názvem hostitele, například
www.example.coma jedním nebo více pooly.
Originy můžeme sledovat pomocí základní kontroly stavu, která na danou URL adresu každého originu posílá požadavek GET. Pokud origin do pěti sekund vrátí stavový kód 200 (OK), považuje se za funkční. Pokud se mu to třikrát za sebou nepodaří, považuje se za nefunkční. Tato kontrola se spouští jednou za minutu z několika regionů a v případě zjištěné chyby si můžete nastavit e-mailové upozornění.
V tomto příkladu se pool bude jmenovat www-origins se dvěma přidanými origin servery:
www-us(203.0.113.10)www-asia(198.51.100.15)
Prozatím přeskočte jakýkoli druh geografické směrování.
Když vytvoříte load balancer (LB), bude nahradit veškeré existující DNS záznamy se stejným názvem. Pokud například vytvoříte www.example.com load balanceru níže, nahradí tyto dva www záznamy DNS, které jste dříve definovali. Výhodou ponechání těchto záznamů DNS je to, že pokud vyvažování zátěže dočasně vypnete, spojení s tímto hostname budou stále možná.
Chcete-li toho dosáhnout, přidejte konfiguraci load balancingu do main.tf:
# Health check monitor
resource "cloudflare_load_balancer_monitor" "health_check" {
account_id = var.account_id
expected_body = "alive"
expected_codes = "2xx"
method = "GET"
timeout = 5
path = "/health"
interval = 60
retries = 2
description = "Health check for www origins"
type = "https"
header = {
Host = ["${var.domain}"]
}
}
# Origin pool
resource "cloudflare_load_balancer_pool" "www_pool" {
account_id = var.account_id
name = "www-origins"
monitor = cloudflare_load_balancer_monitor.health_check.id
origins = [{
name = "www-us"
address = "203.0.113.10"
enabled = true
}, {
name = "www-asia"
address = "198.51.100.15"
enabled = true
}]
description = "Primary www server pool"
enabled = true
minimum_origins = 1
notification_email = "<YOUR_EMAIL>"
check_regions = ["WEU", "EEU", "WNAM", "ENAM", "SEAS", "NEAS"]
}
# Load balancer
resource "cloudflare_load_balancer" "www_lb" {
zone_id = var.zone_id
name = "www.${var.domain}"
default_pools = [cloudflare_load_balancer_pool.www_pool.id]
fallback_pool = cloudflare_load_balancer_pool.www_pool.id
description = "Load balancer for www.${var.domain}"
proxied = true
}Zobrazte náhled změn a použijte je:
terraform plan
terraform applyOtestujte vylepšené vyvažování zátěže:
# Test load distribution with health monitoring
for i in {1..6}; do
echo "Request $i:"
curl -s https://www.example.com
sleep 2
doneOčekávaný výstup:
Request 1:
Hello, this is 198.51.100.15!
Request 2:
Hello, this is 203.0.113.10!
Request 3:
Hello, this is 198.51.100.15!
Request 4:
Hello, this is 203.0.113.10!
Request 5:
Hello, this is 203.0.113.10!
Request 6:
Hello, this is 198.51.100.15!Nyní byste měli vidět předvídatelnější rozložení zátěže a navíc získáte výhody sledování stavu a automatického převzetí služeb při selhání.
Sloučit a ověřit:
git add main.tf
git commit -m "Step 4 - Create load balancer (LB) monitor, LB pool, and LB"
git pushOvěřte, že konfigurace funguje, kontrolou v Cloudflare dashboardu v části Provoz > Load Balancing. Měli byste vidět svůj monitor, pool a load balancer se stavovými indikátory dostupnosti. Váš load balancer nyní:
- Inteligentní rozložení provozu mezi origin servery
- Automaticky obcházet nefunkční servery
- Poskytujte sledování stavu v reálném čase