Bagikan melalui


Tutorial: VM load balance untuk ketersediaan tinggi

Berlaku untuk: ✔️ VM Linux ✔️ Set skala fleksibel

Keseimbangan muatan memberikan tingkat ketersediaan dan skala yang lebih tinggi dengan menyebarkan permintaan masuk ke beberapa komputer virtual. Dalam tutorial ini, Anda belajar tentang berbagai komponen Azure load balancer yang mendistribusikan lalu lintas dan memberikan ketersediaan tinggi. Anda akan mempelajari cara untuk:

  • Membuat load balancer
  • Membuat pemeriksaan kondisi
  • Membuat aturan lalu-lintas
  • Menggunakan cloud-init untuk menginstal aplikasi Node.js dasar
  • Membuat mesin virtual dan memasangkannya ke load balancer
  • Melihat load balancer sedang berfungsi
  • Menambahkan dan menghapus VM dari load balancer

Tutorial ini menggunakan CLI dalam Azure Cloud Shell, yang terus diperbarui ke versi terbaru. Untuk membuka Cloud Shell, pilih Coba dari bagian atas blok kode apa pun.

Jika Anda memilih untuk menginstal dan menggunakan CLI secara lokal, tutorial ini mengharuskan Anda menjalankan Azure CLI versi 2.0.30 atau versi lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu menginstal atau memutakhirkan versi, lihat Menginstal Azure CLI.

Ikhtisar Azure load balancer

Azure load balancer adalah load balancer Lapisan 4 (TCP, UDP) yang memberikan ketersediaan tinggi dengan mendistribusikan lalu lintas masuk di antara komputer virtual yang sehat. Pemeriksaan kondisi load balancer memantau port tertentu pada setiap komputer virtual dan hanya mendistribusikan lalu lintas ke komputer virtual operasional.

Anda menentukan konfigurasi IP front-end yang berisi satu atau beberapa alamat IP publik. Konfigurasi IP front-end ini memungkinkan load balancer dan aplikasi Anda untuk dapat diakses melalui Internet.

Mesin virtual terhubung ke load balancer menggunakan kartu antarmuka jaringan virtualnya (NIC). Untuk mendistribusikan lalu lintas ke komputer virtual, penyeimbang beban menggunakan kumpulan alamat backend yang berisi alamat IP antarmuka jaringan virtual yang tersambung ke penyeimbang beban.

Guna mengontrol arus lalu lintas, Anda menentukan aturan load balancer untuk port dan protokol tertentu yang memetakan ke VM Anda.

Jika Anda mengikuti tutorial sebelumnya untuk membuat set skala mesin virtual, load balancer dibuat untuk Anda. Semua komponen ini dikonfigurasi untuk Anda sebagai bagian dari set skala.

Membuat Azure load balancer

Bagian ini menjelaskan cara untuk membuat dan mengonfigurasi setiap komponen load balancer. Sebelum Anda membuat load balancer, buat grup sumber daya dengan buat grup az. Contoh berikut ini membuat grup sumber daya bernama myResourceGroupLoadBalancer di lokasi eastus:

az group create --name myResourceGroupLoadBalancer --location eastus

Membuat alamat IP publik

Untuk mengakses aplikasi Anda di Internet, Anda memerlukan alamat IP publik sebagai load balancer. Buat alamat IP publik dengan buat IP publik jaringan az. Contoh berikut membuat alamat IP publik bernama myPublicIP di grup sumber daya myResourceGroupLoadBalancer:

az network public-ip create \
    --resource-group myResourceGroupLoadBalancer \
    --name myPublicIP

Membuat load balancer

Buat load balancer dengan buat lb jaringan az. Contoh berikut membuat load balancer bernama myLoadBalancer dan menetapkan alamat myPublicIP ke konfigurasi IP front-end:

az network lb create \
    --resource-group myResourceGroupLoadBalancer \
    --name myLoadBalancer \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool \
    --public-ip-address myPublicIP

Membuat pemeriksaan kondisi

Untuk memungkinkan load balancer memantau status aplikasi Anda, Anda menggunakan pemeriksaan kesehatan. Pemeriksaan kesehatan menambahkan atau menghapus komputer virtual dari rotasi load balancer berdasarkan respons mereka terhadap pemeriksaan kesehatan. Secara default, komputer virtual dihapus dari distribusi load balancer setelah dua kegagalan berturut-turut pada interval 15 detik. Anda membuat pemeriksaan kondisi berdasarkan protokol atau halaman pemeriksaan kondisi tertentu untuk aplikasi Anda.

Contoh berikut membuat pemeriksaan TCP. Anda juga dapat membuat pemeriksaan HTTP khusus untuk pemeriksaan kondisi yang lebih terperinci. Saat menggunakan pemeriksaan HTTP khusus, Anda harus membuat halaman pemeriksaan kondisi, seperti healthcheck.js. Pemeriksaan harus mengembalikan respons HTTP 200 OK untuk load balancer agar host tetap dalam rotasi.

Untuk membuat pemeriksaan kondisi TCP, Anda menggunakan buat pemeriksaan lb jaringan az. Contoh berikut membuat pemeriksaan kondisi bernama myHealthProbe:

az network lb probe create \
    --resource-group myResourceGroupLoadBalancer \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80

Buat aturan load balancer

Aturan load balancer digunakan untuk menentukan cara lalu lintas didistribusikan ke VM. Anda menentukan konfigurasi IP frontend untuk lalu lintas masuk, dan kumpulan IP backend untuk menerima lalu lintas, serta sumber dan port tujuan yang diperlukan. Untuk memastikan hanya VM sehat yang menerima lalu lintas, Anda juga menentukan pemeriksaan kondisi yang akan digunakan.

Buat aturan load balancer dengan buat aturan lb jaringan az. Contoh berikut membuat aturan bernama myLoadBalancerRule, menggunakan pemeriksaan kondisi myHealthProbe, dan menyeimbangkan lalu lintas di port 80:

az network lb rule create \
    --resource-group myResourceGroupLoadBalancer \
    --lb-name myLoadBalancer \
    --name myLoadBalancerRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe

Konfigurasikan jaringan virtual

Sebelum menyebarkan beberapa komputer virtual dan dapat menguji load balancer Anda, buat sumber daya jaringan virtual yang mendukung. Untuk informasi selengkapnya tentang jaringan virtual, lihat tutorial Mengelola Azure Virtual Networks.

Buat sumber daya jaringan

Membuat jaringan virtual dengan membuat vnet jaringan az. Contoh berikut membuat jaringan virtual bernama myVnet dengan subnet mySubnet:

az network vnet create \
    --resource-group myResourceGroupLoadBalancer \
    --name myVnet \
    --subnet-name mySubnet

Untuk membuat grup keamanan jaringan dengan, Anda dapat menggunakan membuat nsg jaringan az. Contoh berikut membuat grup keamanan jaringan bernama myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroupLoadBalancer \
    --name myNetworkSecurityGroup

Buat aturan grup keamanan jaringan menggunakan buat aturan nsg jaringan az. Contoh berikut membuat aturan grup keamanan jaringan bernama myNetworkSecurityGroupRule:

az network nsg rule create \
    --resource-group myResourceGroupLoadBalancer \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRule \
    --priority 1001 \
    --protocol tcp \
    --destination-port-range 80

NIC virtual dibuat dengan jaringan buat nic jaringan az. Contoh berikut membuat tiga NIC virtual. (Satu NIC virtual untuk setiap VM yang Anda buat untuk aplikasi Anda dalam langkah-langkah berikut). Anda dapat membuat NIC dan VM virtual tambahan kapan saja dan menambahkannya ke load balancer:

for i in `seq 1 3`; do
    az network nic create \
        --resource-group myResourceGroupLoadBalancer \
        --name myNic$i \
        --vnet-name myVnet \
        --subnet mySubnet \
        --network-security-group myNetworkSecurityGroup \
        --lb-name myLoadBalancer \
        --lb-address-pools myBackEndPool
done

Jika ketiga NIC virtual sudah dibuat, lanjutkan ke langkah berikutnya

Buat mesin virtual

Buat konfigurasi cloud-init

Dalam tutorial sebelumnya tentang Cara menyesuaikan mesin virtual Linux pada boot pertama, Anda belajar cara mengotomatiskan kustomisasi VM dengan cloud-init. Anda dapat menggunakan file konfigurasi cloud-init yang sama untuk menginstal NGINX dan menjalankan aplikasi Node.js 'Hello World' sederhana di langkah berikutnya. Untuk melihat load balancer sedang berfungsi, Anda dapat mengakses aplikasi sederhana ini di browser web pada akhir tutorial.

Di shell Anda saat ini, buat file bernama cloud-init.txt dan tempelkan konfigurasi berikut. Misalnya, membuat file di Cloud Shell bukan di komputer lokal Anda. Ketik sensible-editor cloud-init.txt untuk membuat file dan melihat daftar editor yang tersedia. Pastikan bahwa seluruh file cloud-init disalin dengan benar, terutama baris pertama:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

Buat mesin virtual

Untuk meningkatkan ketersediaan tinggi aplikasi Anda, tempatkan VM Anda dalam set ketersediaan. Untuk informasi selengkapnya tentang set ketersediaan, lihat tutorial sebelumnya tentang Cara membuat mesin virtual dengan ketersediaan tinggi.

Buat set ketersediaan dengan buat set ketersediaan vm az. Contoh berikut membuat set ketersediaan dengan nama myAvailabilitySet:

az vm availability-set create \
    --resource-group myResourceGroupLoadBalancer \
    --name myAvailabilitySet

Sekarang Anda dapat membuat VM dengan buat vm az. Contoh berikut membuat tiga VM dan menghasilkan kunci SSH jika belum ada:

for i in `seq 1 3`; do
    az vm create \
        --resource-group myResourceGroupLoadBalancer \
        --name myVM$i \
        --availability-set myAvailabilitySet \
        --nics myNic$i \
        --image UbuntuLTS \
        --admin-username azureuser \
        --generate-ssh-keys \
        --custom-data cloud-init.txt \
        --no-wait
