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.
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: