Acest document este destinat arhitecților și persoanelor care lucrează în operațiuni și echipele administrative. Documentul descrie un exemplu de model pe care îl puteți utiliza pentru propriile implementări în Google Cloud. În acest model, un echilibrator de încărcare direcționează traficul către Compute Engine instanțe în grupuri de instanțe gestionate care servesc continutul. Într-o întrerupere, actualizați Echilibrare de încărcare HTTP(S) externă configurație și trecerea la un site static în Stocare in cloud. Pentru a finaliza acest tutorial, aveți nevoie de un nume de domeniu înregistrat pe care îl controlați și doriți să utilizați acest document. În implementările de producție, site-ul dvs. web probabil include mult mai multe fișiere și cod de aplicație suplimentar pe mașinile virtuale ale grupului de instanțe gestionate (VM) decât este prezentat în acest document. Cloud Storage găzduiește apoi un mai mult versiune statică limitată care oferă funcționalitate minimă. Într-un failover cald în scenariu, utilizatorii văd acest site web limitat până la grupurile de instanțe gestionate recuperați și poate servi trafic pentru experiența completă a site-ului. În acest tutorial, implementați resurse pentru a crea un mediu așa cum se arată în următoarea imagine: Când trebuie să efectuați un failover, actualizați configurația echilibrului de încărcare la direct trafic către Cloud Storage, așa cum se arată în imaginea următoare: Acest model de failover la cald echilibrează costul de rulare a altuia gestionat grup de instanțe într-o regiune diferită pe care o utilizați numai când regiunile principale eșuează. Costul unui site static care utilizează Cloud Storage este mai mic decât cel al rulării alt grup de instanțe gestionat, dar există o scurtă întârziere când actualizați încărcarea configurația echilibrului între opțiunile de găzduire. Site-ul limitat experiența în Cloud Storage este mai bună decât un site web indisponibil și slabă experienta clientului. Pentru o abordare alternativă care utilizează Cloud DNS în loc de extern Echilibrarea încărcăturii HTTP(S) pentru a controla failoverul, vezi Implementați un server web recuperabil folosind Cloud DNS cu Compute Engine și Cloud Storage. Acest model este util dacă aveți sau doriți să utilizați Cloud DNS. Pentru a rula aplicații de încredere în Google Cloud, vă recomandăm să proiectați infrastructura aplicației dumneavoastră pentru a gestiona întreruperile. În funcție de aplicația dvs și nevoile de afaceri, este posibil să aveți nevoie de o failover la rece, la cald sau la cald model de failover. Pentru mai multe informații despre cum să determinați cea mai bună abordare pentru propriile aplicații, vezi Ghid de planificare a recuperării în caz de dezastru. Acest document folosește un element de bază server web Apache, dar aceeași abordare a implementării infrastructurii se aplică și altora mediile de aplicații pe care trebuie să le creați. ## Obiective - - Creați grupuri regionale de instanțe gestionate cu o imagine VM personalizată. - Creați o găleată de stocare în cloud. - Creați și configurați echilibrarea sarcinii HTTP(S) externă. - Testați failoverul serverului web cald cu un echilibrator de încărcare actualizat configurație. - Testați recuperarea și failback-ul cu o configurație actualizată a echilibrului de încărcare. ## Cheltuieli Acest tutorial folosește următoarele componente facturabile ale Google Cloud: - - Motorul de calcul - Rețele - Stocare in cloud Pentru a genera o estimare a costurilor bazată pe utilizarea proiectată, utilizați calculatorul de prețuri. ## Înainte de a începe - - Conectați-vă la contul dvs. Google Cloud. Dacă ești nou Google Cloud, creați un cont pentru a evalua performanța produselor noastre scenarii din lumea reală. Clienții noi primesc, de asemenea, 300 USD în credite gratuite către rulați, testați și implementați sarcini de lucru. - În consola Google Cloud, pe pagina de selectare a proiectelor, selectați sau creați un proiect Google Cloud. - Asigurați-vă că facturarea este activată pentru proiectul dvs. Cloud. Învață cum să verificați dacă facturarea este activată pe un proiect. - Activați API-ul Compute Engine. - Instalați și inițializați CLI Google Cloud. - În consola Google Cloud, pe pagina de selectare a proiectelor, selectați sau creați un proiect Google Cloud. - Asigurați-vă că facturarea este activată pentru proiectul dvs. Cloud. Învață cum să verificați dacă facturarea este activată pe un proiect. - Activați API-ul Compute Engine. - Instalați și inițializați CLI Google Cloud. Puteți rula CLI Google Cloud în consola fără a instala Google Cloud CLI. Pentru a rula CLI gcloud în console, utilizați Cloud Shell ## Pregătiți mediul În această secțiune, definiți câteva variabile pentru numele resurselor dvs. și locații. Aceste variabile sunt folosite de comenzile Google Cloud CLI ca dvs implementează resursele. Pe tot parcursul acestui document, dacă nu se menționează altfel, introduceți toate comenzile Cloud Shell sau mediul dumneavoastră de dezvoltare locală. - A inlocui cu propriul ID de proiect. Dacă se dorește, furnizați propriul sufix de nume pentru resurse care să vă ajute să căutați și să identificați ei, cum ar fi PROJECT_ID aplicația Specificați două regiuni, cum ar fi și noi-vest1 , și o zonă din cadrul uneia dintre acele regiuni, cum ar fi noi-vest2 . Această zonă definește unde VM de bază inițială este creată care este utilizată pentru a crea o imagine pentru grupul de instanțe gestionat noi-vest1-a În cele din urmă, setați un domeniu care este utilizat pentru site-ul dvs. static, cum ar fi exemplu.com PROJECT_ID= PROJECT_ID NAME_SUFFIX= aplicație REGIUNEA1= us-vest1 REGIUNEA2= us-vest2 ZONA= us-west1-a DOMAIN= example.com ## Creați un VPC și o subrețea Pentru a oferi acces la rețea la VM-urile, creați Virtual Private Cloud (VPC) și subrețele. Deoarece aveți nevoie de grupuri de instanțe gestionate în două regiuni, creați unul subrețea din fiecare regiune. Pentru mai multe informații despre avantajele customului modul subrețea pentru a gestiona intervalele de adrese IP utilizate în mediul dvs., consultați Utilizați rețele VPC în mod personalizat. - Creați VPC-ul cu un mod de subrețea personalizat: rețelele de calcul gcloud creează rețea-$NAME_SUFFIX --subnet-mode=custom Acum creați două subrețele în noul VPC, câte una pentru fiecare regiune. Definiți-vă propriile intervale de adrese, cum ar fi și 10.1.0.0/20 , acea se încadrează în domeniul dvs. de rețea: 10.2.0.0/20 gcloud compute networks subnets create n subnet-$NAME_SUFFIX-$REGION1 n --network=network-$NAME_SUFFIX n --range= 10.1.0.0/20n --region=$REGION1 gcloud compute networks subrețele creează n subrețea-$NAME_SUFFIX-$REGION2 n --network=network-$NAME_SUFFIX n --range= 10.2.0.0/20n --region=$REGION2 ## Creați reguli de firewall Pentru a permite traficului de rețea să circule corect în VPC, utilizați reguli de firewall. - Creați reguli de firewall pentru a permite traficul web și verificări de sănătate pentru încărcare echilibrator și grupuri de instanțe gestionate: gcloud compute firewall-rules create allow-http-$NAME_SUFFIX n --network=network-$NAME_SUFFIX n --direction=INGRESS n --priority=1000 n --action=ALLOW n --rules=tcp:80 n -- source-ranges=0.0.0.0/0 n --target-tags=http-server gcloud compute firewall-rules creează allow-health-check-$NAME_SUFFIX n --network=network-$NAME_SUFFIX n --action=allow n --direction=ingress n --source-ranges=130.211.0.0/22,35.191. 0.0/16 n --target-tags=allow-health-check n --rules=tcp:80 Regula HTTP permite traficul către orice VM unde se aplică http-servertag, și din orice sursă folosind 0.0.0.0/0interval. Pentru regula de verificare a starii de sanatate, intervalele implicite pentru Google Cloud sunt setate pentru a permite platformei să funcționeze corect verifica starea de sănătate a resurselor. Pentru a permite traficul SSH pentru configurația inițială a unei imagini de bază VM, sfera de aplicare regula firewall la mediul dvs. folosind --source-rangeparameter. Este posibil să fie necesar să colaborați cu echipa de rețea pentru a determina ce intervale de sursă organizația dvs. folosește A inlocui cu propriile domenii de adresă IP: IP_ADDRESS_SCOPE gcloud compute firewall-rules create allow-ssh-$NAME_SUFFIX n --network=network-$NAME_SUFFIX n --direction=INGRESS n --priority=1000 n --action=ALOW n --rules=tcp:22 n -- intervale-sursă= IP_ADDRESS_SCOPE După ce creați regulile firewall, verificați dacă cele trei reguli au fost adăugat: gcloud compute firewall-rules list n --project=$PROJECT_ID n --filter="NETWORK=network-$NAME_SUFFIX"Următorul exemplu de ieșire arată că cele trei reguli au fost corecte creată: NUME REȚEA DIRECȚIE PRIORITATE PERMITERE permit-verificarea-sănătății-aplicația de rețea INGRESS 1000 tcp:80 allow-http-app network-app INGRESS 1000 tcp:80 allow-ssh-app network-app INGRESS 1000 tcp:22 ## Creați și configurați o imagine de bază VM Pentru a crea mașini virtuale identice pe care le implementați fără configurație suplimentară, dvs utilizați o imagine VM personalizată. Această imagine surprinde configurația OS și Apache și este utilizat pentru a crea fiecare VM din grupul de instanțe gestionate în pașii următori. Pe VM, creați un element de bază index.html de pe discul persistent și montați-l pe /var/www/example.com. Un fișier de configurare Apache la /etc/apache2/sites-available/example.com.conf servește conținut web din locația discului persistent montat Următoarea diagramă arată pagina HTML de bază deservită de Apache care este stocată pe discul persistent: Construiți acest mediu în următorii pași. - Creați o mașină virtuală de bază cu un disc persistent atașat: Instanțele de calcul gcloud creează vm-base-$NAME_SUFFIX n --zone=$ZONE n --machine-type=n1-standard-1 n --subnet=subnet-$NAME_SUFFIX-$REGION1 n --tags=http-server n --image=debian-10-buster-v20210420 n --image-project=debian-cloud n --boot-disk-size=10GB n --boot-disk-type=pd-balanced n --boot-disk- device-name=vm-base-$NAME_SUFFIX n --create-disk=type=pd-ssd,name=disk-base-$NAME_SUFFIX,size=10GB,device-name=disk-base-$NAME_SUFFIX Utilizați parametri definiți la începutul acestui document pentru a denumi VM și conectați-vă la subrețeaua corectă. Numele sunt, de asemenea, atribuite din parametrii pentru discul de pornire și discul de date. Pentru a instala și configura site-ul web simplu, conectați-vă la VM de bază folosind SSH: gcloud compute ssh vm-base-$NAME_SUFFIX --zone=$ZONE În sesiunea SSH către VM, creați un script pentru a configura VM într-un editorul la alegere. Următorul exemplu utilizează Nano ca editor: nano configure-vm. Lipiți următorul script de configurare în fișier: bin/bash NAME_SUFFIX= aplicația # Creați un director pentru fișierele de bază ale site-ului web sudo mkdir -p /var/www/example.com sudo chmod a+w /var/www/example.com sudo chown -R www-data: /var/www/example.com # Găsiți numele discului, apoi formatați-l și montați-l DISK_NAME="google-disk-base-$NAME_SUFFIX"DISK_PATHfind /dev/disk/by-id -name DISK_NAME}"| xargs -Ireadlink -f n sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,renunțați $DISK_PATH sudo mount -o discard, implicit $DISK_PATH /var/www/example.com # Instalați Apache sudo apt-get update&& sudo apt-get -y install apache2 # Scrieți un fișier HTML de bază pe discul persistent montat sudo tee -a /var/www/example.com/index.html >/dev/null EOF' Exemplu HA/DR

Bine ați venit pe un site web Compute Engine cu failover cald la Cloud Storagep>

*:80> ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined EOF # Activați fișierul de configurare Apache și reîncărcați serviciul sudo a2dissite 000-implicit sudo a2ensite example.com.conf sudo systemctl reload apache2 Actualizați variabilă pentru a se potrivi cu valoarea setată la începutul acestui document, cum ar fi Aplicația NAME_SUFFIX. Scrieți fișierul și părăsiți editorul. De exemplu, în Nano utilizați Ctrl-Opentru a scrie fișierul, apoi ieșiți cu Ctrl-X. Faceți executabil scriptul de configurare, apoi rulați-l: chmod +x configure-vm../configure-vm. Ieșiți din sesiunea SSH pe VM: Ieșire Obțineți adresa IP a VM-ului și utilizați curlpentru a vedea pagina web de bază: curl $(instanțele de calcul gcloud descriu vm-base-$NAME_SUFFIX n --zone $ZONE n --format="value(networkInterfaces.accessConfigs.[0].natIPn). Site-ul web de bază este returnat, așa cum se arată în următorul exemplu de rezultat: Exemplu HA/DR

Bine ați venit pe un site web Compute Engine cu failover cald la Cloud Storagep>

gcloud compute imagini creează imagine-disc-$NAME_SUFFIX n --source-disk=disk-base-$NAME_SUFFIX n --source-disk-zone=$ZONE # Creați șabloane de instanță gcloud compute instanță-șabloane creează șablon-$NAME_SUFFIX-$REGION1 n --machine-type=n1-standard-1 n --subnet=projects/$PROJECT_ID/regions/$REGION1/subnetworks/subnet-$NAME_SUFFIX-$REGION1 n --region=$REGION1 n --tags=http-server n --metadatastartup-script /bin/bashn'echo\ UUIDblkid\ -s\ UUID\ -o\ value\ /dev/sdb /var/www/example. com\ ext4\ discard,defaults,nofail\ 0\ 2 ee\ -a\ /etc/fstabn'mount\ -a n --image=image-$NAME_SUFFIX n --create-disk=image=image-disk-$NAME_SUFFIX ,Ștergere automată=da gcloud compute instanță-șabloane creează șablon-$NAME_SUFFIX-$REGION2 n --machine-type=n1-standard-1 n --subnet=projects/$PROJECT_ID/regions/$REGION2/subnetworks/subnet-$NAME_SUFFIX-$REGION2 n --region=$REGION2 n --tags=http-server n --metadatastartup-script /bin/bashn'echo\ UUIDblkid\ -s\ UUID\ -o\ value\ /dev/sdb /var/www/example. com\ ext4\ discard,defaults,nofail\ 0\ 2 ee\ -a\ /etc/fstabn'mount\ -a n --image=image-$NAME_SUFFIX n --create-disk=image=image-disk-$NAME_SUFFIX ,Ștergere automată=da # Creați o verificare a stării de sănătate pentru instanțele VM gcloud compute health-checks creați http-basic-check-$NAME_SUFFIX n --port 80 # Creați grupurile de instanțe gestionate gcloud compute grupuri de instanțe gestionate create instance-group-$NAME_SUFFIX-$REGION1 n --template=template-$NAME_SUFFIX-$REGION1 n --size=2 n --region=$REGION1 n --health-check=http- check-check-$NAME_SUFFIX gcloud compute grupuri de instanțe gestionate creați grup de instanțe-$NAME_SUFFIX-$REGION2 n --template=template-$NAME_SUFFIX-$REGION2 n --size=2 n --region=$REGION2 n --health-check=http- check-check-$NAME_SUFFIX ## Creați și configurați un echilibrator de încărcare Pentru ca utilizatorii să vă acceseze site-ul web, trebuie să permiteți traficul către mașinile virtuale care rulează în grupurile de instanțe gestionate. De asemenea, doriți să redirecționați automat trafic către noile VM dacă există o eroare de zonă într-un grup de instanțe gestionat. În secțiunea următoare, creați un echilibrator de sarcină extern cu un serviciu backend pentru trafic HTTP pe port 80, utilizați verificarea de sănătate creată în pașii anteriori și mapați un IP extern adresa către serviciul de backend. Pentru mai multe informații, vezi Cum să configurați un simplu echilibrator de încărcare HTTP extern. - Creați și configurați echilibrul de încărcare pentru aplicația dvs.: # Configurați regulile de port pentru portul HTTP 80 gcloud compute grupuri de instanțe set-named-ports n instanță-grup-$NAME_SUFFIX-$REGION1 n --named-ports http:80 n --region $REGION1 gcloud compute grupuri de instanțe set-named-ports n instance-group-$NAME_SUFFIX-$REGION2 n --named-ports http:80 n --region $REGION2 # Creați un serviciu backend și adăugați-i grupurile de instanțe gestionate gcloud compute backend-services creează n web-backend-service-$NAME_SUFFIX n --protocol=HTTP n --port-name=http n --health-checks=http-basic-check-$NAME_SUFFIX n --global gcloud compute backend-services add-backend n web-backend-service-$NAME_SUFFIX n --instance-group=grup-de-instanțe-$NAME_SUFFIX-$REGION1 n --instance-group-region=$REGION1 n --global gcloud compute backend-services add-backend n web-backend-service-$NAME_SUFFIX n --instance-group=grup-de-instanțe-$NAME_SUFFIX-$REGION2 n --instance-group-region=$REGION2 n --global # Creați o hartă URL pentru serviciul de backend gcloud compute url-maps create web-map-http-$NAME_SUFFIX n --default-service web-backend-service-$NAME_SUFFIX # Configurați redirecționarea pentru traficul HTTP gcloud compute target-http-proxies create n http-lb-proxy-$NAME_SUFFIX n --url-map web-map-http-$NAME_SUFFIX gcloud compute forwarding-rules creează n http-content-rule-$NAME_SUFFIX n --global n --target-http-proxy=http-lb-proxy-$NAME_SUFFIX n --ports=80 Obțineți adresa IP a regulii de redirecționare pentru traficul web: IP_ADDRESSgcloud compute forwarding-rules descriu http-content-rule-$NAME_SUFFIX n --global n --format="value(IPAddressn Utilizare curl sau deschide browserul web, pentru a vizualiza site-ul web folosind IP-ul adresa echilibratorului de încărcare de la pasul anterior: curl $IP_ADDRESS Este nevoie de câteva minute pentru ca echilibratorul de încărcare să termine implementarea și să direcționează corect traficul către backend-ul tău. O eroare HTTP 404 este returnată dacă Echilibratorul de încărcare este încă implementat. Dacă este necesar, așteptați câteva minute și încercați accesați din nou site-ul web. Site-ul web de bază este returnat, așa cum se arată în următorul exemplu de rezultat: Exemplu HA/DR

