Řešení potíží s chybami odchozích připojení
Tento článek je určený k zajištění řešení běžných problémů, ke kterým může dojít u odchozích připojení z Azure Load Balancer. Většina problémů s odchozím připojením, ke kterým se zákazníci setkávají, je způsobená vyčerpáním portů ve službě překladu adres (SNAT) a vypršení časových limitů připojení, což vede k vyřazení paketů Tento článek popisuje kroky pro zmírnění každého z těchto problémů.
Vyhněte se SNAT
Nejlepším způsobem, jak se vyhnout vyčerpání portů SNAT, je eliminace nutnosti SNAT v prvním místě, pokud je to možné. V některých případech to nemusí být možné. Například při připojování k veřejným koncovým bodům. V některých případech je to ale možné a můžete ho dosáhnout připojením soukromě k prostředkům. pokud se připojujete ke službám azure, jako jsou Storage, SQL, Cosmos DB nebo jakékoli jiné ze služeb azure, které jsou tady uvedené, využití privátního propojení azure eliminuje nutnost SNAT. V důsledku toho nebudete při vyčerpání portů SNAT v úvahu potenciální potíže s připojením.
Služba privátního propojení je podporována také Snowflake, MongoDB, inpružným, elastickým a jiným takovým službám.
Správa vyčerpání portů SNAT (PAT)
Dočasné porty používané pro Pat jsou prostředek exhaustible, jak je popsáno na samostatném virtuálním počítači bez veřejné IP adresy a virtuálního počítače s vyrovnáváním zatížení bez veřejné IP adresy. Pomocí tohoto průvodce můžete monitorovat využití dočasných portů a porovnat je s vaším aktuálním přidělením, abyste zjistili riziko nebo potvrzení vyčerpání SNAT.
Pokud víte, že zahajujete mnoho odchozích připojení TCP nebo UDP ke stejné cílové IP adrese a portu, a zjistíte, že se nezdařila odchozí připojení nebo pokud se vám doporučuje podpora, že vyčerpáte porty SNAT (předběžně přidělené dočasné porty používané Pat), máte několik obecných možností zmírnění. Projděte si tyto možnosti a rozhodněte, co je k dispozici a co nejlépe vyhovuje vašemu scénáři. Je možné, že jeden nebo více může pomáhat při správě tohoto scénáře.
Pokud se vám nedaří pochopit chování odchozího připojení, můžete použít statistiku protokolu IP stack (netstat). Nebo může být užitečné sledovat chování připojení pomocí zachycení paketů. Tato zachytávání paketů můžete provést v hostovaném operačním systému vaší instance nebo použít Network Watcher pro zachytávání paketů.
Ruční přidělení portů SNAT pro maximalizaci portů SNAT na virtuální počítač
Jak je definováno na předem přidělených portech, nástroj pro vyrovnávání zatížení automaticky přidělí porty na základě počtu virtuálních počítačů v back-endu. Ve výchozím nastavení se to provede uvážlivě, aby se zajistila škálovatelnost. Pokud znáte maximální počet virtuálních počítačů, které budete mít v back-endu, můžete porty SNAT přidělit ručně v každém odchozím pravidle. Pokud například víte, že budete mít maximálně 10 virtuálních počítačů, můžete k jednomu virtuálnímu počítači přidělit porty 6 400 SNAT a nikoli výchozí 1 024.
Úprava aplikace pro opětovné použití připojení
Můžete snížit poptávku za dočasné porty, které se používají pro SNAT, a to tak, že znovu použijete připojení ve vaší aplikaci. Opakované použití připojení je zvláště důležité pro protokoly jako HTTP/1.1, kde je výchozí nastavení opětovného použití připojení. A další protokoly, které používají protokol HTTP jako jejich přenos (například REST), můžou mít výhodu.
Opakované použití je vždy lepší než individuální, atomické připojení TCP pro každý požadavek. Opakované použití má za následek více výkonné, velmi efektivní transakce TCP.
Úprava aplikace pro použití sdružování připojení
Ve své aplikaci můžete použít schéma sdružování připojení, ve kterém jsou požadavky interně distribuovány přes pevně danou sadu připojení (podle toho, co je to možné). Toto schéma omezuje počet dočasných používaných portů a vytvoří předvídatelné prostředí. Toto schéma může také zvýšit propustnost žádostí tím, že umožňuje více souběžných operací, když je jedno připojení blokováno na reakci operace.
Sdružování připojení může již existovat v rámci rozhraní, které používáte k vývoji aplikace nebo nastavení konfigurace aplikace. Sdružování připojení můžete kombinovat s opětovným použitím připojení. Vaše vícenásobné požadavky pak spotřebovávají pevný a předvídatelný počet portů na stejnou cílovou IP adresu a port. Požadavky také využívají efektivní využití transakcí TCP, které snižují latenci a využití prostředků. Transakce UDP můžou také těžit z toho důvodu, že správa počtu toků UDP se může vyhnout podmínkám výfuku a spravovat využití portů SNAT.
Upravit aplikaci tak, aby používala méně agresivní logiku opakování
Pokud jsou předběžně přidělené dočasné porty používané pro Pat vyčerpány nebo dojde k selhání aplikace, agresivní nebo nepřímý pokus o opakování při nedecay a omezení rychlostií služby Logic způsobuje vyčerpání nebo uchování. Můžete snížit poptávku za dočasné porty pomocí méně agresivní logiky opakování.
Dočasné porty mají časový limit nečinnosti 4 minut (není upravitelný). Pokud jsou opakované pokusy příliš agresivní, vyčerpání není nijak jasné. Proto zvažte, jak--a jak často--vaše aplikace pokusy o opakování jsou důležitou součástí návrhu.
Přiřazení veřejné IP adresy každému virtuálnímu počítači
Přiřazení veřejné IP adresy změní váš scénář na veřejnou IP adresu virtuálního počítače. Pro virtuální počítač jsou k dispozici všechny dočasné porty veřejné IP adresy, které se používají pro každý virtuální počítač. (Na rozdíl od scénářů, kdy jsou dočasné porty veřejné IP adresy sdílené se všemi virtuálními počítači přidruženými k příslušnému back-end fondu.) Existují kompromisy, které je potřeba vzít v úvahu, například dodatečné náklady na veřejné IP adresy a potenciální dopad na filtrování velkého počtu jednotlivých IP adres.
Poznámka
Tato možnost není k dispozici pro role webového pracovního procesu.
Použít více front-endu
Při použití veřejných Standard Load Balancer přiřadíte více front-ENDOVÉ IP adresy pro odchozí připojení a vynásobte počet dostupných portů SNAT. Vytvořte konfiguraci IP adresy front-endu, pravidlo a back-end fond pro aktivaci programování SNAT na veřejnou IP adresu front-endu. Pravidlo nemusí fungovat a sonda stavu nemusí být úspěšná. Pokud používáte více front-endu pro příchozí i (nikoli jenom pro odchozí), měli byste použít vlastní sondy stavu, abyste zajistili spolehlivost.
Poznámka
Ve většině případů je vyčerpání portů SNAT označením špatného návrhu. Ujistěte se, že rozumíte tomu, proč vyčerpáte porty před použitím více front-endu pro přidání portů SNAT. Můžete maskovat problém, který může vést k selhání později.
Horizontální navýšení kapacity
Předem přidělené porty se přiřazují na základě velikosti fondu back-endu a seskupené do vrstev, aby se minimalizovalo přerušení, když se některé porty musí přidělit, aby se vešly do další větší úrovně velikosti fondu back-endu. Můžete mít možnost zvýšit využití portu SNAT pro daný front-end tím, že back-end fond nastavíte na maximální velikost pro danou vrstvu. Mějte na paměti, že k efektivnímu horizontálnímu navýšení kapacity aplikace bez rizika vyčerpání SNAT je potřeba výchozí přidělení portu.
Například dva virtuální počítače ve fondu back-end budou mít 1024 až až na konfiguraci IP adres, což umožňuje celkem 2048 portů SNAT pro nasazení. Pokud se nasazení zvýšilo na 50 virtuálních počítačů, a to i v případě, že počet předvázaných portů zůstává na virtuálním počítači konstantní, může nasazení použít celkem 51 200 portů SNAT (50 x 1024). Pokud chcete horizontální navýšení kapacity nasazení, zkontrolujte počet předdefinovaných portů na jednu vrstvu, abyste se ujistili, že budete škálovat měřítko na maximum pro příslušnou vrstvu. Pokud jste v předchozím příkladu zvolili horizontální navýšení kapacity na 51 a nikoli 50 instancí, budete postupovat až na další vrstvu a skončíte s méně porty SNAT na jeden virtuální počítač i v celkovém počtu.
Pokud nakonfigurujete horizontální navýšení úrovně velikosti fondu back-end, je možné, že některá z vašich odchozích připojení vyprší časový limit, pokud je potřeba znovu přidělit přidělené porty. Pokud používáte jenom některé z vašich portů SNAT, horizontální navýšení kapacity v nejbližší větší velikosti fondu back-endu je bezvýznamnými. Po každém přesunu na další úroveň fondu back-end se existující porty znovu přidělí. Pokud nechcete, aby to bylo provedeno, je nutné nasazovat nasazení na velikost vrstvy. Nebo se ujistěte, že se vaše aplikace může v případě potřeby detekovat a opakovat. Možnost udržení protokolu TCP může pomoci při detekci, kdy porty SNAT již nefungují, protože se znovu přidělují.
Obnovení odchozího nečinného časového limitu pomocí kontroly stavu
Odchozí připojení mají časový limit nečinnosti 4 minut. Tento časový limit je přizpůsobitelný prostřednictvím odchozích pravidel. K aktualizaci toku nečinnosti můžete také použít přenos (například kontroly stavu protokolu TCP) nebo obnovení aplikační vrstvy a v případě potřeby resetovat časový limit nečinnosti.
Při použití kontroly udržení protokolu TCP je stačí povolit je na jedné straně připojení. Například stačí, abyste je povolili na straně serveru pouze k resetování časovače nečinnosti toku a není nutné, aby obě strany zahájily kontroly stavu protokolu TCP. Pro aplikační vrstvu, včetně konfigurací klient-server databáze, existují podobné koncepty. Na straně serveru můžete zjistit, jaké možnosti se v případě kontroly a nastavení pro konkrétní aplikaci existují.
Další kroky
Pořád se snažíme vylepšit prostředí našich zákazníků. pokud máte problémy s odchozím připojením, která nejsou uvedená nebo vyřešena v tomto článku, odešlete zpětnou vazbu prostřednictvím GitHub v dolní části této stránky a my budeme vaši zpětnou vazbu řešit co nejdříve.