← Cloudflare Load Balancing / load-balancing / additional-options
CNAME flattening pro endpointy
Když je DNS-only (se šedým mrakem) load balancer vybere endpoint, jehož adresou je hostname (například origin.example.com), Cloudflare přeloží tento hostname na IP adresu a vrátí A/AAAA záznam klientovi. Toto je zploštění CNAME, a odpovídá tomu, jak CNAME flattening funguje v Cloudflare DNS.
V některých případech použití, například u endpointů třetích stran, které provádějí vlastní směrování na základě DNS, je nutné, aby load balancer vrátil CNAME záznam samotný namísto vyřešené IP adresy. Záznam flatten_cname vlastnost u endpointu poolu vám umožňuje vyloučit se z flatteningu pro jednotlivé endpointy.
Kdy to použít
Zapněte flatten_cname vypnuto (flatten_cname: false) na endpointu, když:
- Chcete, aby klienti dostali
CNAMEodpověď odkazující na poskytovatele SaaS třetí strany nebo cloudový endpoint (napříkladorigin-b.example.com). - Koncový bod se dále překládá na adresy, které jsou dynamické, závisí na geografické poloze nebo na konkrétním klientovi.
- Provádíte failover mezi dvěma endpointy typu hostname a chcete, aby si klient přímo přeložil hostname jednotlivých poskytovatelů.
Ponechte flatten_cname zapnuto (flatten_cname: true, výchozí) pro běžné koncové body založené na IP adrese nebo názvu hostitele, u kterých chcete jen rychlou A/AAAA odpověď.
Kde se to uplatní
flatten_cname změní výstup resolveru pouze tehdy, pokud platí všechny následující podmínky:
| Podmínka | Povinná hodnota |
|---|---|
| Load balancer režim proxy | DNS-only (se šedým mrakem). Proxied load balancery musí vracet anycast IP adresy Cloudflare, takže se toto nastavení ignoruje. |
| Adresa koncového bodu | Hostname (cíl CNAME). U syrových adres endpointů IPv4/IPv6 nemá toto nastavení žádný účinek. |
| Hostname load balanceru | Není apex zóny. CNAME záznamy nejsou na vrcholu zóny povoleny, load balancer proto na vrcholu zóny provede zploštění záznamu. |
| Vybraný koncový bod | Tento konkrétní endpoint byl vybrán pomocí steeringu. Nastavení flatten_cname: false na endpointu A nemá žádný účinek, pokud steering vybere endpoint B ve stejném poolu. |
Pokud vybraný endpoint má flatten_cname: false ale některá z podmínek v předchozí tabulce není splněna, load balancer zploští CNAME a vrátí A/AAAA záznamy, jako kdyby byl přepínač zapnutý.
Nakonfigurujte CNAME flattening
flatten_cname se konfiguruje pro každý endpoint uvnitř poolu spolu s name, address, weight, a dalších polích endpointu. Můžete je nastavit v Cloudflare dashboard, přes API nebo v Terraform.
V dashboardu se toto nastavení zobrazuje jako Flatten CNAME u každého endpointu v poolu. Vypnutím přepínače se hostname endpointu vrátí jako CNAME záznam.
-
V dashboardu Cloudflare přejděte na Load Balancing stránce.
Přejděte na Load Balancing ↗ -
Vyberte Fondy kartě.
-
U poolu, který obsahuje daný koncový bod, vyberte Úprava.
-
V Endpointy sekci najděte endpoint, který chcete změnit.
-
Zapněte Flatten CNAME vypnuto.
-
Vyberte Save.
Flatten CNAME je k dispozici pouze pro endpointy, jejichž adresou je hostname. Endpointy používající IP adresu ji nemohou vypnout.
Použijte Vytvoření poolu nebo Edit Pool a nastavte flatten_cname na každém endpointu v origins pole.
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 '{
"name": "primary-pool",
"origins": [
{
"name": "origin-a",
"address": "origin-a.example.com",
"enabled": true,
"weight": 1,
"flatten_cname": false
},
{
"name": "origin-b",
"address": "origin-b.example.com",
"enabled": true,
"weight": 1,
"flatten_cname": false
},
{
"name": "fallback-ip",
"address": "203.0.113.10",
"enabled": true,
"weight": 1
}
]
}'flatten_cname má výchozí hodnotu true pokud je vynechán, čímž se zachová stávající chování pro existující pooly a endpointy.
Nastavte atribut na každém koncovém bodu uvnitř cloudflare_load_balancer_pool prostředek.
resource "cloudflare_load_balancer_pool" "primary" {
account_id = var.account_id
name = "primary-pool"
origins = [
{
name = "origin-a"
address = "origin-a.example.com"
enabled = true
weight = 1
flatten_cname = false
},
{
name = "origin-b"
address = "origin-b.example.com"
enabled = true
weight = 1
flatten_cname = false
},
{
name = "fallback-ip"
address = "203.0.113.10"
enabled = true
weight = 1
}
]
}Ověřit
Dotažte se na hostname load balanceru pomocí dig:
dig lb.example.com A +short- Pokud steering vybral endpoint, kde
flatten_cnamejefalse, sekce s odpovědí obsahujeCNAMEzáznam odkazující na adresu endpointu (napříkladorigin-a.example.com.). Klient (nebo jeho resolver) je zodpovědný za přeloženíCNAMEdále. - Pokud steering vybral endpoint, kde
flatten_cnamejetrue(nebo endpoint, jehož adresou je IP), odpověď obsahuje přeloženouA/AAAAzáznamy.
Protože odpověď závisí na tom, co endpoint steering vybere, opakované dig dotazy na stejný load balancer mohou oprávněně střídat mezi CNAME a A/AAAA odpovědi, pokud pool kombinuje endpointy typu hostname s flatten_cname: false a IP endpointy.
Monitory stavu
Monitory stavu endpointů toto nastavení nijak neovlivňuje. Cloudflare vždy přeloží název hostitele endpointu na IP adresu a stav podkladové služby ověřuje pomocí nekešovaného DNS dotazu. Vypnutí flatteningu mění pouze to, co se klientovi vrací v okamžiku DNS dotazu: stav dostupnosti nadále odráží skutečnou dosažitelnost backendu.
Analytics
Počty požadavků a rozhodnutí o směrování pro jednotlivé koncové body zůstávají viditelné v analytika vyrovnávání zátěže, klíčované podle názvu endpointu. To vám umožní sledovat, jak je provoz distribuován napříč CNAMEchybových koncových bodů.
Omezení
- Proxované (orange-clouded) load balancery:
flatten_cnamese ignoruje. Proxované load balancery se musí překládat na anycast IP adresy Cloudflare, aby mohly poskytovat funkce HTTP/HTTPS proxy Cloudflare. - Load balancery s kořenem zóny:
flatten_cnamese ignoruje, protožeCNAMEzáznamy nejsou na vrcholu zóny (zone apex) povoleny. - IP endpointy:
flatten_cnamenemá žádný účinek, protože neexistuje žádnýCNAMEke zploštění nebo vrácení. - Ukládání do mezipaměti na DNS resolveru: stejně jako u jakéhokoli DNS-only load balanceru mohou navazující resolvery ukládat vrácený záznam do mezipaměti po dobu platnosti TTL. Klienti, kteří TTL ignorují, mohou nadále používat dříve uloženou
CNAMEneboAodpověď. - Požadavek na plán: k dispozici zákazníkům Enterprise v rámci doplňku Load Balancing.
Související
- DNS CNAME flattening tedy obdobnou funkci pro DNS záznamy, které nejsou součástí load balanceru.
- Režimy proxy tedy kdy použít load balancing pouze přes DNS a kdy proxovaný load balancing.
- Běžné konfigurace tedy vzorů, jako je aktivní-aktivní failover, které těží z endpointů vracejících záznam CNAME.