A kimenő kapcsolatok Azure Load Balancer problémáinak elhárítása

Útmutató a kimenő kapcsolatok hibaelhárításához Azure Load Balancer. Ez magában foglalja a forráshálózati címfordítás (SNAT) és a kapcsolatokra gyakorolt hatását, az egyes nyilvános IP-címek virtuális gépeken való használatát, valamint az SNAT-portok elfogyásának elkerülése érdekében a kapcsolat hatékonyságát szolgáló alkalmazások tervezését. Az ügyfelek által tapasztalt kimenő kapcsolattal kapcsolatos legtöbb problémát az SNAT-portok elfogyása és a kapcsolatok időtúllépése okozza, ami a csomagok elvetéséhez vezet.

További információ az SNAT-portokról: Forráshálózati címfordítás kimenő kapcsolatokhoz.

Az SNAT-port használatának ismertetése

Kövesse a Standard terheléselosztó-diagnosztikát metrikákkal, riasztásokkal és erőforrás-állapottal a meglévő terheléselosztó SNAT-porthasználatának és -lefoglalásának monitorozásához. Monitorozás az SNAT elfogyásának ellenőrzéséhez vagy meghatározásához. Ha nem tudja megérteni a kimenő kapcsolat viselkedését, használjon IP-veremstatisztikákat (netstat) vagy gyűjtsön csomagrögzítéseket. Ezeket a csomagrögzítéseket elvégezheti a példány vendég operációs rendszerében, vagy használhatja a Network Watcher csomagrögzítéshez. A legtöbb forgatókönyv esetében az Azure a NAT Gateway használatát javasolja a kimenő kapcsolatokhoz az SNAT kimerülésének kockázatának csökkentése érdekében. A NAT Gateway használata erősen ajánlott, ha a szolgáltatás ismétlődő TCP- vagy UDP-kimenő kapcsolatokat kezdeményez ugyanahhoz a célhelyhez.

Az Azure-üzemelő példányok optimalizálása a kimenő kapcsolatokhoz

Fontos, hogy az Azure-üzemelő példányokat a kimenő kapcsolatokra optimalizálja. Az optimalizálás megakadályozhatja vagy enyhítheti a kimenő kapcsolatokkal kapcsolatos problémákat.

NAT Gateway üzembe helyezése kimenő internetkapcsolathoz

Az Azure NAT Gateway egy rendkívül rugalmas és méretezhető Azure-szolgáltatás, amely kimenő internetkapcsolatot biztosít a virtuális hálózatról. A NAT Gateway SNAT-portok felhasználására használt egyedi módszere segít megoldani az SNAT gyakori kimerülési és csatlakozási problémáit. További információ az Azure NAT Gatewayről: Mi az az Azure NAT Gateway?.

  • Hogyan csökkenti a NAT Gateway az SNAT-portok elfogyásának kockázatát?

    Azure Load Balancer rögzített mennyiségű SNAT-portot foglal le a háttérkészlet minden virtuálisgép-példányához. Ez a kiosztási módszer SNAT-kimerüléshez vezethet, különösen akkor, ha az egyenetlen forgalmi minták miatt egy adott virtuális gép nagyobb mennyiségű kimenő kapcsolatot küld. A terheléselosztóval ellentétben a NAT Gateway dinamikusan lefoglalja az SNAT-portokat az alhálózaton belüli összes virtuálisgép-példányhoz.

    A NAT Gateway elérhetővé teszi az SNAT-portokat az alhálózat minden példánya számára. Ez a dinamikus kiosztás lehetővé teszi, hogy a virtuálisgép-példányok az új kapcsolatokhoz rendelkezésre álló portkészletből származó SNAT-portok számát használják. A dinamikus kiosztás csökkenti az SNAT kimerülésének kockázatát.

    Az Azure Load Balancer és az Azure NAT Gateway diagramja.

  • Portválasztás és újrahasználati viselkedés.

    A NAT Gateway véletlenszerűen választ portokat a rendelkezésre álló portkészletből. Ha nincsenek elérhető portok, a rendszer újra felhasználja az SNAT-portokat, amíg nincs kapcsolat ugyanahhoz a cél nyilvános IP-címhez és porthoz. A NAT Gateway ezen portkiválasztási és újrafelhasználási viselkedése kisebb valószínűséggel tapasztal kapcsolati időtúllépést.

    Az SNAT és a porthasználat NAT Gatewayhez való használatáról az SNAT alapjai című témakörben talál további információt. Vannak olyan feltételek, amelyekben nem fogja tudni használni a NAT Gatewayt a kimenő kapcsolatokhoz. További információ a NAT Gateway korlátozásáról: NAT Gateway-korlátozások.

    Ha nem tud NAT Gatewayt használni a kimenő kapcsolatokhoz, tekintse meg az ebben a cikkben ismertetett egyéb migrálási lehetőségeket.

