Mempercepat performa baca workload stateful dengan GKE Data Cache

Panduan ini menjelaskan cara meningkatkan performa aplikasi stateful yang banyak melakukan operasi baca dengan menggunakan GKE Data Cache di cluster Google Kubernetes Engine (GKE). GKE Data Cache adalah solusi penyimpanan blok terkelola yang mempercepat operasi baca untuk aplikasi stateful Anda, seperti database, yang berjalan di GKE.

Anda hanya dapat menggunakan Data Cache dengan cluster GKE Standard. Panduan ini akan memandu Anda mengaktifkan GKE Data Cache saat membuat cluster GKE Standard atau node pool baru, dan menyediakan disk terpasang GKE dengan akselerasi Data Cache.

Tentang GKE Data Cache

Dengan GKE Data Cache, Anda dapat menggunakan SSD Lokal di node GKE sebagai lapisan cache untuk penyimpanan persisten, seperti Persistent Disk atau Hyperdisk. Penggunaan SSD Lokal mengurangi latensi baca disk dan meningkatkan kueri per detik (QPS) untuk workload stateful Anda sekaligus meminimalkan persyaratan memori. GKE Data Cache mendukung semua jenis Persistent Disk atau Hyperdisk sebagai disk pendukung.

Untuk menggunakan GKE Data Cache bagi aplikasi Anda, konfigurasikan node pool GKE dengan SSD Lokal terpasang. Anda dapat mengonfigurasi GKE Data Cache untuk menggunakan semua atau sebagian SSD Lokal terpasang. SSD Lokal yang digunakan oleh solusi GKE Data Cache dienkripsi saat tidak aktif menggunakan enkripsi standar. Google Cloud

Manfaat

GKE Data Cache menawarkan manfaat berikut:

  • Peningkatan kecepatan kueri yang ditangani per detik untuk database konvensional, seperti MySQL atau Postgres, dan database vektor.
  • Peningkatan performa baca untuk aplikasi stateful dengan meminimalkan latensi disk.
  • Hidrasi dan rehidrasi data yang lebih cepat karena SSD bersifat lokal ke node. Hidrasi data mengacu pada proses awal memuat data yang diperlukan dari penyimpanan persisten ke SSD Lokal. Rehidrasi data mengacu pada proses memulihkan data di SSD Lokal setelah node didaur ulang.

Arsitektur deployment

Diagram berikut menunjukkan contoh konfigurasi GKE Data Cache dengan dua Pod yang masing-masing menjalankan aplikasi. Pod berjalan di node GKE yang sama. Setiap Pod menggunakan SSD Lokal terpisah dan persistent disk pendukung.

Arsitektur deployment untuk GKE Data Cache
Gambar 1. Arsitektur deployment untuk GKE Data Cache.

Mode deployment

Anda dapat menyiapkan GKE Data Cache dalam salah satu dari dua mode:

  • Writethrough (Direkomendasikan): Saat aplikasi Anda menulis data, data akan ditulis secara sinkron ke cache dan persistent disk yang mendasarinya. Mode writethrough mencegah kehilangan data, dan cocok untuk sebagian besar workload produksi.
  • Writeback: Saat aplikasi Anda menulis data, data hanya ditulis ke cache. Kemudian, data ditulis ke persistent disk secara asinkron (di latar belakang). Mode writeback meningkatkan performa tulis, dan cocok untuk workload yang mengandalkan kecepatan. Namun, mode ini memengaruhi keandalan. Jika node dimatikan secara tidak terduga, data cache yang belum di-flush akan hilang.

Tujuan

Dalam panduan ini, Anda akan mempelajari cara:

Persyaratan dan perencanaan

Pastikan Anda memenuhi persyaratan berikut untuk menggunakan GKE Data Cache:

  • Cluster GKE Anda harus menjalankan versi 1.32.3-gke.1440000 atau yang lebih baru.
  • Node pool Anda harus menggunakan jenis mesin yang mendukung SSD Lokal. Untuk mengetahui informasi selengkapnya, lihat Dukungan seri mesin.

Perencanaan

Pertimbangkan aspek-aspek berikut saat Anda merencanakan kapasitas penyimpanan untuk GKE Data Cache:

  • Jumlah maksimum Pod per node yang akan menggunakan GKE Data Cache secara serentak.
  • Persyaratan ukuran cache yang diharapkan dari Pod yang akan menggunakan GKE Data Cache.
  • Total kapasitas SSD Lokal yang tersedia di node GKE Anda. Untuk mengetahui informasi tentang jenis mesin mana yang memiliki SSD Lokal terpasang secara default dan jenis mesin mana yang mengharuskan Anda memasang SSD Lokal, lihat Memilih jumlah disk SSD Lokal yang valid.
  • Untuk jenis mesin generasi ketiga atau yang lebih baru (yang memiliki jumlah SSD Lokal terpasang secara default), perhatikan bahwa SSD Lokal untuk Data Cache dicadangkan dari total SSD Lokal yang tersedia di mesin tersebut.
  • Overhead sistem file yang dapat mengurangi ruang yang dapat digunakan di SSD Lokal. Misalnya, meskipun Anda memiliki node yang memiliki dua SSD Lokal dengan total kapasitas mentah 750 GiB, ruang yang tersedia untuk semua volume Data Cache mungkin lebih kecil karena overhead sistem file. Beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.

Batasan

Ketidakcocokan dengan Pencadangan untuk GKE

Untuk mempertahankan integritas data dalam skenario seperti pemulihan dari bencana atau migrasi aplikasi, Anda mungkin perlu mencadangkan dan memulihkan data. Jika Anda menggunakan Pencadangan untuk GKE guna memulihkan PVC yang dikonfigurasi untuk menggunakan Data Cache, proses pemulihan akan gagal. Kegagalan ini terjadi karena proses pemulihan tidak menyebarkan parameter cache data yang diperlukan dengan benar dari StorageClass asli.

Harga

Anda akan ditagih untuk total kapasitas yang disediakan untuk SSD Lokal dan persistent disk terpasang. Anda dikenai biaya per GiB per bulan.

Untuk mengetahui informasi selengkapnya, lihat Harga disk dalam dokumentasi Compute Engine.

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Mengaktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Mengonfigurasi node GKE untuk menggunakan Data Cache

Untuk mulai menggunakan GKE Data Cache untuk penyimpanan yang dipercepat, node Anda harus memiliki resource SSD Lokal yang diperlukan. Bagian ini menunjukkan perintah untuk menyediakan SSD Lokal dan mengaktifkan GKE Data Cache saat Anda membuat cluster GKE baru atau menambahkan node pool baru ke cluster yang sudah ada. Anda tidak dapat memperbarui node pool yang ada untuk menggunakan Data Cache. Jika ingin menggunakan Data Cache di cluster yang sudah ada, tambahkan node pool baru ke cluster.

Di cluster baru

