Řešení potíží s Azure Load Balancer odchozím připojením

Přečtěte si pokyny k řešení potíží s odchozími připojeními v Azure Load Balancer. To zahrnuje pochopení překladu zdrojových síťových adres (SNAT) a jeho dopad na připojení, používání jednotlivých veřejných IP adres na virtuálních počítačích a návrh aplikací pro efektivitu připojení, aby se zabránilo vyčerpání portů SNAT. Většina problémů s odchozím připojením, se kterými se zákazníci můžou setkávat, je způsobená vyčerpáním portů SNAT a vypršením časových limitů připojení, které vedou k vyřazení paketů.

Další informace o portech SNAT najdete v tématu Překlad zdrojových síťových adres pro odchozí připojení.

Vysvětlení využití portů SNAT

Postupujte podle diagnostiky nástroje pro vyrovnávání zatížení úrovně Standard s metrikami, upozorněními a stavem prostředků a monitorujte využití a přidělení portů SNAT stávajícího nástroje pro vyrovnávání zatížení. Monitorováním ověřte nebo určete riziko vyčerpání SNAT. Pokud máte potíže s pochopením chování odchozího připojení, použijte statistiku zásobníku IP adres (netstat) nebo shromážděte zachytávání paketů. Tato zachytávání paketů můžete provádět v hostovaném operačním systému vaší instance nebo můžete k zachytávání paketů použít Network Watcher. Ve většině scénářů Azure doporučuje pro odchozí připojení používat službu NAT Gateway, aby se snížilo riziko vyčerpání SNAT. Bránu NAT Gateway důrazně doporučujeme, pokud vaše služba inicialuje opakovaná odchozí připojení TCP nebo UDP ke stejnému cíli.

Optimalizace nasazení Azure pro odchozí připojení

Je důležité optimalizovat nasazení Azure pro odchozí připojení. Optimalizace může zabránit problémům s odchozím připojením nebo je zmírnit.

Nasazení služby NAT Gateway pro odchozí připojení k internetu

Azure NAT Gateway je vysoce odolná a škálovatelná služba Azure, která poskytuje odchozí připojení k internetu z vaší virtuální sítě. Jedinečná metoda využití portů SNAT ve službě NAT Gateway pomáhá vyřešit běžné problémy s vyčerpáním ANAT a připojením. Další informace o službě Azure NAT Gateway najdete v tématu Co je Azure NAT Gateway?.

  • Jak brána NAT Gateway snižuje riziko vyčerpání portů SNAT?

    Azure Load Balancer přiděluje pevné množství portů SNAT každé instanci virtuálního počítače v back-endovém fondu. Tato metoda přidělování může vést k vyčerpání SNAT, zejména pokud nerovnoměrné vzorce provozu vedou k tomu, že konkrétní virtuální počítač odesílá větší objem odchozích připojení. Na rozdíl od nástroje pro vyrovnávání zatížení služba NAT Gateway dynamicky přiděluje porty SNAT všem instancím virtuálních počítačů v rámci podsítě.

    Služba NAT Gateway zpřístupňuje porty SNAT všem instancím v podsíti. Toto dynamické přidělování umožňuje instancím virtuálních počítačů používat počet portů SNAT, které každý potřebuje z dostupného fondu portů pro nová připojení. Dynamické přidělování snižuje riziko vyčerpání SNAT.

    Diagram Azure Load Balancer vs. Azure NAT Gateway

  • Výběr portu a chování při opakovaném použití

    Služba NAT Gateway náhodně vybere porty z dostupného fondu portů. Pokud nejsou dostupné porty, budou se porty SNAT opakovaně používat, pokud neexistuje připojení ke stejné cílové veřejné IP adrese a portu. Tento výběr portu a chování opakovaného použití služby NAT Gateway snižuje pravděpodobnost vypršení časového limitu připojení.

    Další informace o tom, jak funguje SNAT a využití portů ve službě NAT Gateway, najdete v tématu Základy SNAT. Existuje několik podmínek, za kterých nebudete moct používat službu NAT Gateway pro odchozí připojení. Další informace o omezeních služby NAT Gateway najdete v tématu Omezení služby NAT Gateway.

    Pokud nemůžete použít službu NAT Gateway pro odchozí připojení, projděte si další možnosti migrace popsané v tomto článku.

Konfigurace odchozích pravidel nástroje pro vyrovnávání zatížení pro maximalizaci portů SNAT na virtuální počítač

Pokud používáte veřejný standardní nástroj pro vyrovnávání zatížení a dochází k vyčerpání SNAT nebo selhání připojení, ujistěte se, že používáte pravidla odchozích přenosů s ručním přidělením portů. Jinak se pravděpodobně spoléháte na výchozí odchozí přístup nástroje pro vyrovnávání zatížení. Výchozí odchozí přístup automaticky přiděluje konzervativní počet portů, který je založen na počtu instancí ve vašem back-endovém fondu. Výchozí odchozí přístup není doporučenou metodou pro povolení odchozích připojení. Když se váš back-endový fond škáluje, může to mít vliv na vaše připojení, pokud je potřeba znovu přidělit porty.

Další informace o výchozím odchozím přístupu a přidělování výchozích portů najdete v tématu Překlad zdrojových síťových adres pro odchozí připojení.

