Řešení potíží s odchozím připojením k Azure Load Balanceru
Přečtěte si pokyny k řešení potíží pro odchozí připojení v Azure Load Balanceru. To zahrnuje pochopení překladu zdrojových síťových adres (SNAT) a jeho dopadu na připojení, používání jednotlivých veřejných IP adres na virtuálních počítačích a navrhování aplikací pro efektivitu připojení, aby nedocházelo k vyčerpání portů SNAT. Většina problémů s odchozím připojením, které zákazníci mají, je způsobené vyčerpáním portů SNAT a vypršením časového limitu připojení, které vede 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 vašeho stávajícího nástroje pro vyrovnávání zatížení. Monitorujte a ověřte nebo určete riziko vyčerpání SNAT. Pokud máte potíže s porozuměním chování odchozího připojení, použijte statistiku zásobníku IP adres (netstat) nebo shromážděte zachytávání paketů. Tyto zachytávání paketů můžete provádět v hostovaném operačním systému vaší instance nebo k zachytávání paketů použít Network Watcher. Ve většině scénářů Azure doporučuje použít bránu NAT pro odchozí připojení, aby se snížilo riziko vyčerpání SNAT. Pokud vaše služba spouští opakované odchozí připojení TCP nebo UDP ke stejnému cíli, důrazně se doporučuje brána NAT.
Optimalizace nasazení Azure pro odchozí připojení
Je důležité optimalizovat nasazení Azure pro odchozí připojení. Optimalizace může zabránit nebo zmírnit problémy s odchozím připojením.
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žívání portů SNAT brány NAT pomáhá vyřešit běžné problémy s vyčerpáním ANAT a připojením SNAT. Další informace o službě Azure NAT Gateway najdete v tématu Co je Azure NAT Gateway?
Jak brána NAT snižuje riziko vyčerpání portů SNAT?
Azure Load Balancer přiděluje pevné objemy portů SNAT jednotlivým instancím 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 v případě, že nerovnoměrné přenosy způsobí, že konkrétní virtuální počítač odesílá vyšší objem odchozích připojení. Na rozdíl od nástroje pro vyrovnávání zatížení brána NAT dynamicky přiděluje porty SNAT napříč všemi instancemi virtuálních počítačů v rámci podsítě.
Služba NAT Gateway zpřístupňuje dostupné porty SNAT pro každou instanci 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é potřebují z dostupného fondu portů pro nová připojení. Dynamické přidělování snižuje riziko vyčerpání SNAT.
Výběr portů a opakované použití chování
Brána NAT vybere porty náhodně z dostupného fondu portů. Pokud nejsou dostupné porty, porty SNAT se znovu používají, pokud neexistuje žádné připojení ke stejné cílové veřejné IP adrese a portu. Díky tomuto výběru portu a opakovanému použití brány NAT gateway dochází k méně pravděpodobnému vypršení časových limitů připojení.
Další informace o tom, jak funguje využití SNAT a portů pro službu NAT Gateway, najdete v základních tématech SNAT. Existuje několik podmínek, kdy pro odchozí připojení nemůžete použít službu NAT Gateway. Další informace o omezeních služby NAT Gateway najdete v tématu Omezení služby NAT Gateway.
Pokud nemůžete použít bránu NAT 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ý nástroj pro vyrovnávání zatížení úrovně Standard a dochází k vyčerpání SNAT nebo selhání připojení, ujistěte se, že používáte odchozí pravidla s ručním přidělením portů. Jinak se pravděpodobně spoléháte na výchozí přidělení portů nástroje pro vyrovnávání zatížení. Výchozí přidělení portů automaticky přiřadí konzervativní počet portů, což je založené na počtu instancí ve vašem back-endovém fondu. Výchozí přidělení portů 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 připojení, pokud je potřeba znovu přidělit porty.
Další informace o výchozím přidělování 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ělení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í, aby se vynásobil počet dostupných portů SNAT. Než přidáte další front-endové IP adresy, ujistěte se, že rozumíte tomu, proč vyčerpáváte porty SNAT.
Podrobné pokyny najdete v tématu Návrh aplikací tak, aby efektivně použí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. Když jsou nakonfigurovaná pravidla 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 individuální 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 k 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 poskytnuté veřejnou IP adresou. Na rozdíl od nástroje pro vyrovnávání zatížení nebo brány NAT jsou porty přístupné jenom jednomu virtuálnímu počítači přidruženému k IP adrese.
Důrazně doporučujeme zvážit využ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 úplně vyhnuli SNAT. 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 přes koncové body služby pro privátní přístup ke službám hostovaným v Azure. Další informace o rozdílu mezi privátním propojením 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 jednotlivé požadavky doporučujeme nakonfigurovat aplikaci tak, aby znovu používala připojení. Opakované použití připojení vede k výkonnějším transakcím TCP a je zvlášť relevantní pro protokoly, jako je HTTP/1.1, kde je výchozí použití připojení. Toto opakované použití se vztahuje na jiné protokoly, které používají protokol HTTP jako jejich přenos, jako je REST.
Upravte aplikaci tak, aby využívala sdružování připojení.
V aplikaci použijte 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 vytvoří předvídatelnější prostředí.
Toto schéma může zvýšit propustnost požadavků tím, že povolí více souběžných operací, když jedno připojení blokuje odpověď operace.
Sdružování připojení už může existovat v rámci architektury, kterou používáte k vývoji aplikace nebo nastavení konfigurace pro vaši aplikaci. Sdružování připojení můžete kombinovat s opětovným použitím připojení. Vaše více požadavků pak spotřebuje pevný a předvídatelný počet portů na stejnou cílovou IP adresu a port.
Požadavky využívají efektivní využití transakcí TCP a snižují latenci a využití prostředků. Transakce UDP můžou být také přínosné. Správa počtutoch
Upravte aplikaci tak, aby využívala méně agresivní logiku opakování.
Když dojde k vyčerpání portů SNAT nebo selhání aplikace, agresivní nebo hrubá síla opakování bez rozpadu a zpětného vypnutí logiky způsobí vyčerpání nebo zachování. Poptávku po portech SNAT můžete snížit pomocí méně agresivní logiky opakování.
Pokud jsou pokusy příliš agresivní, nemusí mít připojení dostatek času na zavření a uvolnění portů SNAT pro opakované použití v závislosti na nakonfigurované době nečinnosti.
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ý se dá upravit až na 100 minut. Protokol TCP keepalives můžete použít k aktualizaci nečinný tok 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 zahájily udržování protokolu TCP. Pro aplikační vrstvu existují podobné koncepty, včetně konfigurací databázového klientského serveru. 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: