1. Pengantar
Layanan Cloud DNS menawarkan solusi Domain Name System (DNS) global berperforma tinggi dan tangguh, sehingga Anda dapat memublikasikan zona dan data tanpa memerlukan infrastruktur DNS yang dikelola sendiri.
Yang paling penting, Cloud DNS menyertakan dukungan untuk health check dan kemampuan failover otomatis dalam kebijakan pemilihan rutenya untuk endpoint eksternal. Namun, perhatikan bahwa health check untuk endpoint eksternal ini hanya tersedia dalam zona publik, dan endpoint itu sendiri harus dapat diakses secara publik melalui internet.
Yang akan Anda pelajari
- Cara membuat Load Balancer Aplikasi Eksternal Regional dengan grup instance tidak terkelola.
- Cara mengonfigurasi health check Cloud DNS untuk pemilihan rute DNS eksternal.
- Cara membuat kebijakan perutean failover.
Yang Anda butuhkan
- Pengetahuan dasar tentang DNS.
- Pengetahuan dasar tentang Google Compute Engine.
- Pengetahuan dasar tentang Load Balancer Aplikasi.
- Project Google Cloud dengan Izin Pemilik
- Domain publik yang Anda miliki, yang dapat Anda buat zona publik Cloud DNS-nya.
- Kebijakan organisasi berikut saat ini tidak diterapkan dalam Project Google Cloud: VM Shielded dan Grup Endpoint Jaringan Internet.
2. Topologi codelab

Dalam codelab ini, Anda akan menggunakan health check Cloud DNS untuk endpoint eksternal guna mengalihkan traffic ke Load Balancer Aplikasi Eksternal Regional cadangan jika backend load balancer utama menjadi tidak responsif.
Anda akan membuat situs di dua region, yang masing-masing di-frontend oleh Load Balancer Aplikasi Eksternal. Kemudian, Anda akan mengonfigurasi health check Cloud DNS dengan kebijakan pemilihan rute failover.
3. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
4. Sebelum memulai
Mengaktifkan API
Di dalam Cloud Shell, pastikan project Anda sudah disiapkan dan konfigurasi variabel.
gcloud auth login
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
export projectid=[YOUR-PROJECT-ID]
# Define variables for regions and the domain
export REGION_A=us-central1
export REGION_B=us-west1
export DNS_ZONE=dnscodelab-zone
Export DNS_DOMAIN=gcp.<yourpublicdomain>.com
echo $projectid
echo $REGION_A
echo $REGION_B
echo $DNS_ZONE
echo $DNS_DOMAIN
Aktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com
5. Membuat Infrastruktur Cloud Load Balancing
Di bagian ini, Anda akan membuat VPC, subnet, aturan firewall, VM, dan Grup Instance Tidak Terkelola yang diperlukan di dua region berbeda untuk mendukung load balancer primer dan cadangan.
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create external-lb-vpc --subnet-mode=custom
Buat dua subnet di REGION_A (Primer) dan REGION_B (Cadangan) untuk menghosting server web backend
Buat Subnet
Dari Cloud Shell
gcloud compute networks subnets create subnet-a --network=external-lb-vpc --region=$REGION_A --range=10.10.1.0/24
gcloud compute networks subnets create subnet-b --network=external-lb-vpc --region=$REGION_B --range=10.20.1.0/24
Buat subnet khusus proxy di setiap region untuk Load Balancer Aplikasi eksternal regional masing-masing yang akan dibuat nanti.
Subnet khusus proxy ini adalah persyaratan wajib untuk semua load balancer regional berbasis Envoy yang di-deploy dalam region yang sama dengan jaringan external-lb-vpc. Proxy ini secara efektif menghentikan koneksi klien dan selanjutnya membuat koneksi baru ke layanan backend.
Dari Cloud Shell
gcloud compute networks subnets create proxy-only-subnet-a \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_A \
--network=external-lb-vpc \
--range=10.129.0.0/23
gcloud compute networks subnets create proxy-only-subnet-b \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$REGION_B \
--network=external-lb-vpc \
--range=10.130.0.0/23
Membuat Aturan Firewall Jaringan
fw-allow-health-check. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan semua traffic TCP dari sistem health check Google Cloud (di 130.211.0.0/22 dan 35.191.0.0/16). Contoh ini menggunakan tag target load-balanced-backend untuk mengidentifikasi VM yang menerapkan aturan firewall.
fw-allow-proxies. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan traffic TCP pada port 80 dari proxy terkelola Load Balancer Aplikasi eksternal regional. Contoh ini menggunakan tag target load-balanced-backend untuk mengidentifikasi VM yang menerapkan aturan firewall.
Dari Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=load-balanced-backend \
--rules=tcp
gcloud compute firewall-rules create fw-allow-proxies \
--network=external-lb-vpc \
--action=allow \
--direction=ingress \
--source-ranges=10.129.0.0/23,10.130.0.0/23 \
--target-tags=load-balanced-backend \
--rules=tcp:80
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Dari Cloud Shell
gcloud compute firewall-rules create allow-ssh \
--allow tcp:22 --network external-lb-vpc \
--source-ranges 35.235.240.0/20 \
--description "SSH with IAP" \
--target-tags=allow-ssh
6. Membuat Cloud NAT dan Cloud Router
Anda memerlukan gateway Cloud NAT di kedua region agar VM pribadi dapat mendownload dan menginstal paket dari internet.
- VM server web kita harus mendownload dan menginstal server web Apache.
- VM klien harus mendownload dan menginstal paket dnsutils yang akan kita gunakan untuk pengujian.
Setiap gateway Cloud NAT dikaitkan dengan satu jaringan VPC, region, dan Cloud Router. Jadi, sebelum membuat gateway NAT, kita perlu membuat Cloud Router di setiap region.
Membuat Cloud Router
Dari Cloud Shell
gcloud compute routers create "$REGION_A-cloudrouter" \
--region $REGION_A --network=external-lb-vpc --asn=65501
gcloud compute routers create "$REGION_B-cloudrouter" \
--region $REGION_B --network=external-lb-vpc --asn=65501
Membuat Gateway NAT
Dari Cloud Shell
gcloud compute routers nats create "$REGION_A-nat-gw" \
--router="$REGION_A-cloudrouter" \
--router-region=$REGION_A \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
gcloud compute routers nats create "$REGION_B-nat-gw" \
--router="$REGION_B-cloudrouter" \
--router-region=$REGION_B \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips
Membuat VM Backend dan Grup Instance Tidak Terkelola
Buat VM di setiap region dan instal server web (misalnya Apache):
Dari Cloud Shell
# Primary (Region A)
gcloud compute instances create vm-a \
--zone=$REGION_A-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-a \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_A Primary Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
# Backup (Region B)
gcloud compute instances create vm-b \
--zone=$REGION_B-a \
--image-family=debian-12 --image-project=debian-cloud \
--subnet=subnet-b \
--no-address \
--tags=load-balanced-backend,allow-ssh \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" - $REGION_B Backup Backend |\
tee /var/www/html/index.html
systemctl restart apache2'
Buat Grup Instance Tidak Terkelola dan tambahkan instance VM ke dalamnya untuk setiap region:
Dari Cloud Shell
# Primary (Region A)
gcloud compute instance-groups unmanaged create ig-a --zone=$REGION_A-a
gcloud compute instance-groups unmanaged add-instances ig-a --zone=$REGION_A-a --instances=vm-a
# Backup (Region B)
gcloud compute instance-groups unmanaged create ig-b --zone=$REGION_B-a
gcloud compute instance-groups unmanaged add-instances ig-b --zone=$REGION_B-a --instances=vm-b
7. Mengonfigurasi Load Balancer Aplikasi Eksternal Regional
Anda akan mengonfigurasi Load Balancer Aplikasi Eksternal Regional yang lengkap di REGION_A (Primer) dan REGION_B (Cadangan).
Membuat Health Check dan Layanan Backend
Load Balancer Aplikasi Eksternal Regional berbasis Envoy dan memerlukan Konfigurasi Health Check regional.
Buat Health Check HTTP (digunakan oleh Load Balancer untuk memeriksa kesehatan instance):
Di Cloud Shell
gcloud compute health-checks create http http-lb-hc-primary-region \
--port 80 \
--region=$REGION_A
gcloud compute health-checks create http http-lb-hc-backup-region \
--port 80 \
--region=$REGION_B
Buat Layanan Backend regional dan lampirkan Grup Instance di setiap region**.**
Di Cloud Shell
# Primary (Region A)
gcloud compute backend-services create be-svc-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-primary-region \
--health-checks-region=$REGION_A \
--region=$REGION_A
gcloud compute backend-services add-backend be-svc-a \
--instance-group=ig-a \
--instance-group-zone=$REGION_A-a \
--region=$REGION_A
# Backup (Region B)
gcloud compute backend-services create be-svc-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-lb-hc-backup-region \
--health-checks-region=$REGION_B \
--region=$REGION_B
gcloud compute backend-services add-backend be-svc-b --instance-group=ig-b --instance-group-zone=$REGION_B-a --region=$REGION_B
Membuat Komponen Frontend
Buat Peta URL dan Proxy HTTP Target di kedua region:
Di Cloud Shell
#Primary (Region A)
gcloud compute url-maps create url-map-a \
--default-service=be-svc-a \
--region=$REGION_A
gcloud compute target-http-proxies create http-proxy-a \
--url-map=url-map-a \
--url-map-region=$REGION_A \
--region=$REGION_A
#Backup (Region B)
gcloud compute url-maps create url-map-b \
--default-service=be-svc-b \
--region=$REGION_B
gcloud compute target-http-proxies create http-proxy-b \
--url-map=url-map-b \
--url-map-region=$REGION_B \
--region=$REGION_B
Cadangkan alamat IP statis (Eksternal) untuk aturan penerusan:
Di Cloud Shell
# Primary IP (Region A)
gcloud compute addresses create rxlb-ip-a --region=$REGION_A
# Backup IP (Region B)
gcloud compute addresses create rxlb-ip-b --region=$REGION_B
Buat Aturan Penerusan untuk dua load balancer:
Di Cloud Shell
# Primary (Region A)
gcloud compute forwarding-rules create http-fwd-rule-a \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_A \
--target-http-proxy-region=$REGION_A \
--address=rxlb-ip-a \
--target-http-proxy=http-proxy-a \
--ports=80
# Backup (Region B)
gcloud compute forwarding-rules create http-fwd-rule-b \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network=external-lb-vpc \
--region=$REGION_B \
--target-http-proxy-region=$REGION_B \
--address=rxlb-ip-b \
--target-http-proxy=http-proxy-b \
--ports=80
Mengonfigurasi Cloud DNS untuk Failover
Membuat Health Check Cloud DNS untuk endpoint eksternal
Anda harus membuat health check global khusus untuk alamat IP publik load balancer. Hal ini berbeda dengan health check internal load balancer.
Pertama, tentukan alamat IP eksternal Load balancer untuk mengonfigurasi kebijakan failover dan mengekspornya sebagai variabel
Di Cloud Shell
PRIMARY_IP=$(gcloud compute addresses describe rxlb-ip-a --region=$REGION_A --format='get(address)')
BACKUP_IP=$(gcloud compute addresses describe rxlb-ip-b --region=$REGION_B --format='get(address)')
Buat health check DNS global (memerlukan tiga wilayah sumber):
Di Cloud Shell
gcloud beta compute health-checks create http dns-failover-health-check \
--global \
--source-regions=$REGION_A,$REGION_B,europe-west1 \
--request-path=/ \
--check-interval=30s \
--port=80 \
--enable-logging
Buat Kebijakan Pemilihan Rute Failover dan Zona Terkelola Publik.
Buat Zona Publik Terkelola (gunakan domain DNS yang Anda miliki):
Di Cloud Shell
gcloud dns managed-zones create codelab-publiczone --dns-name=$DNS_DOMAIN --description="Codelab DNS Failover Zone"
Buat data A dengan Kebijakan Perutean Failover. Kebijakan ini mengarah ke IP Primer dan menggunakan health check untuk menentukan kapan harus melakukan failover ke IP Cadangan.
Perintah di bawah menggunakan nama aturan penerusan load balancer untuk merujuk alamat IP kebijakan perutean.
gcloud beta dns record-sets create codelab.gcp.axiszulu.com. \
--type=A \
--ttl=5 \
--zone=codelab-publiczone \
--routing_policy_type=FAILOVER \
--routing-policy-primary-data=$PRIMARY_IP \
--routing-policy-backup-data-type=GEO \
--routing-policy-backup-item=location=$REGION_B,external_endpoints=$BACKUP_IP \
--health-check=dns-failover-health-check
8. Menguji failover regional
- Validasi Awal: Gunakan alat (seperti
digatau browser web) untuk membuat kueri domain Anda. URL ini akan diselesaikan ke IP Utama ($PRIMARY_IP) dan menampilkan halaman "Region A - Primary Backend".
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <PRIMARY_IP>
Output dari browser

