VXLAN NSX-V — novērÅ”am underlay problēmas.

Sveiki, un vispirms nedaudz lirikas. Dažreiz es skaudÄ«gi raugos uz kolēģiem, kas strādā attālināti — jo tas ir lieliski, ka ir iespēja strādāt no jebkuras pasaules vietas, kas savienota ar internetu, brÄ«vdienas jebkurā laikā, atbildÄ«ba par projektiem un termiņiem, nevis sēdēŔana birojā no 8 lÄ«dz 17. Manas pozÄ«cijas un darba pienākumi praktiski izslēdz ilgu prombÅ«tni datu centrā. Tomēr periodiski notiek interesanti gadÄ«jumi, lÄ«dzÄ«gi aprakstÄ«tajam zemāk — un es saprotu, ka ir maz pozÄ«ciju, kur ir tāda brÄ«vÄ«ba radoŔā izteiksmē iekŔējā troubleshooter'a.

Neliels disklejms — raksta brÄ«dÄ« gadÄ«jums vēl nav pilnÄ«bā atrisināts, bet ņemot vērā piegādātāju atbildes ātrumu, pilnÄ«ga risinājuma iegūŔana var aizņemt vēl mēneÅ”us, bet es vēlos dalÄ«ties savās atziņās jau tagad. Ceru, cienÄ«jamie lasÄ«tāji, jÅ«s piedosiet man Å”o steigÅ”anu. Bet pietiek atvērta Å«dens — kā tur ir ar gadÄ«jumu?

Sākumā ievads: ir uzņēmums (kur es strādāju kā tÄ«kla inženieris), kas hostē klientu risinājumus privātajā VMWare mākoņā. Lielākā daļa jauno risinājumu pieslēdzas VXLAN segmentiem, kurus pārvalda NSX-V — nenovērtēŔu, cik daudz laika man Å”is risinājums ir devis, Ä«si sakot — daudz. Pat izdevās apmācÄ«t kolēģus NSX ESG konfigurēŔanā, un daži mazie klientu risinājumi tiek izvērsti bez manas iejaukÅ”anās. SvarÄ«gs piezÄ«mē — kontrolējoŔā sistēma mums ir ar unicast replikāciju. Hiperizvēlētāji ir pieslēgti lieki ar divām saskarnēm pie dažādiem fiziskiem Juniper QFX5100 slēdžiem (salikti Virtual Chassis) un route based on originating virtual port timinga politiku — tas ir, lai sniegtu pilnÄ«gu ainu.

Klientu risinājumi ir ļoti dažādi: no Windows IIS, kur visi komponents web-servera ir uz viena datora, lÄ«dz diezgan lieliem — piemēram, load-balanced Apache web frontiem + LB MariaDB Galera + koplietoÅ”anas serveriem, kas sinhronizēti ar GlusterFS. Praktiski katru serveri ir jāmonitorē atseviŔķi, un ne visiem komponentiem ir publiskie adreses — ja jÅ«s esat saskāruÅ”ies ar Å”o uzdevumu un jums ir elegantāks risinājums, būŔu priecÄ«gs par padomu.
Mans uzraudzÄ«bas risinājums sastāv no ugunsmÅ«ra (Fortigate) 'pievienojuma' katrai iekŔējai klienta tÄ«klam (+SNAT un, protams, stingri ierobežojumi attiecÄ«bā uz atļauto trafiku) un iekŔējo adresu uzraudzÄ«bas — tādējādi tiek panākta zināma vienveidÄ«ba un uzraudzÄ«bas vienkārÅ”oÅ”ana. Pats uzraudzÄ«bas process notiek no PRTG serveru klastera. UzraudzÄ«bas shēma ir aptuveni Ŕāda:

VXLAN NSX-V — novērÅ”am underlay problēmas.

Kamēr mēs strādājām tikai ar VLAN, viss bija pilnÄ«gi parasts un paredzami darbojās, kā pulkstenis. Pēc NSX-V un VXLAN ievieÅ”anas saskārāmies ar jautājumu — vai var turpināt uzraudzÄ«bu pa vecam? Uz Ŕī jautājuma brÄ«di visātrākā risinājuma bija NSX ESG izsniegÅ”ana un VXLAN trunk saskarnes pieslēgÅ”ana VTEP tÄ«klam. Ātri ar '''' — jo izmantot GUI klientu tÄ«klu, SNAT un ugunsmÅ«ra noteikumu konfigurēŔanai varbÅ«t vienkārÅ”o pārvaldÄ«bu vienā vSphere saskarnē, bet manuprāt, tas ir diezgan smagnējs un ierobežo rÄ«ku klāstu, kas pieejams problēmu risināŔanai. Tie, kas izmantoja NSX ESG kā 'Ä«stā' ugunsmÅ«ra aizstājēju, domāju, piekritÄ«s. Lai gan, jādomā, Ŕāds risinājums bÅ«tu stabilāks — galu galā viss norisinās viena piegādātāja ietvaros.

Vēl viens risinājums ir izmantot NSX DLR bridža režīmā starp VLAN un VXLAN. Å eit viss ir saprotams - vienkārÅ”i tiek zaudēta VXLAN izmantoÅ”anas jēga, jo Å”ajā gadÄ«jumā tomēr jāvelk VLAN uz uzraudzÄ«bas instalāciju. Starp citu, strādājot pie Ŕī risinājuma, es saskāros ar problēmu, kad DLR tilts nesÅ«tÄ«ja paketes virtuālajai maŔīnai, kura atradās uz viena hosta. Zinu, zinu - grāmatās un vadlÄ«nijās par NSX-V tieÅ”i ir teikts, ka NSX Edge ir jāizveido atseviŔķs klasteris, bet tas ir grāmatās... Tomēr pēc pāris mēneÅ”iem ar atbalsta dienestu mēs problēmu neatrisinājām. Principā es sapratu darbÄ«bas loÄ£iku - hipervizora kodola modulis, kas atbild par VXLAN iepakoÅ”anu, netika aktivizēts, ja DLR un novērotais serveris atradās uz viena hosta, jo satiksme nepameta hostu un loÄ£iski bÅ«tu jāpieslēdzas VXLAN segmentam - iepakoÅ”ana nav nepiecieÅ”ama. Ar atbalsta dienestu mēs apstājāmies pie virtuālā interfeisa vdrPort, kurÅ” loÄ£iski apvieno uplinkus un veic bridžoÅ”anu/iepakoÅ”anu - tur tika pamanÄ«ts neatbilstÄ«ba ienākoÅ”ajā satiksmē, kuru es ņēmu uz apstrādi Å”ajā gadÄ«jumā. Bet, kā tika teikts, lÄ«dz galam es Å”o gadÄ«jumu nenovedu, jo tiku pārcelts uz citu projektu, un arÄ« filiāle sākotnēji bija bezizejas un Ä«paÅ”i nebija vēlmes to attÄ«stÄ«t. Ja nemaldos, problēma novērota NSX versijās 6.1.4 un 6.2.

Un Å”eit - bingo! Fortinet paziņo par natÄ«vu VXLAN atbalstu. Un ne tikai point-to-point vai VXLAN-over-IPSec, ne programmatÅ«ras tiltu VLAN-VXLAN - tas viss sāka tikt ieviests vēl no versijas 5.4 (un piedāvāts pie citiem piegādātājiem), unicast kontrolēŔanas plāna Ä«stenoÅ”anu. IevieÅ”ot risinājumu, es saskāros ar vēl vienu problēmu — monitorēŔanas procesā pārbaudÄ«tie serveri periodiski pazuda vai atkal parādÄ«jās, lai gan pati virtuālā maŔīna bija dzÄ«va. IzrādÄ«jās, ka iemesls bija tas, ka es aizmirsu atļaut Ping VXLAN interfeisā. Klasteru pārbaloÅ”anas procesā virtuālās maŔīnas tika pārvietotas, un vMotion tika pabeigts ar Ping, lai norādÄ«tu jauno ESXI hostu, uz kuru maŔīna bija pārvietota. Mana muļķība, taču Ŕī problēma vēlreiz apturēja uzticÄ«bu ražotāja atbalstam — Å”ajā gadÄ«jumā Fortinet. Es pat nerunāŔu par to, ka katrs gadÄ«jums, kas saistÄ«ts ar VXLAN, sākas ar jautājumu

VeiksmÄ«gi testējot trafiku, tika nolemts ieviest Å”o risinājumu. Un ražoÅ”anā izrādÄ«jās, ka pēc dienas vai divām pakāpeniski atslēdzas viss, kas monitorēts caur VXLAN. Interfeisa deaktivizācija/aktivizācija bija noderÄ«ga, taču tikai uz brÄ«di. Atceroties ražotāja atbalsta lēnÄ«gumu, es ķēros pie problēmu novērÅ”anas no savas puses — galu galā, mana uzņēmuma, mana tÄ«kla — mana atbildÄ«ba.

Problēmu novērÅ”anas gaita. Ja jÅ«s esat noguruÅ”i no burtiem un lepnÄ«bas — izlaižiet un pārejiet pie pēcapstrādes.

Problēmu novērÅ”anas gaitaPaldies, ka turpinājāt lasÄ«t — turpināsim!

Tātad, monitorings darbojas kādu laiku, pēc tam pats sevi atslēdz. Tas nozÄ«mē, ka ugunsmÅ«ri politikās, visticamāk, nav problēmu. Tomēr, tā kā esmu pieredzējis ar problēmām, kas saistÄ«tas ar iesaldētām sistēmas procesu Fortigate versijās 5.6+, vispirms skatāmies 'diagnose debug flow' — kā sagaidāms, trafiks tiek atļauts un iznāk caur interfeisu, un sagaidāms, ka nekas neatnāk atpakaļ. Tātad, turpinām izpēti tālāk pa steku. Diemžēl, bÅ«s jāslēpj pat RFC1918 adreses, bet es ceru sniegt procesam pietiekamu aprakstu izpratnei. Serveris iekŔā VXLAN ir ar adresi х.х.х.15, Fortigate interfeiss х.х.х.254, visas pārējās adreses pieder VTEP tÄ«klam.

Lai veiksmÄ«gi pārsÅ«tÄ«tu VXLAN iesaiņotos paketus, ir nepiecieÅ”ama pareiza informācija vairākās tabulās. Overlay gadÄ«jumā tas ir ARP un OVSDB, bet underlay gadÄ«jumā tas ir ARP un CAM. Fortigate gadÄ«jumā VXLAN FDB ir OVSDB. Sāksim tur:

 fortigate (root) #diag sys vxlan fdb list vxlan-LS
mac=00:50:56:8f:3f:5a state=0x0002 flags=0x00 remote_ip=u.u.u.47 port=4789 vni=5008 ifindex=7

Å eit viss ir pietiekami vienkārÅ”i — virtuāla datora MAC adrese jāatrodas uz VTEP ar adresi u.u.u.47. Pārbaudot ESXI klastera saturu un iestatÄ«jumus, es redzu, ka virtuāla datora MAC adrese ir pareiza, arÄ« VTEP adrese. Pārbaudu CAM/ARP tabulu fortigate — atkal viss sakrÄ«t ar ESXI hosta iestatÄ«jumiem:

fortigate (root) #get sys arp | grep u.u.u.47
u.u.u.47 0 00:50:56:65:f6:2c dmz

Tabulas ir pareizas un trafiks iznāk — varbÅ«t problēma nav fortigate? Es apzināti neesmu analizējis trafika komutāciju uz Juniper — loÄ£iski nākamais solis troublÅ”utÄ«ngā bÅ«tu jāveic tur, bet mana tÄ«kla struktÅ«ra ir vienkārÅ”a — tikai viens VLAN VTEP un visi komponenti ir pieslēgti tieÅ”i. Plus, atceros gadÄ«jumu ar DLR tiltu, VDR un iznÄ«kstoÅ”u trafiku — dodos snifferēt uz ESXI hosta, blakus izveidoju jau gadÄ«jumu uzņēmumam VMware. Zemākā MAC ā€ž97:6eā€ pieder fortigate, vmnic1 ir interfeiss, kuram ir VTEP ar adresi u.u.u.47, snifferējam abos virzienos "—dir 2":

pktcap-uw --uplink vmnic1 --vni 5008  --mac 90:6c:ac:a9:97:6e --dir 2 -o /tmp/monitor.pcap

VXLAN NSX-V — novērÅ”am underlay problēmas.

Progress — sniffā redzu ARP pieprasÄ«jumu un nākoÅ”o atbildi. Izvēlos tikai ARP atbildi, un tur viss ir pareizi. Neesmu pieminējis, bet visu Å”o laiku uzraudzÄ«bas serveris pingē adresi h.h.h.15 — kur palika ICMP trafiks? Atceros, ka man ir divi uplinÄ·i. Å eit varētu diskutēt un teikt, ka virtuālais avota ports ir viens un tas pats (mājas tÄ«kla politika), tātad vienai un tai paÅ”ai vNIC jāizvēlas viens un tas pats uplink, bet, ja jau esmu hostā, pārbaudÄ«t citu uplink nav problēma:

pktcap-uw --uplink vmnic4 --vni 5008  --mac 90:6c:ac:a9:97:6e --dir 2 -o /tmp/monitor.pcap

VXLAN NSX-V — novērÅ”am underlay problēmas.

Saņem pieprasÄ«jumus no Fortigate, bet atbildes nav. Tātad problēma nav Fortigate. Nu, viss — es domāju — atkal tā pati problēma ar pazuduÅ”o satiksmi uz VDR, atkal pāris mēneÅ”i jāvirza gadÄ«jums pareizajā virzienā. Pāris dienu laikā atdziestot un nevēloties samierināties ar kavēŔanos, nolēmu savākt vēl sniffus atbalstam, lai paātrinātu procesu. Un te ā€žnejauÅ”iā€ mans skatiens uzkrÄ«toÅ”i krÄ«t uz Ethernet kapsulāciju underlay. ĶēniņŔ nav Ä«sts, un VTEP MAC adrese nesakrÄ«t ar tā IP. Nollēju, sniffoju, izpētu — pareizi, kas nav pareizi. PriekŔā blakus ierakstu ARP tabulu, lai bÅ«tu ērtāk salÄ«dzināt. Pievērsiet uzmanÄ«bu pirmajai Ethernet kapsulācijai attēlā augŔā:

fortigate (root) #get sys arp | grep у.у.у.47
у.у.у.47 0 00:50:56:65:f6:2c dmz
fortigate (root) #get sys arp | grep у.у.у.42
у.у.у.42 0 00:50:56:6a:78:86 dmz

Tātad, ko mēs beigu beigās iegÅ«stam — pēc virtuālās maŔīnas migrācijas, Fortigate mēģina nosÅ«tÄ«t satiksmi uz VTEP no (pareizās) VXLAN FDB, bet izmanto nepareizu DST MAC un satiksme, kā gaidÄ«ts, tiek noraidÄ«ta no hipervizora saņemoŔā saskarnes. Turklāt vienā no četriem gadÄ«jumiem Å”is MAC piederēja sākotnējam hipervizoram, no kura sāka migrāciju.

Vakar saņēmu vēstuli no Fortinet tehniskā atbalsta — manā gadÄ«jumā tika atklāts kļūda 615586. TieŔām nezinu, vai priecāties vai skumt: no vienas puses — problēma nav iestatÄ«jumos, no otras — labojums nāks tikai ar programmatÅ«ras atjauninājumu, vislabākajā gadÄ«jumā nākamajā. PaÅ”apziņu arÄ« uztur vēl viena kļūda, kuru es atklāju pagājuŔā mēnesÄ«, tomēr tajā reizē HTML5 GUI vSphere. TieŔām, tieÅ”i vietējais QA nodaļa piegādātājiem...

Risks pieņemt sekojoÅ”o:

1 — multicast kontrolsistēma, visticamāk, nebÅ«s pakļauta aprakstÄ«tajai problēmai — jo VTEP MAC adreses tiek iegÅ«tas no grupas IP adreses, uz kuru pievienojas saskarne.

2 — visticamāk, problēma ir Fortigate sērijas samazinājumā uz TÄ«kla Procesoru (aptuveni lÄ«dzÄ«gs CEF) — ja katrs pakets tiek nosÅ«tÄ«ts caur CPU, tiks izmantotas tabulas, kuras satur pareizu — vismaz vizuāli — informāciju. Å Ä«s pieņēmuma labā runā tas, ka palÄ«dz aizvērt/atvērt saskarni vai gaidÄ«t zināmu laiku — vairāk nekā 5 minÅ«tes.

3 — izmaiņas komandas politikā, piemēram, uz explicit failover, vai LAG ievieÅ”ana problēmu neatrisinās, jo tika novērota ā€žiestrēgÅ”anaā€ MAC no sākotnējā hipervizora inkapsulētajos pakotnēs.

Å Ä« kontekstā varu dalÄ«ties, ka nesen atklāju, ka blogā, kur vienā no rakstiem tika apgalvots, ka stetfull ugunsmÅ«ri un keÅ”otāji datu pārsÅ«tīŔanas veidi ir tikai pagaidu risinājumi. Nu, es neesmu tik pieredzējis IT jomā, lai apgalvotu ko tādu, turklāt ne visiem emuāra rakstu apgalvojumiem es piekrÄ«tu uzreiz. Tomēr kaut kas man liek domāt, ka Ivanam ir daļa taisnÄ«bas.

Paldies par uzmanÄ«bu! BūŔu priecÄ«gs atbildēt uz jautājumiem un uzklausÄ«t konstruktÄ«vu kritiku.

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster