Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam tutorial ini, Anda akan menghosting aplikasi inventarisasi di Azure Kubernetes Service (AKS) dan mencari tahu bagaimana Anda dapat menggunakan geo-replikasi aktif untuk mereplikasi data di instans Azure Cache for Redis Enterprise atau Azure Managed Redis di seluruh wilayah Azure.
Prasyarat
- Sebuah langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis.
- Satu Kluster Azure Kubernetes Service - Untuk informasi selengkapnya tentang membuat kluster, lihat Mulai Cepat: Menyebarkan kluster Azure Kubernetes Service (AKS) menggunakan portal Microsoft Azure. Atau, Anda dapat menghosting dua instans aplikasi demo pada dua kluster AKS yang berbeda. Di lingkungan produksi, Anda akan menggunakan dua kluster berbeda yang terletak di wilayah yang sama dengan kluster Anda untuk menyebarkan dua versi aplikasi. Untuk tutorial ini, Anda menyebarkan kedua instans aplikasi pada kluster AKS yang sama.
Penting
Tutorial ini mengasumsikan bahwa Anda terbiasa dengan konsep Kubernetes dasar seperti kontainer, pod, dan layanan.
Gambaran Umum
Tutorial ini menggunakan halaman inventori sampel yang menunjukkan tiga opsi kaos yang berbeda. Pengguna dapat "membeli" setiap T-shirt dan melihat penurunan inventori. Hal unik tentang demo ini adalah kami menjalankan aplikasi inventaris di dua wilayah yang berbeda. Biasanya, Anda harus menjalankan database yang menyimpan data inventaris dalam satu wilayah sehingga tidak ada masalah konsistensi. Dengan backend dan sinkronisasi database lainnya, pelanggan mungkin memiliki pengalaman yang tidak menyenangkan karena latensi yang lebih tinggi untuk panggilan di berbagai wilayah Azure. Saat Anda menggunakan Azure Cache for Redis Enterprise sebagai backend, Anda dapat menautkan dua cache bersama dengan replikasi geografis aktif sehingga inventarisasi tetap konsisten di kedua wilayah sambil menikmati performa latensi rendah dari Redis Enterprise di wilayah yang sama.
Menyiapkan dua instans Azure Redis
Buat instans Azure Cache for Redis Enterprise atau Azure Managed Redis baru di wilayah US Barat 2 dengan menggunakan portal Microsoft Azure atau alat CLI pilihan Anda. Secara bergantian, Anda dapat menggunakan wilayah pilihan Anda. Gunakan panduan mulai cepat untuk memulai.
Pada tab Tingkat Lanjut :
- Aktifkan akses Non-TLS saja.
- Atur Kebijakan Pengklusteran ke Perusahaan
- Konfigurasikan grup replikasi geografis aktif baru menggunakan panduan ini. Akhirnya, Anda menambahkan kedua cache ke grup replikasi yang sama. Buat nama grup dengan cache pertama, dan tambahkan cache kedua ke grup yang sama.
Penting
Tutorial ini menggunakan port non-TLS untuk demonstrasi, tetapi kami sangat menyarankan Anda menggunakan port TLS untuk apa pun dalam produksi.
Siapkan Azure Cache for Redis Enterprise lain di wilayah US Timur dengan konfigurasi yang sama dengan cache pertama. Atau, Anda dapat menggunakan wilayah pilihan Anda. Pastikan Anda memilih grup replikasi yang sama dengan cache pertama.
Menyiapkan file penyebaran Kubernetes
Buat dua file .yml menggunakan prosedur berikut. Satu file untuk setiap cache yang Anda buat di dua wilayah.
Untuk menunjukkan replikasi data di seluruh wilayah, kami menjalankan dua instans aplikasi yang sama di wilayah yang berbeda. Mari kita buat satu instans berjalan di Seattle, namespace barat, sementara yang kedua berjalan di New York, namespace timur.
Namespace barat
Perbarui bidang berikut dalam file YAML berikut dan simpan sebagai app_west.yaml.
- Perbarui variabel
REDIS_HOSTdengan URL nilai Titik akhir setelah menghapus akhiran port: 10000 - Perbarui
REDIS_PASSWORDdengan kunci Akses cache US Barat 2 Anda. - Perbarui
APP_LOCATIONuntuk menampilkan wilayah tempat instans aplikasi ini berjalan. Untuk cache ini, konfigurasikan dariAPP_LOCATIONkeSeattleuntuk menunjukkan bahwa instans aplikasi ini berjalan di Seattle. - Verifikasi bahwa nilai variabel
namespaceberadawestdi kedua tempat dalam file.
Ini akan terlihat seperti kode berikut:
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: west
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoWest.westus2.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "Seattle, WA"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: west
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Namespace timur
Simpan salinan lain dari file YAML yang sama dengan app_east.yaml. Kali ini, gunakan nilai yang sesuai dengan cache kedua Anda.
- Perbarui variabel
REDIS_HOSTdengan nilai Titik Akhir setelah menghapus akhiran port: 10000 - Perbarui
REDIS_PASSWORDdengan kunci Akses cache US Timur Anda. - Perbarui
APP_LOCATIONuntuk menampilkan wilayah tempat instans aplikasi ini berjalan. Untuk cache ini, konfigurasikanAPP_LOCATIONke New York untuk menunjukkan instans aplikasi ini berjalan di New York. - Verifikasi bahwa nilai variabel
namespaceberadaeastdi kedua tempat dalam file.
Ini akan terlihat seperti kode berikut:
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: east
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoEast.eastus.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "New York, NY"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: east
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Instal Kubernetes CLI dan sambungkan ke kluster AKS Anda
Di bagian ini, Anda terlebih dahulu menginstal Kubernetes CLI dan kemudian terhubung ke kluster AKS.
Nota
Kluster Azure Kubernetes Service diperlukan untuk tutorial ini. Anda menyebarkan kedua instans aplikasi pada kluster AKS yang sama.
Instal Kubernetes CLI
Gunakan Kubernetes CLI, _kubectl, untuk terhubung ke kluster Kubernetes dari komputer lokal Anda. Jika Anda menjalankan secara lokal, maka Anda dapat menggunakan perintah berikut untuk menginstal kubectl.
az aks install-cli
Jika Anda menggunakan Azure Cloud Shell, kubectl sudah diinstal, dan Anda dapat melewati langkah ini.
Hubungkan kluster AKS Anda di dua wilayah
Gunakan portal untuk menyalin grup sumber daya dan nama kluster untuk kluster AKS Anda di wilayah US Barat 2. Untuk mengonfigurasi kubectl untuk menyambungkan ke kluster AKS Anda, gunakan perintah berikut dengan grup sumber daya dan nama kluster Anda:
az aks get-credentials --resource-group myResourceGroup --name myClusterName
Verifikasi bahwa Anda dapat terhubung ke kluster Anda dengan menjalankan perintah berikut:
kubectl get nodes
Anda akan melihat output serupa yang menunjukkan daftar node kluster Anda.
NAME STATUS ROLES AGE VERSION
aks-agentpool-21274953-vmss000001 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000003 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000006 Ready agent 1d v1.24.15
Menyebarkan dan menguji aplikasi Anda
Anda memerlukan dua namespace agar aplikasi Anda berjalan pada kluster AKS Anda. Buat barat lalu sebarkan aplikasi.
Jalankan perintah berikut untuk menyebarkan instans aplikasi ke kluster AKS Anda di namespace barat :
kubectl create namespace west
kubectl apply -f app_west.yaml
Anda mendapatkan respons yang menunjukkan bahwa deployment dan layanan Anda berhasil dibuat.
deployment.apps/shoppingcart-app created
service/shoppingcart-svc created
Untuk menguji aplikasi, jalankan perintah berikut untuk memeriksa apakah pod berjalan:
kubectl get pods -n west
Anda melihat pod Anda berhasil berjalan seperti berikut:
NAME READY STATUS RESTARTS AGE
shoppingcart-app-5fffdcb5cd-48bl5 1/1 Running 0 68s
Jalankan perintah berikut untuk mendapatkan titik akhir untuk aplikasi Anda:
kubectl get service -n west
Anda mungkin melihat bahwa EXTERNAL-IP memiliki status <pending> selama beberapa menit. Terus coba lagi hingga status digantikan oleh alamat IP.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
shoppingcart-svc LoadBalancer 10.0.166.147 20.69.136.105 80:30390/TCP 90s
Setelah External-IP tersedia, buka browser web ke alamat External-IP layanan Anda dan Anda akan melihat aplikasi tersebut.
Jalankan langkah penyebaran yang sama dan sebarkan instans aplikasi demo untuk dijalankan di wilayah US Timur.
kubectl create namespace east
kubectl apply -f app_east.yml
kubectl get pods -n east
kubectl get service -n east
Dengan masing-masing dari dua layanan yang dibuka di browser, Anda melihat bahwa mengubah inventori di satu wilayah hampir langsung tercermin di wilayah lain. Data inventarisasi disimpan dalam instans Redis Enterprise yang mereplikasi data di seluruh wilayah.
Anda berhasil! Klik tombol dan jelajahi demo.
Untuk mengatur ulang jumlah, tambahkan /reset setelah url:
<IP address>/reset
Merapikan penerapan Anda
Untuk membersihkan kluster Anda, jalankan perintah berikut:
kubectl delete deployment shoppingcart-app -n west
kubectl delete service shoppingcart-svc -n west
kubectl delete deployment shoppingcart-app -n east
kubectl delete service shoppingcart-svc -n east
Membersihkan sumber daya
Jika Anda ingin terus menggunakan sumber daya yang Anda buat di artikel ini, simpan grup sumber daya.
Jika tidak, jika Anda sudah selesai dengan sumber daya, Anda dapat menghapus grup sumber daya Azure yang Anda buat untuk menghindari biaya.
Penting
Penghapusan grup sumber daya tidak bisa dipulihkan. Ketika Anda menghapus grup sumber daya, semua sumber daya di dalamnya dihapus secara permanen. Pastikan Anda tidak salah menghapus grup sumber daya atau sumber daya secara tidak sengaja. Jika Anda membuat sumber daya di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, Anda dapat menghapus setiap sumber daya satu per satu alih-alih menghapus grup sumber daya.
Untuk menghapus grup sumber daya
Masuk ke portal Azure, lalu pilih Grup sumber daya.
Pilih grup sumber daya yang ingin Anda hapus.
Jika ada banyak grup sumber daya, gunakan kotak Filter untuk bidang apa pun... , ketik nama grup sumber daya yang Anda buat untuk artikel ini. Pilih grup sumber daya dalam daftar hasil.
Pilih Hapus grup sumber daya.
Anda diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda lagi untuk mengonfirmasi, lalu pilih Hapus.
Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.