done

Ada tugas latar belakang yang terus berjalan setelah Azure CLI mengembalikan Anda ke perintah. Parameter --no-wait tidak menunggu semua tugas selesai. Mungkin perlu beberapa menit lagi sebelum Anda dapat mengakses aplikasi. Pemeriksaan kondisi load balancer secara otomatis mendeteksi kapan aplikasi berjalan pada setiap VM. Setelah aplikasi berjalan, aturan load balancer mulai mendistribusikan lalu lintas.

Menguji load balancer

Dapatkan alamat IP publik load balancer Anda dengan tunjukkan ip-publik jaringan az. Contoh berikut ini memperoleh alamat IP untuk myPublicIP yang dibuat sebelumnya:

az network public-ip show \
    --resource-group myResourceGroupLoadBalancer \
    --name myPublicIP \
    --query [ipAddress] \
    --output tsv

Kemudian Anda dapat memasukkan alamat IP publik ke browser web. Ingat - dibutuhkan beberapa menit agar VM siap sebelum load balancer mulai mendistribusikan lalu lintas ke VM tersebut. Aplikasi ditampilkan, termasuk nama host VM tempat load balancer mendistribusikan lalu lintas seperti dalam contoh berikut:

Menjalankan Node.js

Untuk melihat load balancer mendistribusikan lalu lintas ke ketiga komputer virtual yang menjalankan aplikasi, Anda dapat me-refresh browser web secara paksa.

Menambahkan dan menghapus komputer virtual

Anda mungkin perlu melakukan pemeliharaan pada VM yang menjalankan aplikasi Anda, seperti menginstal pembaruan OS. Untuk mengatasi peningkatan lalu lintas ke aplikasi, Anda mungkin perlu menambahkan komputer virtual tambahan. Bagian ini memperlihatkan kepada Anda cara menghapus atau menambahkan komputer virtual dari load balancer.

Menghapus VM dari load balancer

Anda dapat menghapus VM dari kumpulan alamat backend dengan hapus kumpulan alamat ip-konfig nic jaringan az. Contoh berikut menghapus NIC virtual untuk myVM2 dari myLoadBalancer:

az network nic ip-config address-pool remove \
    --resource-group myResourceGroupLoadBalancer \
    --nic-name myNic2 \
    --ip-config-name ipConfig1 \
    --lb-name myLoadBalancer \
    --address-pool myBackEndPool 

Untuk melihat load balancer mendistribusikan lalu lintas ke ketiga VM yang menjalankan aplikasi, Anda dapat me-refresh browser web secara paksa. Anda sekarang dapat melakukan pemeliharaan pada VM, seperti menginstal pembaruan OS atau melakukan reboot VM.

Untuk melihat daftar VM dengan NIC virtual yang terhubung ke load balancer, gunakan tunjukkan kumpulan alamat lb jaringan az. Kueri dan filter pada ID NIC virtual sebagai berikut:

az network lb address-pool show \
    --resource-group myResourceGroupLoadBalancer \
    --lb-name myLoadBalancer \
    --name myBackEndPool \
    --query backendIpConfigurations \
    --output tsv | cut -f5

Outputnya mirip dengan contoh berikut, yang menunjukkan bahwa NIC virtual untuk VM 2 tidak lagi menjadi bagian dari kumpulan alamat backend:

/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic1/ipConfigurations/ipconfig1
/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic3/ipConfigurations/ipconfig1

Menambahkan VM ke load balancer

Setelah melakukan pemeliharaan VM, atau jika perlu memperluas kapasitas, Anda dapat menambahkan VM ke kumpulan alamat backend dengan tambahkan kumpulan alamat ip-config nic jaringan az. Contoh berikut menambahkan NIC virtual untuk myVM2 ke myLoadBalancer:

az network nic ip-config address-pool add \
    --resource-group myResourceGroupLoadBalancer \
    --nic-name myNic2 \
    --ip-config-name ipConfig1 \
    --lb-name myLoadBalancer \
    --address-pool myBackEndPool

Untuk memverifikasi bahwa NIC virtual terhubung ke kumpulan alamat backend, gunakan tunjukkan kumpulan alamat lb jaringan az lagi dari langkah sebelumnya.

Langkah berikutnya

Dalam tutorial ini, Anda membuat load balancer dan memasang komputer virtual padanya. Anda mempelajari cara untuk:

  • Membuat load balancer Azure
  • Membuat pemeriksaan kondisi load balancer
  • Membuat aturan lalu lintas load balancer
  • Menggunakan cloud-init untuk membuat aplikasi Node.js dasar
  • Membuat mesin virtual dan memasangkannya ke load balancer
  • Melihat Azure load balancer beraksi
  • Menambahkan dan menghapus VM dari load balancer

Lanjutkan ke tutorial berikutnya untuk mempelajari lebih lanjut tentang komponen jaringan virtual Azure.