Terheléselosztó kimenő szabályainak konfigurálása az SNAT-portok virtuális gépenkénti maximalizálásához

Ha nyilvános standard terheléselosztót használ, és SNAT-kimerülést vagy csatlakozási hibákat tapasztal, győződjön meg arról, hogy a kimenő szabályokat manuális portfoglalással használja. Ellenkező esetben valószínűleg a terheléselosztó alapértelmezett kimenő hozzáférésére támaszkodik. Az alapértelmezett kimenő hozzáférés automatikusan konzervatív számú portot foglal le, amely a háttérkészlet példányainak számán alapul. Az alapértelmezett kimenő hozzáférés nem ajánlott módszer a kimenő kapcsolatok engedélyezéséhez. A háttérkészlet méretezése hatással lehet a kapcsolatokra, ha a portokat újra kell helyezni.

További információ az alapértelmezett kimenő hozzáférésről és az alapértelmezett portfoglalásról: Forráshálózati címfordítás a kimenő kapcsolatokhoz.

A virtuális gépenként elérhető SNAT-portok számának növeléséhez konfigurálja a kimenő szabályokat manuális portfoglalással a terheléselosztón. Ha például tudja, hogy legfeljebb 10 virtuális gép található a háttérkészletben, virtuális gépenként legfeljebb 6400 SNAT-portot foglalhat le az alapértelmezett 1024 helyett. Ha több SNAT-portra van szüksége, több előtérbeli IP-címet is hozzáadhat a kimenő kapcsolatokhoz az elérhető SNAT-portok számának szorzásához. Mielőtt további előtérbeli IP-címeket adna hozzá, győződjön meg arról, hogy tisztában van azzal, hogy miért kimeríti az SNAT-portokat.

Részletes útmutatásért lásd a cikk későbbi részében az Alkalmazások tervezése a kapcsolatok hatékony használatához című szakaszát. Ha további IP-címeket szeretne hozzáadni a kimenő kapcsolatokhoz, hozzon létre egy előtérbeli IP-konfigurációt minden új IP-címhez. Kimenő szabályok konfigurálásakor több előtérbeli IP-konfigurációt is kiválaszthat egy háttérkészlethez. Ajánlott különböző IP-címeket használni a bejövő és kimenő kapcsolatokhoz. A különböző IP-címek elkülönítik a forgalmat a jobb monitorozás és hibaelhárítás érdekében.

Egyéni nyilvános IP-cím konfigurálása virtuális gépen

Kisebb méretű üzemelő példányok esetén érdemes lehet nyilvános IP-címet hozzárendelni egy virtuális géphez. Ha nyilvános IP-cím van hozzárendelve egy virtuális géphez, a nyilvános IP-cím által biztosított összes port elérhető a virtuális gép számára. A terheléselosztótól vagy a NAT Gatewaytől eltérően a portok csak az IP-címmel társított egyetlen virtuális gép számára érhetők el.

Javasoljuk, hogy inkább a NAT Gateway használatát mérlegelje, mivel az egyes nyilvános IP-címek hozzárendelése nem skálázható megoldás.

Megjegyzés

Ha azure-beli virtuális hálózatot kell csatlakoztatnia az Azure PaaS-szolgáltatásokhoz, például az Azure Storage-hoz, a Azure SQL, az Azure Cosmos DB-hez vagy más elérhető Azure-szolgáltatásokhoz, a Azure Private Link használatával teljes mértékben elkerülheti az SNAT-t. Azure Private Link a virtuális hálózatról az Azure-szolgáltatások felé továbbítja a forgalmat az Azure gerinchálózatán keresztül, nem pedig az interneten keresztül.

Private Link ajánlott megoldás a szolgáltatásvégpontoknál az Azure által üzemeltetett szolgáltatásokhoz való privát hozzáféréshez. A Private Link és a szolgáltatásvégpontok közötti különbségről további információt a Privát végpontok és szolgáltatásvégpontok összehasonlítása című témakörben talál.