- Simulasikan Failover: Login ke VM utama (
vm-a) dan nonaktifkan Apache untuk menyimulasikan penghentian:
Di Cloud Shell
gcloud compute ssh vm-a --zone=$REGION_A-a --command="sudo systemctl stop apache2"
- Verifikasi Status Tidak Responsif: Tunggu selama 2-3 menit hingga health check DNS menandai endpoint utama sebagai tidak responsif.
# check health status
gcloud compute backend-services get-health be-svc-a --region=${REGION_A}
Output:
backend: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instanceGroups/ig-a
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/precise-airship-466617-c3/zones/us-central1-a/instances/vm-a
ipAddress: 10.10.1.2
port: 80
kind: compute#backendServiceGroupHealth
- Validasi Pengalihan: Kueri ulang domain Anda. Sekarang, alamat tersebut akan diselesaikan ke IP Cadangan (
$BACKUP_IP) dan menampilkan halaman "Region B - Backup Backend".
dig codelab.gcp.axiszulu.com
OUTPUT
; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> codelab.gcp.axiszulu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16096
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;codelab.gcp.axiszulu.com. IN A
;; ANSWER SECTION:
codelab.gcp.axiszulu.com. 5 IN A <BACKUP_IP>
Output dari browser

- Simulasikan Failback (Opsional): SSH dan mulai apache di VM utama, lalu tunggu hingga health check DNS menandai endpoint utama sebagai responsif. Traffic akan otomatis dirutekan kembali ke IP utama.
- Opsional: Anda dapat menganalisis Logging Health Check Cloud DNS dengan menjalankan perintah di bawah di Cloud Shell
gcloud logging read "logName=projects/${projectid}/logs/compute.googleapis.com%2Fhealthchecks" \
--limit=10 \
--project=${projectid} \
--freshness=1d \
--format="table(timestamp:label=TIME, \
jsonPayload.healthCheckProbeResult.ipAddress:label=BACKEND_IP, \
jsonPayload.healthCheckProbeResult.previousDetailedHealthState:label=PREVIOUS_STATE, \
jsonPayload.healthCheckProbeResult.detailedHealthState:label=CURRENT_STATE, \
jsonPayload.healthCheckProbeResult.probeResultText:label=RESULT_TEXT)"
9. Langkah-langkah pembersihan
Hapus semua komponen untuk menghindari timbulnya biaya lebih lanjut.
Dari Cloud Shell
# Delete VMs
gcloud compute instances delete vm-a --zone=$REGION_A-a --quiet
gcloud compute instances delete vm-b --zone=$REGION_B-a --quiet
# Delete Load Balancer Components (Primary)
gcloud compute forwarding-rules delete http-fwd-rule-a --region=$REGION_A --quiet
gcloud compute target-http-proxies delete http-proxy-a --region=$REGION_A --quiet
gcloud compute url-maps delete url-map-a --region=$REGION_A --quiet
gcloud compute backend-services delete be-svc-a --region=$REGION_A --quiet
gcloud compute addresses delete rxlb-ip-a --region=$REGION_A --quiet
# Delete Load Balancer Components (Backup)
gcloud compute forwarding-rules delete http-fwd-rule-b --region=$REGION_B --quiet
gcloud compute target-http-proxies delete http-proxy-b --region=$REGION_B --quiet
gcloud compute url-maps delete url-map-b --region=$REGION_B --quiet
gcloud compute backend-services delete be-svc-b --region=$REGION_B --quiet
gcloud compute addresses delete rxlb-ip-b --region=$REGION_B --quiet
# Delete Instance Groups and LB Health Checks
gcloud compute instance-groups unmanaged delete ig-a --zone=$REGION_A-a --quiet
gcloud compute instance-groups unmanaged delete ig-b --zone=$REGION_B-a --quiet
gcloud compute health-checks delete http-lb-hc-primary-region --region=$REGION_A --quiet
gcloud compute health-checks delete http-lb-hc-backup-region --region=$REGION_B --quiet
# Delete Cloud DNS Records Zone and DNS Heath Checks
gcloud dns record-sets delete $DNS_DOMAIN --type=A --zone=codelab-publiczone --quiet
gcloud dns managed-zones delete codelab-publiczone --quiet
gcloud compute health-checks delete dns-failover-health-check --global --quiet
# Delete Cloud NAT and Cloud Routers
gcloud compute routers nats delete $REGION_A-nat-gw \
--router=$REGION_A-cloudrouter --region=$REGION_A --quiet
gcloud compute routers nats delete $REGION_B-nat-gw \
--router=$REGION_B-cloudrouter --region=$REGION_B --quiet
gcloud compute routers delete $REGION_A-cloudrouter \
--region=$REGION_A --quiet
gcloud compute routers delete $REGION_B-cloudrouter \
--region=$REGION_B --quiet
# Delete Subnets and Firewall Rules
gcloud compute firewall-rules delete fw-allow-health-check --quiet
gcloud compute firewall-rules delete fw-allow-proxies --quiet
gcloud compute firewall-rules delete allow-ssh --quiet
gcloud compute networks subnets delete subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete subnet-b \
--region=$REGION_B --quiet
gcloud compute networks subnets delete proxy-only-subnet-a \
--region=$REGION_A --quiet
gcloud compute networks subnets delete proxy-only-subnet-b \
--region=$REGION_B --quiet
gcloud compute networks delete external-lb-vpc --quiet
10. Selamat!
Selamat, Anda telah menyelesaikan Codelab.
- Anda telah berhasil mengonfigurasi dan memvalidasi failover aktif-pasif multi-region menggunakan Health Check Cloud DNS dan Load Balancer Aplikasi Eksternal Regional