Dokumen ini bertujuan untuk arkitek dan orang yang bekerja dalam operasi dan pasukan pentadbiran. Dokumen itu menerangkan corak contoh yang boleh anda gunakan untuk penempatan anda sendiri dalam Google Cloud. Dalam corak ini, pengimbang beban mengarahkan trafik ke Enjin Kira contoh dalam kumpulan contoh terurus yang menyajikan kandungan. Dalam gangguan, anda mengemas kini Pengimbangan Beban HTTP(S) luaran konfigurasi dan gagal ke tapak statik dalam Storan Awan. Untuk melengkapkan tutorial ini, anda memerlukan nama domain berdaftar yang anda kawal dan ingin digunakan dengan dokumen ini. Dalam penggunaan pengeluaran, tapak web anda mungkin termasuk lebih banyak fail dan kod aplikasi tambahan pada mesin maya kumpulan contoh terurus anda (VM) daripada yang ditunjukkan dalam dokumen ini. Storan Awan kemudian menjadi tuan rumah lebih banyak versi statik terhad yang menyediakan kefungsian minimum. Dalam failover hangat senario, pengguna melihat tapak web terhad ini sehingga kumpulan contoh terurus pulih dan boleh melayani trafik untuk pengalaman penuh tapak web. Dalam tutorial ini, anda menggunakan sumber untuk mencipta persekitaran seperti yang ditunjukkan dalam imej berikut: Apabila anda perlu gagal, anda mengemas kini konfigurasi pengimbang beban untuk mengarah trafik ke Cloud Storage, seperti yang ditunjukkan dalam imej berikut: Corak failover hangat ini mengimbangi kos menjalankan satu lagi terurus kumpulan instance di rantau lain yang anda hanya gunakan apabila kawasan utama gagal. Kos tapak statik menggunakan Cloud Storage adalah lebih rendah daripada berjalan kumpulan contoh terurus yang lain, tetapi terdapat kelewatan yang singkat semasa anda mengemas kini pemuatan konfigurasi pengimbang antara pilihan pengehosan. Laman web yang terhad pengalaman dalam Cloud Storage adalah lebih baik daripada tapak web yang tidak tersedia dan lemah pengalaman pelanggan. Untuk pendekatan alternatif yang menggunakan Cloud DNS dan bukannya luaran HTTP(S) Load Balancing untuk mengawal failover, lihat Gunakan pelayan web boleh pulih yang hangat menggunakan Cloud DNS dengan Compute Engine dan Cloud Storage. Corak ini berguna jika anda mempunyai, atau ingin menggunakan, Cloud DNS. Untuk menjalankan aplikasi yang boleh dipercayai dalam Google Cloud, kami mengesyorkan anda mereka bentuk infrastruktur aplikasi anda untuk menangani gangguan. Bergantung pada permohonan anda dan keperluan perniagaan, anda mungkin memerlukan failover sejuk, failover hangat atau panas corak failover. Untuk maklumat lanjut tentang cara menentukan pendekatan terbaik untuk aplikasi anda sendiri, lihat Panduan perancangan pemulihan bencana. Dokumen ini menggunakan asas pelayan web Apache, tetapi pendekatan yang sama terhadap penggunaan infrastruktur terpakai kepada yang lain persekitaran aplikasi yang anda perlu buat. ## Objektif - - Buat kumpulan contoh terurus serantau dengan imej VM tersuai. - Buat baldi Storan Awan. - Buat dan konfigurasi HTTP(S) Load Balancing luaran. - Uji failover pelayan web yang hangat dengan pengimbang beban yang dikemas kini konfigurasi. - Uji pemulihan dan failback dengan konfigurasi pengimbang beban yang dikemas kini. ## Kos Tutorial ini menggunakan komponen Google Cloud yang boleh dibilkan berikut: - - Enjin Kira - Rangkaian - Storan Awan Untuk menjana anggaran kos berdasarkan unjuran penggunaan anda, gunakan kalkulator harga. ## Sebelum awak bermula - - Log masuk ke akaun Google Cloud anda. Jika anda baru mengenali Google Cloud, buat akaun untuk menilai prestasi produk kami senario dunia sebenar. Pelanggan baharu juga mendapat kredit percuma sebanyak $300 jalankan, uji dan gunakan beban kerja. - Dalam konsol Google Cloud, pada halaman pemilih projek, pilih atau buat projek Google Cloud. - Pastikan pengebilan didayakan untuk projek Awan anda. Belajar bagaimana semak sama ada pengebilan didayakan pada projek. - Dayakan Compute Engine API. - Pasang dan mulakan Google Cloud CLI. - Dalam konsol Google Cloud, pada halaman pemilih projek, pilih atau buat projek Google Cloud. - Pastikan pengebilan didayakan untuk projek Awan anda. Belajar bagaimana semak sama ada pengebilan didayakan pada projek. - Dayakan Compute Engine API. - Pasang dan mulakan Google Cloud CLI. Anda boleh menjalankan Google Cloud CLI dalam konsol tanpa memasang CLI Awan Google. Untuk menjalankan CLI gcloud dalam konsol, gunakan Cloud Shell ## Sediakan persekitaran Dalam bahagian ini, anda mentakrifkan beberapa pembolehubah untuk nama sumber anda dan lokasi. Pembolehubah ini digunakan oleh arahan Google Cloud CLI semasa anda menggunakan sumber. Sepanjang dokumen ini, melainkan dinyatakan sebaliknya, anda memasukkan semua arahan Cloud Shell atau persekitaran pembangunan tempatan anda. - Gantikan dengan ID projek anda sendiri. Jika dikehendaki, berikan akhiran nama anda sendiri untuk sumber untuk membantu mencari dan mengenal pasti mereka, seperti PROJECT_ID aplikasi Nyatakan dua wilayah, seperti dan kami-barat1 , dan zon dalam salah satu wilayah tersebut, seperti kami-barat2 . Zon ini mentakrifkan tempat VM asas awal dicipta yang digunakan untuk mencipta imej untuk kumpulan contoh terurus kami-barat1-a Akhir sekali, tetapkan domain yang digunakan untuk tapak web statik anda, seperti example.com PROJECT_ID= PROJECT_ID NAME_SUFFIX= apl WILAYAH1= us-west1 WILAYAH2= us-west2 ZON= kami-barat1-a DOMAIN= example.com ## Buat VPC dan subnet Untuk menyediakan akses rangkaian kepada VM, anda membuat Awan Peribadi Maya (VPC) dan subnet. Memandangkan anda memerlukan kumpulan contoh terurus dalam dua wilayah, anda membuat satu subnet di setiap wilayah. Untuk maklumat lanjut tentang kelebihan adat mod subnet untuk mengurus julat alamat IP yang digunakan dalam persekitaran anda, lihat Gunakan rangkaian VPC mod tersuai. - Buat VPC dengan mod subnet tersuai: rangkaian pengiraan gcloud mencipta rangkaian-$NAME_SUFFIX --subnet-mode=custom Sekarang buat dua subnet dalam VPC baharu, satu untuk setiap satu wilayah. Tentukan julat alamat anda sendiri, seperti dan 10.1.0.0/20 , itu muat dalam julat rangkaian anda: 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 subnets create n subnet-$NAME_SUFFIX-$REGION2 n --network=network-$NAME_SUFFIX n --range= 10.2.0.0/20n --region=$REGION2 ## Buat peraturan firewall Untuk membenarkan trafik rangkaian mengalir dengan betul dalam VPC, gunakan peraturan firewall. - Cipta peraturan tembok api untuk membenarkan trafik web dan pemeriksaan kesihatan untuk pemuatan pengimbang dan kumpulan contoh terurus: gcloud compute firewall-rules buat 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 create 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=benarkan-pemeriksaan-kesihatan n --rules=tcp:80 Peraturan HTTP membenarkan trafik ke mana-mana VM di mana http-servertag digunakan, dan daripada mana-mana sumber menggunakan 0.0.0.0/0julat. Untuk peraturan pemeriksaan kesihatan, julat lalai untuk Google Cloud ditetapkan untuk membolehkan platform berfungsi dengan betul semak kesihatan sumber. Untuk membenarkan trafik SSH untuk konfigurasi awal imej VM asas, skop peraturan firewall kepada persekitaran anda menggunakan --source-rangeparameter. Anda mungkin perlu bekerjasama dengan pasukan rangkaian anda untuk menentukan julat sumber organisasi anda gunakan Gantikan dengan skop alamat IP anda sendiri: IP_ADDRESS_SCOPE gcloud compute firewall-rules buat allow-ssh-$NAME_SUFFIX n --network=network-$NAME_SUFFIX n --direction=INGRESS n --priority=1000 n --action=BENARKAN n --rules=tcp:22 n -- julat sumber= IP_ADDRESS_SCOPE Selepas anda membuat peraturan tembok api, sahkan bahawa ketiga-tiga peraturan itu telah dibuat menambah: gcloud mengira senarai peraturan firewall n --project=$PROJECT_ID n --filter="NETWORK=network-$NAME_SUFFIX"Contoh output berikut menunjukkan tiga peraturan telah betul dicipta: NAMA RANGKAIAN ARAH KEUTAMAAN DIBENARKAN benarkan-semak-kesihatan-apl rangkaian-apl INGRESS 1000 tcp:80 benarkan-apl rangkaian-http-apl INGRESS 1000 tcp:80 allow-ssh-app network-app INGRESS 1000 tcp:22 ## Cipta dan konfigurasikan imej VM asas Untuk membuat VM serupa yang anda gunakan tanpa konfigurasi tambahan, anda gunakan imej VM tersuai. Imej ini menangkap konfigurasi OS dan Apache, dan digunakan untuk membuat setiap VM dalam kumpulan contoh terurus dalam langkah seterusnya. Pada VM, anda mencipta asas index.html fail pada cakera berterusan dan lekapkannya ke /var/www/example.com. Fail konfigurasi Apache di /etc/apache2/sites-available/example.com.conf menyajikan kandungan web daripada lokasi cakera berterusan yang dipasang Rajah berikut menunjukkan halaman HTML asas yang disediakan oleh Apache yang disimpan pada cakera berterusan: Anda membina persekitaran ini dalam langkah berikut. - Buat VM asas dengan cakera berterusan yang dilampirkan: contoh pengiraan gcloud buat 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- nama peranti=vm-base-$NAME_SUFFIX n --create-disk=type=pd-ssd,name=disk-base-$NAME_SUFFIX,size=10GB,device-name=disk-base-$NAME_SUFFIX Anda menggunakan parameter yang ditakrifkan pada permulaan dokumen ini untuk menamakan VM dan sambung ke subnet yang betul. Nama juga diberikan daripada parameter untuk cakera but dan cakera data. Untuk memasang dan mengkonfigurasi tapak web mudah, sambungkan ke pangkalan VM menggunakan SSH: gcloud compute ssh vm-base-$NAME_SUFFIX --zone=$ZONE Dalam sesi SSH anda kepada VM, buat skrip untuk mengkonfigurasi VM dalam editor pilihan anda. Contoh berikut menggunakan Nano sebagai editor: konfigurasi nano-vm. Tampalkan skrip konfigurasi berikut ke dalam fail: tong/bash NAME_SUFFIX= aplikasi # Buat direktori untuk fail tapak web asas sudo mkdir -p /var/www/example.com sudo chmod a+w /var/www/example.com sudo chown -R www-data: /var/www/example.com # Cari nama cakera, kemudian format dan lekapkannya DISK_NAME="google-disk-base-$NAME_SUFFIX"DISK_PATHcari /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,buang $DISK_PATH sudo mount -o buang, lalai $DISK_PATH /var/www/example.com # Pasang Apache sudo apt-get kemas kini&& sudo apt-get -y install apache2 # Tulis fail HTML asas pada cakera persisten yang dipasang sudo tee -a /var/www/example.com/index.html >/dev/null EOF' Contoh HA / DR

