Článek přečtěte do 5 min.

Používání služby Oracle Database for Azure (OracleDB for Azure) připojené k síti hub-and-spoke musí být povoleno zjišťování cesty MTU (PMTUD).

Toto nastavení však nemusí být možné z následujících důvodů:

  • V Azure nemůžete povolit pouze konkrétní typy protokolu ICMP (Internet Control Message Protocol) a z bezpečnostních důvodů nechcete povolit veškerý provoz ICMP.
  • Ne všechny víceuzlové brány firewall třetích stran umožňují stálost relace. ICMP provoz tedy může chybně směrovat mezi uzly firewallu a pakety PMTUD jsou zahazovány.
  • Ve službě Azure Firewall nemůžete povolit persistenci relace, takže pakety PMTUD lze ze stejného důvodu zahazovat.

Pokud se vás tato omezení týkají, ruční snížení nastavení maximální přenosové jednotky (MTU) je považováno za řešení, protože pak PMTUD není vyžadováno. Ruční snížení MTU nemá žádný dopad na výkon vašich připojení z vaší sítě Azure ve srovnání s používáním PMTUD. Protože maximální velikost segmentu (MSS) v tunelu mezi Azure a Oracle Cloud Infrastructure (OCI) je omezená, ruční snížení MTU má stejný výsledek, jaký dosahuje PMTUD.

Tento článek popisuje podrobnosti o různých možnostech tohoto řešení.

Zkušené chování

Pakety PMTUD, které nedosáhnou svého cíle, způsobí zablokování při pokusu o připojení ze zdroje v mluvené virtuální síti k prostředku OracleDB for Azure. V závislosti na použitých nástrojích a protokolech mají selhání připojení různé podoby. Například při použití SQL*Plus vyprší časový limit připojení, jak je znázorněno na následujícím obrázku:

Snímek obrazovky výstupu pro připojení SQL*Plus po vypršení časového limitu.

Obrázek 1: Příklad připojení SQL*Plus s časovým limitem

Jako další příklad vyprší také přímé připojení SSH k hostiteli databáze.

Snímek obrazovky výstupu pro přímé připojení SSL po vypršení časového limitu. 

Obrázek 2: Příklad připojení SSH s časovým limitem

Můžeme však potvrdit, že konektivita existuje úspěšným zahájením relace telnet na portu 1521 na hostiteli databáze:

Snímek obrazovky úspěšného připojení telnet.

Obrázek 3: Příklad úspěšného připojení telnet

Rozlišení

Standardním řešením těchto problémů je povolit PMTUD, jak je vysvětleno v našem blogu o implementaci OracleDB pro Azure pomocí sítě hub-and-spoke. Ruční snížení nastavení MTU se považuje za řešení, pokud tato metoda není proveditelná, protože PMTUD není vyžadován. K dosažení tohoto cíle můžete buď nastavit pevnou velikost datové jednotky relace (SDU) pro SQL*Net, nebo nastavit pevnou velikost MTU pro síťové trasy. Tyto změny můžete provést buď na jednotlivých klientech, nebo centrálně na databázovém serveru, takže máte čtyři možnosti rozlišení:

SQL*Net OSOBA
Databázový server Nastavte pevnou velikost SDU pro SQL*Net v konfiguraci sítě databáze Nastavte pevnou velikost MTU na databázovém serveru
Připojení klienta Nastavte pevnou velikost SDU pro připojovací řetězce SQL*Net na klientech Nastavte pevnou velikost MTU na klientovi

Řešení SQL*Net provádíme změny pouze v připojeních SQL*Net, takže připojení k databázi Oracle používají tuto metodu. Řešení MTU změníme všechny skoky síťového provozu na konkrétních trasách, takže všechna připojení fungují, včetně SSH.

V obou případech můžeme provést centrální změnu na databázovém serveru, která pokryje všechna připojení, nebo provést individuální změny na klientech, ze kterých jsou připojení vytvářena.

Doporučujeme následující kombinaci řešení:

  • Provádějte změny SQL*Net centrálně v databázi. Jakékoli budoucí připojení k databázi je také přínosné, aniž by bylo nutné provádět jakékoli další změny.
  • Implementujte změny MTU na konkrétních klientech pro administrátory, kteří vyžadují přímé připojení SSH k hostiteli databáze.

U ostatních scénářů si můžete vybrat jinak, pojďme si tedy všechny čtyři možnosti prohlédnout podrobněji.

Nastavte omezenou velikost SDU pro SQL*Net

Konkrétní velikost paketu pro připojení SQL*Net můžete nastavit pomocí parametru SDU. Pokud jej nastavíte dostatečně nízko, nemusíte vyjednávat maximální velikost segmentu (MSS) připojení pro provoz SQL*Net.

Nastavte omezenou velikost SDU pro připojovací řetězce SQL*Net na klientech

Když je navázáno připojení SQL*Net z klienta, můžete nastavit parametr SDU jako součást připojovacího řetězce. Například, když používáte EZConnect, můžete nastavit parametr sdu=, jak je znázorněno na obrázku 4:

Snímek obrazovky řetězce EZConnect s upraveným parametrem SDU.

Obrázek 4: Příklad použití řetězce EZConnect s upraveným parametrem SDU.

Při použití úplné položky tnsnames.ora můžete nastavit parametr SDU podle dokumentace SDU.

Nastavte omezenou velikost SDU pro SQL*Net v konfiguraci sítě databáze

Výchozí velikost SDU můžete centrálně nastavit v konfiguraci sítě databáze pomocí sady parametrů DEFAULT_SDU_SIZE v sqlnet.ora, jak je znázorněno na obrázku 5.

Zvažte následující důležité podrobnosti:

  • Ve službě Exadata Database používají databáze a gridová infrastruktura různé soubory sqlnet.ora. Ujistěte se, že je parametr nastaven v souboru sqlnet.ora používaném databází. Tato úvaha se nevztahuje na službu Base Database, která má pouze 1 soubor sqlnet.ora.
  • Pokud klienti připojující se z jiných prostředí, například z jiných prostředí, než je Azure, také používají tuto databázi, tato nastavení ovlivní také tato připojení. Toto nastavení tedy nemusí být optimální, pokud chcete pro tato připojení větší velikost SDU.

Snímek obrazovky přidaného parametru pro výchozí velikost SDU v sqlnet.ora.

Obrázek 5: Přidání parametru DEFAULT_SDU_SIZE v sqlnet.ora

Nastavte omezenou velikost MTU pro síťové trasy

Nastavením omezené velikosti MTU pro konkrétní síťovou trasu mezi hostitelem aplikace a hostitelem databáze můžeme zajistit, že MSS nebude nikdy nutné vyjednávat. Pak jsou velikosti paketů vždy dostatečně malé, aby prošly Azure, OCI a tunelem mezi nimi.

Toto zástupné řešení používá příkaz ip route k nastavení velikosti MTU pro konkrétní síťovou trasu. Dokumentace OCI Avoiding the Need for PMTUD popisuje tento proces.

Příkaz ip nepřetrvává po restartování. Chcete-li zachovat konfiguraci trasy a MTU, nakonfigurujte příslušné soubory rozhraní ifconfig (ifcfg-$iface) a restartujte síťové rozhraní. Pokud restart sítě v daném okamžiku není možný, můžete upravit položky MTU a směrování za běhu pomocí příkazu ip.

Nastavte na klientovi omezenou velikost MTU

Na linuxových klientech můžeme pomocí příkazu ip route nastavit konkrétní velikost MTU pro síťovou cestu k databázovému serveru. Obrázek 6 ukazuje příkaz používaný na virtuálním počítači (VM) v paprskové virtuální síti s použitím úplné podsítě databáze (192.168.2.0/24) jako cíle. Po nastavení cíle můžeme SSH na databázový server v této podsíti.

Snímek obrazovky příkazu ip route nastavujícího velikost MTU v databázi.

Obrázek 6: Příklad příkazu ip route pro nastavení velikosti MTU na klientovi

Nastavte omezenou velikost MTU na databázovém serveru

Pro Oracle Base Database můžete použít příkaz ip route přímo na hostiteli databáze. Obrázek 7 ukazuje nastavení trasy k virtuální síti Speaker1 (10.40.1.0/24) pro použití menší velikosti MTU. Potom jsou spojení mezi těmito stroji možná bez dalšího nastavování.

Snímek obrazovky příkazu ip route nastavujícího velikost MTU v databázi.

Obrázek 7: Příklad příkazu ip route pro nastavení velikosti MTU na databázovém serveru

Pro databázi Exadata je toto zástupné řešení platné při provádění této změny na úrovni DomU. Není však certifikován, a proto se nedoporučuje pro databázi Exadata.

Závěr

Mnoho podnikových zákazníků hledá multicloudová řešení rozděleného zásobníku, která může poskytnout Oracle Database Service for Azure. Tyto podniky ve svém prostředí Azure často používají topologii sítě hub-and-spoke. Kvůli privátnímu tunelu vytvořenému OracleDB pro Azure a výchozímu blokování veškerého provozu ICMP ve virtuálních sítích Azure, které nejsou přímo vzájemně rovnocenné, může toto nastavení vést k pozastavení připojení.

V této situaci je řešením umožnit, aby provoz ICMP volně proudil mezi všemi prostředky a síťovými komponentami, jak je popsáno v našem blogu Implementace OracleDB pro Azure pomocí sítě hub-and-spoke. Pokud toto řešení není proveditelné, zvažte ruční snížení nastavení SDU nebo MTU, jak je popsáno v tomto blogu, jako řešení, protože PMTUD není vyžadováno.

Zdroj: Oracle