Kapcsolat-hatékony alkalmazások tervezése

Az alkalmazások tervezésekor győződjön meg arról, hogy azok hatékonyan használják a kapcsolatokat. A kapcsolat hatékonysága csökkentheti vagy kiküszöbölheti az SNAT-portok elfogyását az üzembe helyezett alkalmazásokban.

Az alkalmazás módosítása a kapcsolatok újbóli felhasználására

Ahelyett, hogy minden kéréshez egyéni, atomi TCP-kapcsolatokat hoznánk létre, javasoljuk, hogy konfigurálja az alkalmazást a kapcsolatok újbóli felhasználására. A kapcsolat újrafelhasználása nagyobb teljesítményű TCP-tranzakciókat eredményez, és különösen fontos az olyan protokollok esetében, mint a HTTP/1.1, ahol a kapcsolat újrafelhasználása az alapértelmezett. Ez az újrafelhasználás más protokollokra is vonatkozik, amelyek HTTP-t használnak átvitelként, például REST-ként.

Az alkalmazás módosítása kapcsolatkészletezés használatára

Alkalmazzon kapcsolatkészletezési sémát az alkalmazásban, ahol a kérések belsőleg vannak elosztva egy rögzített kapcsolatkészlet között, és lehetőség szerint újra felhasználhatók. Ez a séma korlátozza a használatban lévő SNAT-portok számát, és kiszámíthatóbb környezetet hoz létre.

Ez a séma növelheti a kérések átviteli sebességét azáltal, hogy több egyidejű műveletet engedélyez, ha egyetlen kapcsolat blokkolja egy művelet válaszát.

Előfordulhat, hogy a kapcsolatkészletezés már létezik azon a keretrendszeren belül, amelyet az alkalmazás vagy az alkalmazás konfigurációs beállításainak fejlesztéséhez használ. A kapcsolatkészletezést kombinálhatja a kapcsolat újrafelhasználásával. A több kérés rögzített, kiszámítható számú portot használ fel ugyanahhoz a cél IP-címhez és porthoz.

A kérések kihasználják a TCP-tranzakciók hatékony használatát, csökkentve a késést és az erőforrás-kihasználtságot. Az UDP-tranzakciók is hasznosak lehetnek. Az UDP-folyamatok számának kezelése elkerülheti a kimerülési feltételeket, és kezelheti az SNAT-port kihasználtságát.

Az alkalmazás módosítása kevésbé agresszív újrapróbálkozási logika használatára

Ha az SNAT-portok elfogynak vagy alkalmazáshibák lépnek fel, az agresszív vagy találgatásos újrapróbálkozások romlása és a visszalépési logika kimerülést okoznak vagy megmaradnak. Az SNAT-portok iránti keresletet egy kevésbé agresszív újrapróbálkozési logika használatával csökkentheti.

A konfigurált üresjárati időtúllépéstől függően, ha az újrapróbálkozások túl agresszívak, előfordulhat, hogy a kapcsolatoknak nincs elég idejük az SNAT-portok bezárására és felszabadítására az újbóli használathoz.

Életben tartási üzenetek használata az üresjárati idő visszaállítására

A terheléselosztó kimenő szabályai alapértelmezés szerint 4 perces tétlen időtúllépéssel rendelkeznek, amely legfeljebb 100 percig állítható. A TCP keepalives használatával frissítheti az üresjárati folyamatot, és szükség esetén alaphelyzetbe állíthatja ezt az üresjárati időtúllépést. TCP-keepalives használatakor elegendő engedélyezni őket a kapcsolat egyik oldalán.

Elegendő például csak a kiszolgálóoldalon engedélyezni őket a folyamat tétlen időzítőjének alaphelyzetbe állításához, és nem szükséges, hogy mindkét oldal TCP-megőrzést indítson. Hasonló fogalmak léteznek az alkalmazásréteghez, beleértve az adatbázis ügyfél-kiszolgáló konfigurációit is. Ellenőrizze a kiszolgálóoldalon, hogy milyen lehetőségek állnak rendelkezésre az alkalmazásspecifikus megtartókhoz.

Következő lépések

További információ az SNAT-portok elfogyásáról, a kimenő kapcsolati lehetőségekről és az alapértelmezett kimenő hozzáférésről: