F5 Distributed Cloud Network Connect și Netapp BlueXP
Stocarea este o piesă puzzle foarte importantă în orice infrastructură de rețea. În același timp, este un element foarte sensibil, iar datele aflate pe fiecare spațiu de stocare pot fi alterate de mai mulți factori, inclusiv breșe de securitate, probleme hardware și multe altele.
Deci, este foarte important să putem recupera datele dacă sunt modificate, iar cel mai bun mod de a face acest lucru este să reproducem datele pe diferite volume.
Un alt scop pentru replicarea volumelor este posibilitatea de a efectua analize asupra datelor enterprise, de a face cercetări asupra tendințelor și de a reduce timpul de nefuncționare datorat evenimentelor de recovery.
Odată cu progresul major al tehnologiei din ultimii ani, aplicațiile s-au extins dincolo de centrele de date tradiționale și s-au mutat parțial sau total în diferite medii, cum ar fi cloud-uri publice sau private, luând si datele împreună cu ele.
Replicarea stocării a urmat aceeași cale și multe companii consideră că este cel mai potrivit să utilizeze un mediu cloud hibrid în acest scop.
Acest articol explică modul de utilizare a replicării stocării hibride în cloud utilizând conectorul Netapp BlueXP prin F5 Distributed Cloud. Conectorul Netapp BlueXP este un plan de control bazat pe cloud care permite gestionarea volumelor atât on-premise, cât și în furnizorii de cloud public, beneficiul major fiind replicarea datelor.
F5 Distributed Cloud Networking este o rețea multicloud bazată pe SaaS, oferind optimizare a traficului și servicii de securitate pentru cloud-uri publice și private intr-o singură consolă, scutind echipele operaționale de lupta cu gestionarea serviciilor dependente de cloud și mai mulți furnizori terți.
Avantajul utilizării F5 Distributed Cloud Networking este simplificarea conectivității rețelei și aplicațiilor în medii distribuite, cum ar fi centrul de date privat, cloud privat sau public, obținând informații despre problemele de rețea, securitate și performanță a aplicațiilor în toate site-urile (oriunde s-ar afla ele).
În acest articol voi explica pas cu pas cum să configurăm elementele necesare pentru ca conectorul Netapp BlueXP să reproducă datele de pe un dispozitiv Netapp stocat în centrul nostru de date privat într-un dispozitiv Netapp din cloud-ul Azure.
Diagrama de rețea simplificată este următoarea:
După cum putem vedea, pentru clusterul Netapp să se formeze, trebuie să existe conectivitate de nivel 3 între IP-urile locale Netapp și IP-ul Azure Netapp și vom realiza acest lucru folosind F5 Distributed Cloud (F5 XC).
Primul pas este crearea conectivității între DC local și mediul Azure prin F5 Distributed cloud (F5 XC) și vom realiza acest lucru prin crearea unui punct de demarcație de securitate în fiecare mediu, numit CE (Customer Edge), care poate fi un server virtualizat sau dedicat.
Odată ce conectivitatea de nivel 3 va fi făcută între CE-uri, va trebui să ne ocupăm de configurarea rutării atât în mediul local, cât și în Azure si F5 XC.
Instalarea F5 DC CE
Mai întâi vom instala CE-ul local în centrul nostru de date.
Pentru aceasta vom avea nevoie de un token care va fi folosit de VM după instalarea sa pentru a "suna acasă", sau mai bine spus pentru a putea cere înregistrarea în F5 XC și pentru ca F5 XC să-l recunoască și să-l aprobe.
Un obiect token este utilizat pentru a gestiona admiterea CE-ului. Utilizatorul trebuie să genereze tokenul înainte de provizionare și să transmită acest token catre F5 XC în timpul înregistrării.
Va trebui să ne conectăm la consola F5 XC și să creăm un token.
După ce vă conectați la consola F5 XC, accesați Multi Cloud Network Connect.
Manage -> Site management -> Site tokens si apoi Add Site Token.
Dați un nume token-ului, o descriere și faceți clic pe Save and Exit
Se creează tokenul site-ului.
Notați UID-ul pe care îl veti folosi atunci când instalati CE-ul local.
Acesta este un șir unic, așa că este evident de ce este ascuns în imagine.
Acum că avem tokenul, vom continua cu instalarea VM-ului local, folosind un șablon furnizat de F5, care poate fi descărcat de aici:
https://docs.cloud.f5.com/docs/images
VM poate fi instalat în mediul VMware, precum și în KVM sau hardware certificat.
În mediul nostru folosim VMware.
Vom descărca imaginea OVA
Trebuie să ținem cont de cerințe:
- Resurse necesare pentru fiecare VM: Minim 4 vCPU-uri și 16 GB RAM.
- 45 GB este cantitatea minimă necesară pentru stocare. Cu toate acestea, pentru a implementa un site F5® Distributed Cloud App Stack, 100 GB este cantitatea minimă recomandată de spațiu de stocare.
Folosim VMWare vSphere și versiunea clientului este 7.0.3.x
Documentația F5 se bazează pe VMware vSphere Hypervisor (ESXi) 7.0 sau o versiune ulterioară. Este posibil ca versiunile anterioare să nu fie compatibile.
Fișierul OVA poate fi utilizat pentru a crea un șablon OVF care poate fi utilizat de mai multe ori după aceea dacă trebuie implementate mai multe site-uri.
Vom crea VM direct din fișierul OVA.
Nu voi detalia pașii necesari pentru a instala VM în VMware, deoarece procesul poate fi diferit în funcție de mediul fiecăruia.
Rețineți că VM-ul trebuie să aibă acces la Internet și să utilizeze tokenul site-ului (UID) în timpul procesului de instalare, pentru ca VM-ul să se poată înregistra în F5 XC.
După ce VM-ul este creat, trebuie să il pornim.
După ce VM-ul se inițializează, acesta va "suna acasă" folosind interfața exterioară și tokenul furnizat și îl putem vedea în consola F5 XC în Pending Registrations
Accesați Multi-Cloud Network Connect -> Manage -> Site Management -> Registrations
Și putem vedea înregistrarea în așteptare a site-ului nostru local CE cu starea PENDING
Vom face clic pe butonul albastru și vom vedea o prezentare generală a setărilor pentru CE-ul local
Vom verifica setările și, dacă totul este în regulă, vom face click pe Save and Exit.
Starea site-ului nostru se va schimba în Approval started.
Dacă mergem la Overview -> Sites, putem vedea că site-ul nostru este provizionat.
Procesul de provizionare va dura câteva minute, așa că aveți răbdare.
După finalizarea provizionarii, putem vedea CE-ul local înregistrat în consola F5 XC cu un scor de 100.
Putem verifica starea CE și putem vedea numele interfeței, numele nodului, IP-ul interfeței și alți parametri
Când vine vorba de comunicarea dintre CE-ul local și F5 XC, aceasta se face prin tuneluri IPSec sau SSL stabilite după procesul de provizionare între CE-ul local și 2 RE (Regional Edges) care sunt selectate pe baza IP-ului public al CE-ului (cele mai apropiate).
Odată ce aceste RE sunt selectate, lista celor două site-uri regionale selectate este trimisă CE-ului local ca parte a aprobării de înregistrare. De asemenea, următoarele informații suplimentare sunt trimise ca parte a acestei aprobări:
- Identitatea site-ului și certificatele PKI - aceste certificate sunt rotite în mod regulat de sistem
- Configurația inițială pentru a crea și negocia tuneluri securizate pentru structura F5 Distributed Cloud.
CE-ul local va încerca crearea atât a tunelurilor IPSec, cât și SSL către RE-urile selectate. Dacă IPSec este capabil să stabilească conectivitatea, aceasta va fi preferată față de SSL.
Pentru conexiunea IPsec între CE și RE-uri, sunt acceptate atât modul Public Key Infrastructure (PKI), cât și modul Pre-Shared-Key (PSK). Când utilizați PKI, sistemul acceptă certificate RSA 2048 pentru a autentifica peer-urile la distanță. Sunt utilizate următoarele cifruri:
Schimb de chei: aes256-aes192-aes128, aes256gcm16
Autentificare: sha256-sha384
Grupuri DH: ecp256-ecp384-ecp521-modp3072-modp4096-modp6144-modp8192
ESP: aes256gcm16-aes256/sha256-sha384
După ce tunelurile sunt stabilite, panoul de control distribuit în RE va prelua controlul CE-ului local. Aceste tuneluri sunt utilizate atât pentru management, control, cât și pentru traficul de date.
Instalarea F5 AZURE CE
Pentru implementarea site-ului Azure F5 CE, trebuie să luăm în considerare resursele necesare:
- Resurse necesare per nod:
- vCPU-uri: Minim 4 vCPU-uri.
- Memorie: 14 GB RAM.
- Stocare pe disc:
- Minim 45 GB pentru site-ul Mesh.
- Minim 100 GB pentru site-ul App Stack.
- Portul UDP 6080 trebuie deschis între toate nodurile site-ului.
- Internet Control Message Protocol (ICMP) trebuie deschis între nodurile CE de pe interfețele Site Local Outside (SLO). Acest lucru este necesar pentru a asigura verificările comunicațiilor în interiorul clusterului.
Primul lucru este să creați un token în consola F5 XC care va fi utilizat la implementarea imaginii în Azure, similar cu procesul pe care l-am urmat pentru tokenul site-ului CE local.
Așa că vom repeta pașii urmați când am creat tokenul pentru CE local.
Conectați-vă la consola XC, accesați Multi Cloud Network Connect, Manage -> Site Management -> Site Tokens -> Add Site Token.
Vom retine UID pentru noul site Azure.
Acum trebuie să creăm resursele în Azure necesare pentru implementarea VM-ului, astfel încât să ne conectăm la contul nostru Azure.
Din nou, nu voi detalia procesul de creare a VM-ului în Azure, deoarece acesta ar putea diferi de la mediu la mediu, dar practic va trebui să creăm resursele necesare.
Acestea sunt Service Principal, un nou custom role pe care îl vom asocia cu Service Principal, va trebui să atribuim rolul pentru Service Principal și să ne asigurăm că mașina F5 va avea acces la abonamentul nostru Azure prin rolul particularizat și Service Principal.
Pentru rolul particularizat, vom folosi șablonul JSON furnizat de F5
{ "properties": { "roleName": "F5-To-Azure-CustomRole", "description": "Rol personalizat F5 XC pentru a crea un site Azure VNET", "assignableScopes": [ "/subscriptions/YourSubscriptionId" ], "permissions": [ { "actions": [ "*/read", "*/register/action", "Microsoft.Compute/disks/delete", "Microsoft.Compute/skus/read", "Microsoft.Compute/virtualMachineScaleSets/delete", "Microsoft.Compute/virtualMachineScaleSets/write", "Microsoft.Compute/virtualMachines/delete", "Microsoft.Compute/virtualMachines/write", "Microsoft.MarketplaceOrdering/agreements/offers/plans/cancel/action", "Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/write", "Microsoft.Network/loadBalancers/backendAddressPools/delete", "Microsoft.Network/loadBalancers/backendAddressPools/join/action", "Microsoft.Network/loadBalancers/backendAddressPools/write", "Microsoft.Network/loadBalancers/delete", "Microsoft.Network/loadBalancers/write", "Microsoft.Network/locations/setLoadBalancerFrontendPublicIpAddresses/acțiune", "Microsoft.Network/networkInterfaces/delete", "Microsoft.Network/networkInterfaces/join/action", "Microsoft.Network/networkInterfaces/write", "Microsoft.Network/networkSecurityGroups/delete", "Microsoft.Network/networkSecurityGroups/join/action", "Microsoft.Network/networkSecurityGroups/securityRules/delete", "Microsoft.Network/networkSecurityGroups/securityRules/write", "Microsoft.Network/networkSecurityGroups/write", "Microsoft.Network/publicIPAddresses/delete", "Microsoft.Network/publicIPAddresses/join/action", "Microsoft.Network/publicIPAddresses/write", "Microsoft.Network/routeTables/delete", "Microsoft.Network/routeTables/join/action", "Microsoft.Network/routeTables/write", "Microsoft.Network/virtualHubs/delete", "Microsoft.Network/virtualHubs/bgpConnections/delete", "Microsoft.Network/virtualHubs/bgpConnections/read", "Microsoft.Network/virtualHubs/bgpConnections/write", "Microsoft.Network/virtualHubs/ipConfigurations/delete", "Microsoft.Network/virtualHubs/ipConfigurations/read", "Microsoft.Network/virtualHubs/ipConfigurations/write", "Microsoft.Network/virtualHubs/read", "Microsoft.Network/virtualHubs/write", "Microsoft.Network/virtualNetworks/delete", "Microsoft.Network/virtualNetworks/peer/action", "Microsoft.Network/virtualNetworks/subnets/delete", "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Network/virtualNetworks/subnets/read", "Microsoft.Network/virtualNetworks/subnets/write", "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write", "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete", "Microsoft.Network/virtualNetworks/write", "Microsoft.Network/virtualNetworkGateways/delete", "Microsoft.Network/virtualNetworkGateways/read", "Microsoft.Network/virtualNetworkGateways/write", "Microsoft.Resources/subscriptions/locations/read", "Microsoft.Resources/subscriptions/resourcegroups/delete", "Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Resources/subscriptions/resourcegroups/write" ], "notActions": [], "dataActions": [], "notDataActions": [] } ] } }
Când creați Service Principal, notați Application ID, care este Client ID de care vom avea nevoie mai târziu atunci când creăm site-ul Azure în consola F5 XC.
Vom avea nevoie și de ID-ul abonamentului , care poate fi găsit în portal.
Vom avea nevoie și de ID-ul entității găzduite (Tenant ID) pe care îl putem găsi în Entra ID.
După ce toate resursele sunt create, va trebui să implementăm VM-ul în Azure
Pentru aceasta trebuie să creăm un grup de resurse, cu un nume și o regiune și pentru imagine o vom folosi pe cea furnizată de F5.
Următorul pas este să creăm VNET-ul unde vom crea frontend-ul și backend-ul care vor fi legate de interfețele pe care le vom vedea în consola F5 XC. Observați că back-end-ul se află în aceeași subrețea ca și subrețeaua Netapp Azure.
Pentru date personalizate, vom adăuga scriptul furnizat de F5:
#cloud-config
write_files: #ves - cale: /etc/hosts content: | # IPv4 și IPv6 localhost aliases
127.0.0.1 localhost ::1 localhost
127.0.0.1 vip permissions: 0644 owner: root - path: /etc/vpm/config.yaml permissions: 0644 owner: root content: |
Vpm:
ClusterType: ce
Token: 222222v2-333e-44n4-55j5-k6kkkk7777k7
MauricePrivateEndpoint: https://register-tls.ves.volterra.io
MauriceEndpoint: https://register.ves.volterra.io
CertifiedHardwareEndpoint: https://vesio.blob.core.windows.net/releases/certified-hardware/azure.yml
Kubernetes: EtcdUseTLS: True Server: vip
Pentru token, vom adăuga UID-ul creat mai devreme.
VM-ul va arăta similar cu acesta:
Acum trebuie să creăm site-ul Azure F5 CE în F5 XC
Pentru aceasta, ne vom conecta la contul nostru F5 XC, vom merge la Multi Cloud Network Connect, vom merge la Manage -> Site Management -> Azure VNET Sites și Add Azure VNET Site
Va trebui să dăm un nume site-ului.
Pentru Site Type Selection sub Cloud Credentials trebuie să creăm noi credentiale. Așa că facem click pe New item, vom da un nume, pentru Credential Type vom folosi Azure Client Secret for Service Principal și vom folosi Client ID, Subscription ID și Tenant ID pe care le-am notat mai devreme.
De asemenea, trebuie să configurăm Azure Client Secret.
Pentru Secret to Blindfold, vom folosi Secret ID de la Service Principal.
În continuare, vom selecta grupul de resurse din Azure, tipul și numele regiunii, iar pentru VNET vom selecta Existing Vnet, grupul de resurse vnet și numele Vnet – toate acestea sunt cele din Azure, pe care le-am creat mai devreme.
Sub Select Ingress Gateway or Ingress/Egress Gateway, vom selecta Ingress/Egress Gateway (Two interface) și vom face click pe Configure.
Vom folosi Azure Certified Hardware și vom face click pe Add Item.
Selectăm numele Azure AZ așa cum îl avem în Azure, alegem Existing Subnet pentru Inside interface, selectăm numele grupului de resurse și pentru numele subrețelei introducem numele interfeței back-end - acesta va fi în aceeași subrețea ca și Azure Netapp.
Pentru interfața exterioară repetați pașii și pentru nume introduceți interfața frontend.
Acum trebuie să introducem parametrii nodului site-ului, unde pentru cheia ssh publică vom folosi cheia publică din Azure.
Save & Exit și site-ul Azure este creat și provizionat.
Configurarea rutării
Acum că avem ambele CE-uri instalate, trebuie să configurăm rutarea pentru ca Netapp-ul local să poată "vedea" Azure Netapp.
În acest moment, niciunul dintre CE-uri nu este conștient de subrețeaua locală a celuilalt CE și, pentru a realiza acest lucru, fiecare CE trebuie să-și "publice" subrețelele într-o rețea globală.
Gândiți-vă, de exemplu, la o companie cu mai multe sucursale, unde fiecare sucursală trebuie să "spună" sediului central subrețelele pe care le are.
Consola F5 XC oferă câteva instrumente foarte utile pentru a depana și diagnostica conectivitatea site-ului, cum ar fi Show Routes, Flow table, Ping, Tcpdump, Traceroute și oferă, de asemenea, posibilitatea de a reporni dispozitivul sau doar un soft restart.
Unul dintre aceste instrumente este Show Routes și este disponibil dacă facem click pe site-ul nostru și verificăm tab-ul Tools.
Dacă verificăm rutele pentru CE-ul local, putem vedea doar rutele implicite și conectate direct.
Nu putem vedea încă ruta către 172.30.1.0/24.
Dacă verificăm tabela de rutare Azure F5 CE, vom vedea și rutele conectate, 10.100.0.0/24.
Pentru a face rutarea corectă, ceea ce trebuie să facem pe CE-ul local este să publicăm interfața exterioară în rețeaua noastră globală, iar pentru Azure CE să publicam interfața interioară în rețeaua noastră globală.
Acest lucru se datorează faptului că F5 CE local este creat cu o singură interfață (în exterior), iar Azure F5 CE este creat cu 2 interfețe (în exterior și în interior), cu interfața interioară conectată la același VNET ca și Azure Netapp.
Pentru a realiza acest lucru, trebuie mai întâi să ne creăm rețeaua globală. Aceasta este o rețea virtuală pe care o vom folosi pentru a ne publica subrețelele.
Trebuie să mergem la Manage -> Networking -> Virtual Networks și să facem click pe Add Virtual Network.
Trebuie să dăm un nume și să selectăm tipul Global Network.
De asemenea, deoarece subrețeaua 172.30.1.0/24 nu este conectată direct la CE-ul local, vom publica această subrețea și în rețeaua globală, folosind o rută statică.
Vom face clic pe Add item sub Static Routes și vom seta prefixul și Default Gateway ca Next Hop. De asemenea, putem configura atribute (Attributes).
Următorul pas este crearea unui conector de rețea care va conecta site-ul nostru local la rețeaua globală.
Trebuie să mergem la Manage -> Networking -> Network Connectors și să facem click pe Add Network Connector.
Trebuie să dăm un nume și pentru tipul de conector vom alege Direct, Site Local Outside to Global Network (amintiți-vă, CE-ul local are o singură interfață externă) și vom selecta rețeaua globală pe care am creat-o mai devreme.
Apoi trebuie să ne creăm flota, unde vom adăuga toate obiectele pe care le-am creat până acum.
Trebuie să mergem la Manage -> Site Management -> Fleets și să facem clic pe Add Fleet.
Trebuie să dăm un nume de flotă, o valoare a etichetei flotei care poate fi aceeași cu numele. Pentru Outside Virtual Network, selectați rețeaua globală pe care am creat-o anterior, iar pentru Network Connectors, selectați conectorul pe care l-am creat la pasul anterior.
Aici putem activa un firewall de rețea sau putem bloca serviciile care nu sunt permise în rețeaua noastră globală. Vom lăsa valorile implicite deocamdată.
Acum trebuie să adăugăm flota la CE-ul local ca etichetă.
Așa că ne vom edita site-ul.
Iar sub Etichete vom adăuga ves.io/fleet label cu valoarea flotei pe care am creat-o mai devreme.
Acum putem verifica tabelul de rutare pentru CE-ul local și putem vedea că putem vedea ruta către 172.30.1.0/24.
Ping de la CE-ul local la Netapp DC funcționează acum:
Totuși, nu avem încă ruta către Azure Netapp.
Acum trebuie să ne ocupăm de rutarea pentru Azure F5 CE – așa cum am văzut înainte, avem doar rutele conectate direct în tabela de rutare și ceea ce vrem să vedem sunt si rutele către 172.20.17.0/24 și 172.30.1.0/24.
Vom realiza acest lucru prin "conectarea" Azure F5 CE la rețeaua noastră globală și publicarea interfeței interne în rețeaua globală.
Trebuie să edităm configurația Azure CE.
Pentru Ingress/Egress Gateway, selectați Edit Configuration.
Și sub Avanced Options, alegeți Connect Global Networks pentru opțiunea Select Global Networks to Connect și adăugați rețeaua globală pe care am creat-o anterior (asigurați-vă că activați opțiunea Show Advanced Fields).
De asemenea, trebuie să ne ocupăm de configurarea rutării în Azure.
Pentru aceasta, ne vom conecta la contul nostru Azure și vom crea un Route Table.
Apoi vom adăuga rutele către subrețeaua CE locală și subrețeaua Netapp locală.
Și asta este!
Acum putem verifica tabela de rutare pentru ambele CE-uri și putem vedea că am configurat rutarea corectă.
CE local:
Azure CE:
Deci, cu rutarea corectă, să verificăm dacă dispozitivele Netapp se pot "vedea" reciproc.
Ping de la Netapp DC la Azure Netapp:
Ping de la Azure Netapp la Netapp DC:
Acum să verificăm mediul Netapp.
Ne vom conecta la mediul nostru Azure Netapp.
Trageți pictograma Onprem Storage over CVO .
Va apărea o mică fereastră pop-up care arată acțiunile > select Replication.
Putem vedea clusterul:
Ne vom conecta la CLI și vom verifica starea.
FreeCVO::> snapmirror show
Progress
Source Destination Mirror Relationship Total Last
Path Type Path State Status Progress Healthy Updated
----------- ---- ------------ ------- -------------- --------- ------- --------
CIFS_SVM:cifstest
XDP svm_FreeCVO:cifstest_dest
Snapmirrored
Idle - true -
FreeCVO::> vol show
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
FreeCVO-01 vol0 aggr0_FreeCVO_01 online RW 121.5GB 83.68GB 27%
svm_FreeCVO cifs1_copy aggr1 online DP 50GB 50.00GB 0%
svm_FreeCVO cifstest_dest aggr1 online DP 269.1MB 47.54MB 82%
svm_FreeCVO svm_FreeCVO_root aggr1 online RW 1GB 971.6MB 0%
4 entries were displayed.
FreeCVO::> snapmirror show-history
Destination Source Start End
Path Path Operation Time Time Result
----------- ----------- --------- ----------- ----------- -------
svm_FreeCVO:cifstest_dest
CIFS_SVM:cifstest
initialize
1/1/1970 00:00:00
6/25/2024 13:13:53
succes
svm_FreeCVO:cifstest_dest
CIFS_SVM:cifstest
create 6/25/2024 13:11:56
6/25/2024 13:11:56
success
2 entries were displayed.
Acum vom transfera o cantitate mică de date între Netappuri și putem vedea că transferul este reușit.
Acest document explică cum putem folosi F5 XC MultiCloud Network Connect pentru a conecta două medii diferite, unul on-premises și unul în cloud-ul public Azure.