Mulai menggunakan Replikasi aktif Azure Cache for Redis Enterprise atau Azure Managed Redis dengan aplikasi yang dihosting AKS

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

  1. 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.

  2. Pada tab Tingkat Lanjut :

    1. Aktifkan akses Non-TLS saja.
    2. Atur Kebijakan Pengklusteran ke Perusahaan
    3. 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.

  3. 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.

  1. Perbarui variabel REDIS_HOST dengan URL nilai Titik akhir setelah menghapus akhiran port: 10000
  2. Perbarui REDIS_PASSWORD dengan kunci Akses cache US Barat 2 Anda.
  3. Perbarui APP_LOCATION untuk menampilkan wilayah tempat instans aplikasi ini berjalan. Untuk cache ini, konfigurasikan dari APP_LOCATION ke Seattle untuk menunjukkan bahwa instans aplikasi ini berjalan di Seattle.
  4. Verifikasi bahwa nilai variabel namespace berada west di 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.

  1. Perbarui variabel REDIS_HOST dengan nilai Titik Akhir setelah menghapus akhiran port: 10000
  2. Perbarui REDIS_PASSWORD dengan kunci Akses cache US Timur Anda.
  3. Perbarui APP_LOCATION untuk menampilkan wilayah tempat instans aplikasi ini berjalan. Untuk cache ini, konfigurasikan APP_LOCATION ke New York untuk menunjukkan instans aplikasi ini berjalan di New York.
  4. Verifikasi bahwa nilai variabel namespace berada east di 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.

Tangkapan layar dari dua browser yang serupa dengan aplikasi keranjang belanja yang berjalan di wilayah yang berbeda memperlihatkan data yang sama.

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

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.

  2. 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.

    Cuplikan layar memperlihatkan daftar grup sumber daya yang akan dihapus di panel kerja.

  3. Pilih Hapus grup sumber daya.

  4. Anda diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda lagi untuk mengonfirmasi, lalu pilih Hapus.

    Cuplikan layar memperlihatkan formulir yang memerlukan nama sumber daya untuk mengonfirmasi penghapusan.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.