Untuk membuat cluster GKE dengan Data Cache yang dikonfigurasi, gunakan perintah berikut:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --data-cache-count=DATA_CACHE_COUNT \
    # Optionally specify additional Local SSDs, or skip this flag
    --ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster. Beri nama unik untuk cluster GKE yang Anda buat.
  • LOCATION: region atau zona untuk cluster baru. Google Cloud
  • MACHINE_TYPE: jenis mesin yang akan digunakan dari seri mesin generasi kedua, ketiga, atau yang lebih baru untuk cluster Anda, seperti n2-standard-2 atau c3-standard-4-lssd. Kolom ini wajib diisi karena SSD Lokal tidak dapat digunakan dengan jenis e2-medium default. Untuk mengetahui informasi selengkapnya, lihat seri mesin yang tersedia.
  • DATA_CACHE_COUNT: jumlah volume SSD Lokal yang akan didedikasikan secara eksklusif untuk Data Cache di setiap node di node pool default. Setiap SSD Lokal ini memiliki kapasitas 375 GiB. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.
  • (Opsional) LOCAL_SSD_COUNT: jumlah volume SSD Lokal yang akan disediakan untuk kebutuhan penyimpanan efemeral lainnya. Gunakan flag --ephemeral-storage-local-ssd count jika Anda ingin menyediakan SSD Lokal tambahan yang tidak digunakan untuk Data Cache.

    Perhatikan hal berikut untuk jenis mesin generasi ketiga atau yang lebih baru:

    • Jenis mesin generasi ketiga atau yang lebih baru memiliki jumlah SSD Lokal tertentu yang terpasang secara default. Jumlah SSD Lokal yang terpasang ke setiap node bergantung pada jenis mesin yang Anda tentukan.
    • Jika Anda berencana menggunakan flag --ephemeral-storage-local-ssd count untuk penyimpanan efemeral tambahan, pastikan untuk menetapkan nilai DATA_CACHE_COUNT ke angka yang kurang dari total disk SSD Lokal yang tersedia di mesin. Jumlah SSD Lokal yang tersedia mencakup disk terpasang default dan disk baru yang Anda tambahkan menggunakan flag --ephemeral-storage-local-ssd count.

Perintah ini membuat cluster GKE yang berjalan pada jenis mesin generasi kedua, ketiga, atau yang lebih baru untuk node pool defaultnya, menyediakan SSD Lokal untuk Data Cache, dan secara opsional menyediakan SSD Lokal tambahan untuk kebutuhan penyimpanan efemeral lainnya, jika ditentukan.

Setelan ini hanya berlaku untuk node pool default.

Di cluster yang sudah ada

Untuk menggunakan Data Cache di cluster yang sudah ada, Anda harus membuat node pool baru dengan Data Cache yang dikonfigurasi.

Untuk membuat node pool GKE dengan Data Cache yang dikonfigurasi, gunakan perintah berikut:

gcloud container node-pool create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --data-cache-count=DATA_CACHE_COUNT \
    # Optionally specify additional Local SSDs, or skip this flag
    --ephemeral-storage-local-ssd count=LOCAL_SSD_COUNT

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool. Beri nama unik untuk node pool yang Anda buat.
  • CLUSTER_NAME: nama cluster GKE yang sudah ada tempat Anda ingin membuat node pool.
  • LOCATION: region atau zona yang sama dengan cluster Anda. Google Cloud
  • MACHINE_TYPE: jenis mesin yang akan digunakan dari seri mesin generasi kedua, ketiga, atau yang lebih baru untuk cluster Anda, seperti n2-standard-2 atau c3-standard-4-lssd. Kolom ini wajib diisi karena SSD Lokal tidak dapat digunakan dengan jenis e2-medium default. Untuk mengetahui informasi selengkapnya, lihat seri mesin yang tersedia.
  • DATA_CACHE_COUNT: jumlah volume SSD Lokal yang akan didedikasikan secara eksklusif untuk Data Cache di setiap node di node pool. Setiap SSD Lokal ini memiliki kapasitas 375 GiB. Jumlah maksimum volume bervariasi menurut jenis mesin dan region. Perlu diketahui bahwa beberapa kapasitas SSD Lokal dicadangkan untuk penggunaan sistem.
  • (Opsional) LOCAL_SSD_COUNT: jumlah volume SSD Lokal yang akan disediakan untuk kebutuhan penyimpanan efemeral lainnya. Gunakan flag --ephemeral-storage-local-ssd count jika Anda ingin menyediakan SSD Lokal tambahan yang tidak digunakan untuk Data Cache.

    Perhatikan hal berikut untuk jenis mesin generasi ketiga atau yang lebih baru:

    • Jenis mesin generasi ketiga atau yang lebih baru memiliki jumlah SSD Lokal tertentu yang terpasang secara default. Jumlah SSD Lokal yang terpasang ke setiap node bergantung pada jenis mesin yang Anda tentukan.
    • Jika Anda berencana menggunakan flag --ephemeral-storage-local-ssd count untuk penyimpanan efemeral tambahan, pastikan untuk menetapkan DATA_CACHE_COUNT ke angka yang kurang dari total disk SSD Lokal yang tersedia di mesin. Jumlah SSD Lokal yang tersedia mencakup disk terpasang default dan disk baru yang Anda tambahkan menggunakan flag --ephemeral-storage-local-ssd count.

Perintah ini membuat node pool GKE yang berjalan pada jenis mesin generasi kedua, ketiga, atau yang lebih baru, menyediakan SSD Lokal untuk Data Cache, dan secara opsional menyediakan SSD Lokal tambahan untuk kebutuhan penyimpanan efemeral lainnya, jika ditentukan.

Menyediakan Data Cache untuk penyimpanan persisten di GKE

Bagian ini memberikan contoh cara mengaktifkan manfaat performa GKE Data Cache untuk aplikasi stateful Anda.

Membuat node pool dengan SSD Lokal untuk Data Cache

Mulailah dengan membuat node pool baru dengan SSD Lokal terpasang di cluster GKE Anda. GKE Data Cache menggunakan SSD Lokal untuk mempercepat performa persistent disk terpasang.

Perintah berikut membuat node pool yang menggunakan mesin generasi kedua, n2-standard-2:

gcloud container node-pools create datacache-node-pool \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --num-nodes=2 \
    --data-cache-count=1 \
    --machine-type=n2-standard-2

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster. Tentukan cluster GKE tempat Anda membuat node pool baru.
  • LOCATION: region atau zona yang sama dengan cluster Anda. Google Cloud

Perintah ini membuat node pool dengan spesifikasi berikut:

  • --num-nodes=2: menetapkan jumlah awal node dalam pool ini menjadi dua.
  • --data-cache-count=1: menentukan satu SSD Lokal per node yang didedikasikan untuk GKE Data Cache.

Jumlah total SSD Lokal yang disediakan untuk node pool ini adalah dua karena setiap node disediakan dengan satu SSD Lokal.

Membuat StorageClass Data Cache

Buat Kubernetes StorageClass yang memberi tahu GKE cara menyediakan volume persisten yang menggunakan Data Cache secara dinamis.

Gunakan manifes berikut untuk membuat dan menerapkan StorageClass bernama pd-balanced-data-cache-sc:

kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-balanced-data-cache-sc
provisioner: pd.csi.storage.gke.io
parameters:
  type: pd-balanced
  data-cache-mode: writethrough
  data-cache-size: "100Gi"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
EOF

Parameter StorageClass untuk Data Cache mencakup hal berikut:

  • type: menentukan jenis disk yang mendasari untuk volume persisten. Untuk mengetahui opsi lainnya, lihat jenis Persistent Disk yang didukung atau jenis Hyperdisk.
  • data-cache-mode: menggunakan mode writethrough yang direkomendasikan. Untuk mengetahui informasi selengkapnya, lihat Mode deployment.
  • data-cache-size: menetapkan kapasitas SSD Lokal ke 100 GiB, yang digunakan sebagai cache baca untuk setiap PVC.

Meminta penyimpanan dengan PersistentVolumeClaim (PVC)

Buat PVC yang mereferensikan StorageClass pd-balanced-data-cache-sc yang Anda buat. PVC meminta volume persisten dengan Data Cache yang diaktifkan.

Gunakan manifes berikut untuk membuat PVC bernama pvc-data-cache yang meminta volume persisten minimal 300 GiB dengan akses ReadWriteOnce.

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-data-cache
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 300Gi
  storageClassName: pd-balanced-data-cache-sc
EOF

Membuat Deployment yang menggunakan PVC

Buat Deployment bernama postgres-data-cache yang menjalankan Pod yang menggunakan PVC pvc-data-cache yang Anda buat sebelumnya. Pemilih node cloud.google.com/gke-data-cache-count memastikan bahwa Pod dijadwalkan ke node yang memiliki resource SSD Lokal yang diperlukan untuk menggunakan GKE Data Cache.

Buat dan terapkan manifes berikut untuk mengonfigurasi Pod yang men-deploy server web Postgres menggunakan PVC:

kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
 name: postgres-data-cache
 labels:
   name: database
   app: data-cache
spec:
 replicas: 1
 selector:
   matchLabels:
     service: postgres
     app: data-cache
 template:
   metadata:
     labels:
       service: postgres
       app: data-cache
   spec:
     nodeSelector:
       cloud.google.com/gke-data-cache-disk: "1"
     containers:
     - name: postgres
       image: postgres:14-alpine
       volumeMounts:
       - name: pvc-data-cache-vol
         mountPath: /var/lib/postgresql/data2
         subPath: postgres
       env:
       - name: POSTGRES_USER
         value: admin
       - name: POSTGRES_PASSWORD
         value: password
     restartPolicy: Always
     volumes:
     - name: pvc-data-cache-vol
       persistentVolumeClaim:
         claimName: pvc-data-cache
EOF

Konfirmasi bahwa Deployment berhasil dibuat:

kubectl get deployment

Mungkin perlu waktu beberapa menit agar container Postgres menyelesaikan penyediaan dan menampilkan status READY.

Memverifikasi penyediaan Data Cache

Setelah membuat Deployment, pastikan penyimpanan persisten dengan Data Cache disediakan dengan benar.

  1. Untuk memverifikasi bahwa pvc-data-cache berhasil terikat ke volume persisten, jalankan perintah berikut:

    kubectl get pvc pvc-data-cache
    

    Outputnya mirip dengan hal berikut ini:

    NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                VOLUMEATTRIBUTESCLASS   AGE
    pvc-data-cache   Bound    pvc-e9238a16-437e-45d7-ad41-410c400ae018   300Gi      RWO            pd-balanced-data-cache-sc   <unset>                 10m
    
  2. Untuk mengonfirmasi bahwa Grup Logical Volume Manager (LVM) untuk Data Cache dibuat di node, ikuti langkah-langkah berikut:

    1. Dapatkan nama Pod driver PDCSI di node tersebut:

      NODE_NAME=$(kubectl get pod --output json |  jq '.items[0].spec.nodeName' | sed 's/\"//g')
      kubectl get po -n kube-system -o wide | grep ^pdcsi-node | grep $NODE_NAME
      

      Dari output, salin nama Pod pdcsi-node.

    2. Lihat log driver PDCSI untuk pembuatan Grup LVM:

      PDCSI_POD_NAME="PDCSI-NODE_POD_NAME"
      kubectl logs -n kube-system $PDCSI_POD_NAME gce-pd-driver | grep "Volume group creation"
      

      Ganti PDCSI-NODE_POD_NAME dengan nama Pod sebenarnya yang Anda salin pada langkah sebelumnya.

      Outputnya mirip dengan hal berikut ini:

      Volume group creation succeeded for LVM_GROUP_NAME
      

Pesan ini mengonfirmasi bahwa konfigurasi LVM untuk Data Cache disiapkan dengan benar di node.

Pembersihan

Agar akun Anda tidak dikenai biaya, hapus resource penyimpanan yang Anda buat dalam panduan ini. Google Cloud

  1. Hapus Deployment.

    kubectl delete deployment postgres-data-cache
    
  2. Hapus PersistentVolumeClaim.

    kubectl delete pvc pvc-data-cache
    
  3. Hapus node pool.

    gcloud container node-pools delete datacache-node-pool \
        --cluster CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster tempat Anda membuat node pool yang menggunakan Data Cache.

Langkah berikutnya