Bine ați venit pe un site web Compute Engine cu failover cald la Cloud Storagep>

grupurile de instanțe gestionate se recuperează și pot furniza trafic pentru întregul site web experienţă. - Verificați domeniul pe care doriți să le utilizați împreună cu compartimentul de stocare în cloud. Creați un compartiment de stocare în cloud care să se potrivească cu numele domeniului pe care îl dețineți și doriți să utilizați: gsutil mb gsstatic-web.$DOMAIN The Este utilizată DOMAINvariable definită la începutul acestui document, cum ar fi . Acest exemplu stochează fișierele statice la exemplu.com static-web.example.com. Creați un fișier local pe care îl copiați în compartimentul Cloud Storage din urmatorul pas: cat< index.html HA / DR example

Welcome to a test static web server with warm failover from Cloud Storagep>

HA / DR example

Welcome to a test static web server with warm failover from Cloud Storagep>

curlagain, or open your web browser, to access the IP address of the load balancer: curl $IP_ADDRESS It might take a few minutes for the load balancer to update the configuration and to correctly direct traffic back to your managed instance groups. If needed, wait a few minutes and try to access the website again. The main website from the managed instance groups is returned, as shown in the following example output: HA / DR example p>Welcome to a Compute Engine website with warm failover to Cloud Storagep> ## Clean up To avoid incurring charges to your Google Cloud account for the resources used in this tutorial, either delete the project that contains the resources, or keep the project and delete the individual resources. To delete the individual resources created in this document, complete the following steps: - Delete the Cloud Storage bucket: gsutil rm -r gsstatic-web.$DOMAIN Delete the load balancer configuration: gcloud compute forwarding-rules delete n http-content-rule-$NAME_SUFFIX --global --quiet gcloud compute target-http-proxies delete n http-lb-proxy-$NAME_SUFFIX --quiet gcloud compute url-maps delete web-map-http-$NAME_SUFFIX --quiet gcloud compute url-maps delete web-map-http-bucket-$NAME_SUFFIX --quiet gcloud compute backend-services delete n web-backend-service-$NAME_SUFFIX --global --quiet gcloud compute backend-buckets delete web-bucket-$NAME_SUFFIX --quiet Delete the managed instance groups and health check: gcloud compute instance-groups managed delete n instance-group-$NAME_SUFFIX-$REGION1 n --region=$REGION1 --quiet gcloud compute instance-groups managed delete n instance-group-$NAME_SUFFIX-$REGION2 n --region=$REGION2 --quiet gcloud compute health-checks delete http-basic-check-$NAME_SUFFIX --quiet Delete the instance templates, images, base VM, and persistent disks: gcloud compute instance-templates delete n template-$NAME_SUFFIX-$REGION1 --quiet gcloud compute instance-templates delete n template-$NAME_SUFFIX-$REGION2 --quiet gcloud compute images delete image-$NAME_SUFFIX --quiet gcloud compute images delete image-disk-$NAME_SUFFIX --quiet gcloud compute instances delete vm-base-$NAME_SUFFIX n --zone=$ZONE --quiet Delete the firewall rules. gcloud compute firewall-rules delete n allow-health-check-$NAME_SUFFIX --quiet gcloud compute firewall-rules delete n allow-ssh-$NAME_SUFFIX --quiet gcloud compute firewall-rules delete n allow-http-$NAME_SUFFIX --quiet Delete the subnet and VPC. gcloud compute networks subnets delete n subnet-$NAME_SUFFIX-$REGION1 --region=$REGION1 --quiet gcloud compute networks subnets delete n subnet-$NAME_SUFFIX-$REGION2 --region=$REGION2 --quiet gcloud compute networks delete network-$NAME_SUFFIX --quiet ## What's next - - For an alternative approach that uses Cloud DNS instead of external HTTP(S) Load Balancing to control the failover, see Deploy a warm recoverable web server using Cloud DNS with Compute Engine and Cloud Storage. This pattern is useful if you have, or want to use, Cloud DNS. - To learn how how to determine the best approach for your own applications and which recovery method to use, see the Disaster recovery planning guide. - To see other patterns for applications, such as cold and hot failover, see Disaster recovery scenarios for applications. - For more ways to handle scale and availability, see the Patterns for scalable and resilient apps. - Explore reference architectures, diagrams, tutorials, and best practices about Google Cloud. Take a look at our Cloud Architecture Center.