Selamat datang ke tapak web Compute Engine dengan failover hangat ke 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 # Dayakan fail konfigurasi Apache dan muat semula perkhidmatan sudo a2dissite 000-default sudo a2ensite example.com.conf sudo systemctl muat semula apache2 Kemas kini pembolehubah untuk memadankan nilai yang ditetapkan pada permulaan dokumen ini, seperti Apl NAME_SUFFIX. Tulis fail dan keluar dari editor anda. Sebagai contoh, dalam Nano yang anda gunakan Ctrl-Oto menulis fail, kemudian keluar dengan Ctrl-X. Jadikan skrip konfigurasi boleh laku, kemudian jalankannya: chmod +x configure-vm../configure-vm. Keluar dari sesi SSH ke VM: keluar Dapatkan alamat IP VM dan gunakan curl untuk melihat halaman web asas: curl $(gcloud compute instance describe vm-base-$NAME_SUFFIX n --zone $ZONE n --format="value(networkInterfaces.accessConfigs.[0].natIPn Laman web asas dikembalikan, seperti yang ditunjukkan dalam contoh output berikut: Contoh HA / DR

Selamat datang ke tapak web Compute Engine dengan failover hangat ke Cloud Storagep>

gcloud mengira imej mencipta imej-cakera-$NAME_SUFFIX n --source-disk=disk-base-$NAME_SUFFIX n --source-disk-zone=$ZONE # Buat templat contoh gcloud compute instance-templates buat template-$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 ,auto-delete=ya gcloud compute instance-templates cipta templat-$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 ,auto-delete=ya # Buat pemeriksaan kesihatan untuk kejadian VM pemeriksaan kesihatan pengiraan gcloud membuat http http-basic-check-$NAME_SUFFIX n --port 80 # Buat kumpulan contoh terurus gcloud compute instance-groups berjaya membuat instance-group-$NAME_SUFFIX-$REGION1 n --template=template-$NAME_SUFFIX-$REGION1 n --size=2 n --region=$REGION1 n --health-check=http- semak asas-$NAME_SUFFIX gcloud compute instance-groups berjaya membuat instance-group-$NAME_SUFFIX-$REGION2 n --template=template-$NAME_SUFFIX-$REGION2 n --size=2 n --region=$REGION2 n --health-check=http- semak asas-$NAME_SUFFIX ## Buat dan konfigurasikan pengimbang beban Untuk pengguna mengakses tapak web anda, anda perlu membenarkan trafik melalui VM yang dijalankan dalam kumpulan contoh terurus. Anda juga mahu mengubah hala secara automatik trafik ke VM baharu jika terdapat kegagalan zon dalam kumpulan contoh terurus. Dalam bahagian berikut, anda membuat satu pengimbang beban luaran dengan perkhidmatan hujung belakang untuk trafik HTTP pada port 80, gunakan pemeriksaan kesihatan yang dibuat dalam langkah sebelumnya, dan petakan IP luaran alamat melalui perkhidmatan bahagian belakang. Untuk maklumat lanjut, lihat Bagaimana untuk menyediakan pengimbang beban HTTP luaran yang mudah. - Cipta dan konfigurasikan pengimbang beban untuk aplikasi anda: # Konfigurasikan peraturan port untuk port HTTP 80 gcloud compute instance-groups set-named-ports n instance-group-$NAME_SUFFIX-$REGION1 n --named-ports http:80 n --region $REGION1 gcloud compute instance-groups set-named-ports n instance-group-$NAME_SUFFIX-$REGION2 n --named-ports http:80 n --region $REGION2 # Buat perkhidmatan bahagian belakang dan tambahkan kumpulan contoh terurus padanya gcloud compute backend-services buat 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=instance-group-$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=instance-group-$NAME_SUFFIX-$REGION2 n --instance-group-region=$REGION2 n --global # Buat peta URL untuk perkhidmatan bahagian belakang gcloud compute url-maps create web-map-http-$NAME_SUFFIX n --default-service web-backend-service-$NAME_SUFFIX # Konfigurasikan pemajuan untuk trafik HTTP gcloud compute target-http-proxyes create n http-lb-proxy-$NAME_SUFFIX n --url-map web-map-http-$NAME_SUFFIX peraturan pemajuan pengiraan gcloud buat n http-peraturan-kandungan-$NAME_SUFFIX n --global n --target-http-proxy=http-lb-proxy-$NAME_SUFFIX n --ports=80 Dapatkan alamat IP peraturan pemajuan untuk trafik web: IP_ADDRESSgcloud compute forwarding-rules menghuraikan http-content-rule-$NAME_SUFFIX n --global n --format="value(IPAddressn guna curl, atau buka pelayar web anda, untuk melihat tapak web menggunakan IP alamat pengimbang beban dari langkah sebelumnya: curl $IP_ADDRESS Pengimbang beban mengambil masa beberapa minit untuk menyelesaikan penggunaan dan untuk mengarahkan trafik ke bahagian belakang anda dengan betul. Ralat HTTP 404 dikembalikan jika pengimbang beban masih digunakan. Jika perlu, tunggu beberapa minit dan cuba mengakses laman web semula. Laman web asas dikembalikan, seperti yang ditunjukkan dalam contoh output berikut: Contoh HA / DR

Selamat datang ke tapak web Compute Engine dengan failover hangat ke Cloud Storagep>

kumpulan contoh terurus pulih dan boleh menyampaikan trafik untuk tapak web penuh pengalaman. - Sahkan domain yang anda mahu gunakan dengan baldi Storan Awan anda. Buat baldi Storan Awan untuk memadankan nama domain yang anda miliki dan ingin menggunakan: gsutil mb gsstatic-web.$DOMAIN The Pembolehubah DOMAIN yang ditakrifkan pada permulaan dokumen ini digunakan, seperti . Contoh ini menyimpan fail statik di example.com static-web.example.com. Buat fail setempat yang anda salin ke baldi Storan Awan dalam langkah seterusnya: 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.