Pokud chcete zvýšit počet dostupných portů SNAT na virtuální počítač, nakonfigurujte pravidla odchozích přenosů s ručním přidělováním portů v nástroji pro vyrovnávání zatížení. Pokud například víte, že máte v back-endovém fondu maximálně 10 virtuálních počítačů, můžete přidělit až 6 400 portů SNAT na virtuální počítač místo výchozích 1 024. Pokud potřebujete více portů SNAT, můžete přidat několik front-endových IP adres pro odchozí připojení a vynásobit tak počet dostupných portů SNAT. Před přidáním dalších front-endových IP adres se ujistěte, že rozumíte tomu, proč vyčerpáváte porty SNAT.

Podrobné pokyny najdete v části Návrh aplikací tak, aby efektivně využívaly připojení dále v tomto článku. Pokud chcete přidat další IP adresy pro odchozí připojení, vytvořte konfiguraci front-endové IP adresy pro každou novou IP adresu. Při konfiguraci pravidel odchozích přenosů můžete pro back-endový fond vybrat několik konfigurací front-endových IP adres. Pro příchozí a odchozí připojení se doporučuje používat různé IP adresy. Různé IP adresy izolují provoz pro lepší monitorování a řešení potíží.

Konfigurace jednotlivé veřejné IP adresy na virtuálním počítači

U menších nasazení můžete zvážit přiřazení veřejné IP adresy virtuálnímu počítači. Pokud je k virtuálnímu počítači přiřazená veřejná IP adresa, budou pro virtuální počítač dostupné všechny porty poskytované veřejnou IP adresou. Na rozdíl od nástroje pro vyrovnávání zatížení nebo služby NAT Gateway jsou porty přístupné jenom pro jeden virtuální počítač přidružený k IP adrese.

Důrazně doporučujeme zvážit místo toho použití služby NAT Gateway, protože přiřazování jednotlivých veřejných IP adres není škálovatelné řešení.

Poznámka

Pokud potřebujete připojit virtuální síť Azure ke službám Azure PaaS, jako je Azure Storage, Azure SQL, Azure Cosmos DB nebo jiné dostupné služby Azure, můžete použít Azure Private Link, abyste se SNAT zcela vyhnuli. Azure Private Link odesílá provoz z vaší virtuální sítě do služeb Azure přes páteřní síť Azure místo přes internet.

Private Link je doporučená možnost pro privátní přístup ke službám hostovaným v Azure přes koncové body služby. Další informace o rozdílu mezi Private Link a koncovými body služby najdete v tématu Porovnání privátních koncových bodů a koncových bodů služby.

Návrh aplikací efektivních pro připojení

Při návrhu aplikací zajistěte, aby efektivně používaly připojení. Efektivita připojení může snížit nebo eliminovat vyčerpání portů SNAT v nasazených aplikacích.

Upravte aplikaci tak, aby mohla připojení používat opakovaně.

Místo generování jednotlivých atomických připojení TCP pro každý požadavek doporučujeme nakonfigurovat aplikaci tak, aby znovu používala připojení. Opakované použití připojení má za následek výkonnější transakce TCP a je relevantní zejména pro protokoly, jako je HTTP/1.1, kde je výchozí opětovné použití připojení. Toto opakované použití se vztahuje na jiné protokoly, které jako přenos používají PROTOKOL HTTP, například REST.

Upravte aplikaci tak, aby využívala sdružování připojení.

Použijte ve své aplikaci schéma sdružování připojení, ve kterém se požadavky interně distribuují napříč pevnou sadou připojení a opakovaně se používají, pokud je to možné. Toto schéma omezuje počet používaných portů SNAT a vytváří předvídatelnější prostředí.

Toto schéma může zvýšit propustnost požadavků tím, že povolí více současných operací, když jedno připojení blokuje odpověď na operaci.

Sdružování připojení už může existovat v rámci architektury, kterou používáte k vývoji aplikace, nebo v nastavení konfigurace vaší aplikace. Sdružování připojení můžete kombinovat s opětovným použitím připojení. Několik požadavků pak využívá pevný a předvídatelný počet portů na stejnou cílovou IP adresu a port.

Požadavky těží z efektivního využití transakcí TCP, což snižuje latenci a využití prostředků. Výhody můžou být také pro transakce UDP. Správa počtu toků UDP může zabránit vyčerpání a spravovat využití portů SNAT.

Upravte aplikaci tak, aby využívala méně agresivní logiku opakování.

Když jsou porty SNAT vyčerpány nebo dojde k selhání aplikací, agresivní opakování nebo opakování hrubou silou bez rozpadu a logiky zpětného ukončení způsobí vyčerpání nebo zachování. Poptávku po portech SNAT můžete snížit pomocí méně agresivní logiky opakování.

V závislosti na nakonfigurované době nečinnosti nemusí mít připojení dostatek času na uzavření a uvolnění portů SNAT pro opakované použití, pokud jsou pokusy o opakování příliš agresivní.

Pomocí příkazu keepalives obnovte časový limit nečinnosti odchozího připojení.

Odchozí pravidla nástroje pro vyrovnávání zatížení mají ve výchozím nastavení 4minutový časový limit nečinnosti, který je možné upravit až na 100 minut. Pomocí příkazu TCP keepalives můžete aktualizovat tok nečinnosti a v případě potřeby tento časový limit nečinnosti resetovat. Pokud používáte protokol TCP keepalives, stačí je povolit na jedné straně připojení.

Stačí jim například povolit na straně serveru pouze resetování časovače nečinnosti toku a není nutné, aby obě strany inicializovaly protokol TCP keepalives. Podobné koncepty existují i pro aplikační vrstvu, včetně konfigurací databáze klient-server. Na straně serveru zkontrolujte, jaké možnosti existují pro uchování specifické pro aplikaci.

Další kroky

Další informace o vyčerpání portů SNAT, možnostech odchozího připojení a výchozím odchozím přístupu najdete tady: