Anda dapat mencadangkan dan memulihkan data campuran menggunakan snapshot CSI (Container Storage Interface). Pencadangan CSI memicu snapshot disk yang diambil oleh sistem penyimpanan yang mendasarinya menggunakan driver CSI yang disediakan. Pencadangan CSI tidak memerlukan bucket Google Cloud Storage atau server jarak jauh untuk menyimpan data cadangan.
Pencadangan CSI direkomendasikan untuk instance campuran yang dihosting di Google Cloud, AWS, atau Azure.
Halaman ini menjelaskan langkah-langkah untuk menggunakan pencadangan dan pemulihan CSI campuran. Untuk ringkasan pencadangan dan pemulihan hibrida secara umum, lihat Ringkasan pencadangan dan pemulihan Cassandra.
Batasan pencadangan dan pemulihan
Perhatikan batasan berikut saat menggunakan pencadangan dan pemulihan CSI:
- Driver CSI yang digunakan oleh class penyimpanan yang dikonfigurasi harus mendukung snapshot CSI. Lihat daftar driver CSI Kubernetes ini untuk mengetahui informasi driver.
- Tidak semua platform didukung. Hanya platform Google Cloud, AWS, dan Azure yang didukung.
- OpenShift Container Platform tidak didukung karena batasan snapshot volume.
- Hanya platform cloud yang didukung. Platform on-prem tidak didukung.
- Data pencadangan CSI dan data pencadangan campuran non-CSI tidak kompatibel. Cadangan non-CSI tidak dapat digunakan dengan pemulihan CSI dan cadangan CSI tidak dapat digunakan dengan pemulihan non-CSI.
- Penginstalan dan fungsi driver CSI adalah tanggung jawab vendor driver CSI.
- Pengguna bertanggung jawab untuk memastikan resource cluster yang memadai tersedia untuk menyediakan snapshot CSI.
- Pengguna bertanggung jawab untuk menghapus data snapshot lama.
Menyiapkan pencadangan CSI
Untuk menjadwalkan pencadangan campuran menggunakan CSI, lakukan langkah-langkah berikut:
- Jika Anda belum pernah menyiapkan pencadangan campuran:
- Jalankan perintah
create-service-account
berikut untuk membuat akun layanan (SA) Google Cloud dengan peranroles/storage.objectAdmin
standar. Peran SA ini memungkinkan Anda menulis data cadangan ke Cloud Storage. Jalankan perintah berikut di direktori yang sesuai untuk alat pengelolaan Anda:- Diagram Helm:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
apigeectl
:HYBRID_BASE_DIRECTORY/hybrid-files/
./tools/create-service-account --env non-prod --dir ./service-accounts
Perintah ini membuat satu akun layanan bernama
apigee-non-prod
untuk digunakan di lingkungan non-produksi dan menempatkan file kunci yang didownload di direktori./service-accounts
.Untuk mengetahui informasi selengkapnya tentang akun layanan Google Cloud, lihat Membuat dan mengelola akun layanan.
- Diagram Helm:
- Perintah
create-service-account
menyimpan file JSON yang berisi kunci pribadi akun layanan. File disimpan di direktori yang sama tempat perintah dieksekusi. Anda akan memerlukan jalur ke file ini dalam langkah-langkah berikut.
- Jalankan perintah
- Buka file
overrides.yaml
. Tetapkan parameter berikut, seperti yang ditunjukkan dalam Contoh file penggantian.- Tetapkan parameter umum yang ditampilkan di bawah dalam blok
backup
. Jika sudah menetapkan parameter ini untuk solusi pencadangan hybrid non-CSI, Anda dapat menggunakan parameter yang sama untuk snapshot CSI. Lihat tabel referensi properti pencadangan untuk mengetahui informasi selengkapnya tentang setiap nilai.
Untuk
backup
:- enabled: Tetapkan ke
true
untuk mengaktifkan pencadangan terjadwal. - pullPolicy dalam gambar: Tetapkan ke
Always
. - schedule: Berikan jadwal ekspresi cron.
- enabled: Tetapkan ke
- Tetapkan parameter ini untuk pencadangan khusus CSI:
- Nilai grup penyimpanan Cassandra: Class penyimpanan Cassandra yang dikonfigurasi harus mendukung snapshot CSI agar pencadangan dan pemulihan CSI berfungsi. Untuk memeriksa apakah class penyimpanan mendukung snapshot CSI, jalankan perintah berikut untuk mendapatkan class penyimpanan yang tersedia:
Lihat output "Provisioner" untuk setiap class penyimpanan. Penyedia yang menggunakan CSI biasanya memiliki bagian ".csi." pada namanya seperti "pd.csi.storage.gke.io". Cari nama penyedia di daftar driver CSI Kubernetes ini. Jika kolom "Fitur Lainnya" untuk penyedia berisi kata "SNAPSHOT", class penyimpanan yang menggunakan penyedia akan mendukung snapshot CSI.kubectl get sc
Tambahkan parameter ini di grup penyimpanan. Kedua nilai tersebut wajib diisi.
- storageclass: Nama class penyimpanan yang mendukung snapshot CSI.
- capacity: Kapasitas disk.
- Jenis penyedia cloud:
Setelah kemampuan snapshot CSI diverifikasi, ubah file penggantian untuk menggunakan pencadangan dan pemulihan CSI:
- cloudProvider: Tetapkan
cloudProvider
dibackup
danrestore
keCSI
.
- cloudProvider: Tetapkan
- Nilai grup penyimpanan Cassandra: Class penyimpanan Cassandra yang dikonfigurasi harus mendukung snapshot CSI agar pencadangan dan pemulihan CSI berfungsi. Untuk memeriksa apakah class penyimpanan mendukung snapshot CSI, jalankan perintah berikut untuk mendapatkan class penyimpanan yang tersedia:
- Tetapkan parameter umum yang ditampilkan di bawah dalam blok
Contoh konfigurasi pencadangan
Bagian ini menampilkan bagian terkait pencadangan dari contoh fileoverrides.yaml
.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always cloudProvider: "CSI" schedule: "0 * * 11 *"
Meluncurkan pencadangan manual
Cadangan CSI dibuat secara otomatis sesuai jadwal cron yang ditetapkan dalam file overrides.yaml
.
Untuk memulai pencadangan CSI manual, gunakan perintah ini:
kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
backup-pod-name
adalah nama pod cadangan yang akan dibuat.
Memverifikasi pencadangan
Salah satu cara untuk memverifikasi bahwa pencadangan berhasil dibuat adalah dengan memeriksa snapshot volume di cluster Kubernetes, menggunakan perintah ini:
kubectl get volumesnapshot -n apigee
Output akan menampilkan daftar snapshot saat ini di cluster. Proses pencadangan CSI membuat snapshot setiap disk Cassandra. Jumlah snapshot yang dihasilkan harus cocok dengan jumlah total pod cassandra dalam cluster.
Memulihkan cadangan
Gunakan proses ini untuk memulihkan cadangan CSI yang dibuat sebelumnya. Untuk informasi umum tentang memulihkan cadangan dan ringkasan prosesnya, lihat halaman ringkasan pemulihan.
Untuk memulai pemulihan pencadangan CSI, ikuti petunjuk untuk
pemulihan region tunggal non-CSI campuran,
tetapi gunakan nilai ini di blok restore
di overrides.yaml
Anda.
Lihat tabel referensi properti pencadangan
untuk mengetahui informasi selengkapnya tentang setiap nilai dan
contoh konfigurasi pemulihan untuk mengetahui contohnya.
- enabled: Tetapkan ke
true
untuk mengaktifkan pemulihan untuk pencadangan yang dirujuk dengan stempel waktusnapshotTimestamp
. - snapshotTimestamp: Berikan stempel waktu cadangan CSI sebelumnya.
- pullPolicy dalam gambar: Tetapkan ke
Always
.
Untuk menemukan nilai snapshotTimestamp
yang akan dipulihkan, jalankan perintah ini untuk mendapatkan daftar snapshot yang tersedia:
kubectl get volumesnapshot -n apigee
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
.
Contoh konfigurasi pemulihan
Bagian ini menampilkan bagian terkait pemulihan dari contoh fileoverrides.yaml
.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" cloudProvider: "CSI" image: pullPolicy: Always
Bermigrasi ke pencadangan dan pemulihan CSI
Jika sebelumnya belum pernah menggunakan pencadangan dan pemulihan campuran, Anda dapat mengikuti petunjuk di Menyiapkan pencadangan CSI untuk membuat pencadangan CSI baru tanpa langkah-langkah di bagian ini. Langkah-langkah ini akan memandu Anda bermigrasi dari solusi pencadangan dan pemulihan non-CSI ke pencadangan CSI.
- Buat cadangan baru menggunakan metode pencadangan non-CSI yang saat ini dikonfigurasi.
- Ubah konfigurasi pencadangan dalam file
overrides.yaml
campuran untuk menggunakan penggantian pencadangan CSI seperti yang ditunjukkan dalam contoh konfigurasi pencadangan . - Terapkan perubahan dalam file
overrides.yaml
:Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
- Verifikasi tugas pencadangan:
kubectl get cronjob -n apigee
- Setelah tugas pencadangan selesai, pastikan snapshot telah dibuat. Jumlah
snapshot yang dihasilkan harus setara dengan jumlah node Cassandra di instance Hybrid.
kubectl get volumesnapshot -n apigee