Halaman ini menjelaskan cara menjadwalkan pencadangan untuk Cassandra tanpa Cloud Storage. Dalam metode ini, cadangan disimpan di server jarak jauh yang Anda tentukan, bukan di bucket Cloud Storage. Apigee menggunakan SSH untuk berkomunikasi dengan server jarak jauh.
Anda harus menjadwalkan pencadangan sebagai tugas cron
. Setelah jadwal pencadangan diterapkan ke cluster hybrid, tugas pencadangan Kubernetes akan dijalankan secara berkala sesuai jadwal di platform runtime. Tugas ini memicu skrip cadangan di setiap node Cassandra dalam cluster campuran Anda yang mengumpulkan semua data di node, membuat file arsip (terkompresi) dari data, dan mengirim arsip ke server yang ditentukan dalam file overrides.yaml
Anda.
Langkah-langkah berikut menyertakan contoh umum untuk menyelesaikan tugas tertentu, seperti membuat pasangan kunci SSH. Gunakan metode yang sesuai dengan penginstalan Anda.
Prosedur ini memiliki bagian berikut:
Menyiapkan server dan SSH
- Tentukan server Linux atau Unix untuk pencadangan Anda. Server ini harus dapat dijangkau menggunakan SSH dari platform runtime campuran Apigee Anda. Perangkat harus memiliki penyimpanan yang cukup untuk cadangan Anda.
- Siapkan server SSH di server, atau pastikan server tersebut memiliki server SSH aman yang dikonfigurasi.
- Buat pasangan kunci SSH dan simpan file kunci pribadi di jalur yang dapat diakses dari platform runtime hibrida Anda. Anda harus menggunakan sandi kosong untuk pasangan kunci atau pencadangan akan gagal. Contoh:
ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+Dengan: exampleuser@example.com adalah string. Setiap string yang mengikuti
-C
dalam perintahssh-keygen
menjadi komentar yang disertakan dalam kuncissh
yang baru dibuat. String input dapat berupa string apa pun. Saat menggunakan nama akun dalam bentuk exampleuser@example.com, Anda dapat dengan cepat mengidentifikasi akun mana yang sesuai dengan kunci. - Buat akun pengguna di server cadangan dengan nama
apigee
. Pastikan penggunaapigee
baru memiliki direktori beranda di/home
. - Di server cadangan, buat direktori
.ssh
di direktori/home/apigee
baru. - Salin kunci publik (
ssh_key.pub
dalam contoh sebelumnya) ke dalam file bernamaauthorized_keys
di direktori/home/apigee/.ssh
baru. Contoh:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Di server cadangan, buat direktori cadangan dalam direktori
/home/apigee/
. Direktori cadangan dapat berupa direktori apa pun selama penggunaapigee
memiliki akses ke direktori tersebut. Contoh:cd /home/apigee
mkdir cassandra-backup
- Uji koneksi. Anda harus memastikan bahwa pod Cassandra dapat terhubung ke
server cadangan menggunakan SSH:
- Login ke shell pod Cassandra Anda. Contoh:
kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash
Dengan APIGEE_CASSANDRA_POD adalah nama pod Cassandra. Ubah ini menjadi nama pod yang ingin Anda hubungkan.
- Hubungkan melalui SSH ke server cadangan Anda, menggunakan kunci SSH pribadi yang memasang pod Cassandra dan alamat IP server:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
- Login ke shell pod Cassandra Anda. Contoh:
Menetapkan jadwal dan tujuan untuk pencadangan
Anda menetapkan jadwal dan tujuan untuk pencadangan di file overrides.yaml
.
- Tambahkan parameter berikut ke file
overrides.yaml
Anda:Parameter
cassandra: backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"
Contoh Helm
cassandra: backup: enabled: true keyFile: "private.key"# path relative to apigee-datastore path server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Contoh
apigeectl
cassandra: backup: enabled: true keyFile: "home/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Dengan keterangan:
Properti Deskripsi backup:enabled
Pencadangan dinonaktifkan secara default. Anda harus menetapkan properti ini ke true
.backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
Jalur di sistem file lokal Anda ke file kunci pribadi SSH (bernama
ssh_key
di langkah saat Anda membuat pasangan kunci SSH).backup:server
BACKUP_SERVER_IP
Alamat IP server cadangan Anda.
backup:storageDirectory
BACKUP_DIRECTORY
Nama direktori cadangan di server cadangan Anda. Ini harus berupa direktori dalam
home/apigee
(direktori cadangan bernamacassandra_backup
di langkah saat Anda membuat direktori cadangan).backup:cloudProvider
HYBRID
Untuk pencadangan server jarak jauh, tetapkan properti ke
HYBRID
.backup:schedule
SCHEDULE
Waktu saat pencadangan dimulai, yang ditentukan dalam sintaksis crontab standar. Waktu dalam zona waktu lokal cluster Kubernetes. Default:
0 2 * * *
- Terapkan konfigurasi pencadangan ke cakupan penyimpanan cluster Anda:
Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore
Dengan OVERRIDES_FILE adalah jalur ke file penggantian yang baru saja Anda edit.
- Verifikasi tugas pencadangan. Contoh:
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
Meluncurkan pencadangan manual
Tugas pencadangan dipicu secara otomatis sesuai dengan jadwal cron yang ditetapkan di
cassandra.backup.schedule dalam file
overrides.yaml
Anda. Namun, Anda juga dapat memulai tugas pencadangan secara manual jika diperlukan
menggunakan perintah berikut:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME
Dengan MANUAL_BACKUP_JOB_NAME adalah nama tugas pencadangan manual yang akan dibuat.
Pemecahan masalah
-
Uji koneksi dari pod Cassandra. Anda harus memastikan bahwa pod Cassandra dapat
terhubung ke server cadangan menggunakan SSH:
-
Login ke shell pod Cassandra Anda. Contoh:
kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash
Dengan APIGEE_CASSANDRA_POD adalah nama pod Cassandra. Ubah ini menjadi nama pod yang ingin Anda hubungkan.
-
Hubungkan melalui SSH ke server cadangan Anda, menggunakan kunci SSH pribadi yang dipasang pod Cassandra dan alamat IP server:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
-
Login ke shell pod Cassandra Anda. Contoh:
- Jika Anda mengalami masalah saat mengakses server jarak jauh dari pod Cassandra, periksa kembali konfigurasi ssh di server jarak jauh dan pastikan juga bahwa upgrade datastore berhasil.
-
Anda dapat memeriksa apakah Cassandra menggunakan kunci pribadi yang benar dengan menjalankan perintah berikut saat
Anda login ke pod Cassandra, dan membandingkan output dengan kunci pribadi yang Anda buat:
cat /var/secrets/keys/key