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.
Tentukan server Linux atau Unix untuk pencadangan Anda. Server ini harus dapat dijangkau menggunakan SSH dari
runtime hybrid 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:
Dengan: exampleuser@example.com adalah string.
Setiap string yang mengikuti -C dalam perintah ssh-keygen
menjadi komentar yang disertakan dalam kunci ssh
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
pengguna apigee 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 bernama
authorized_keys di direktori /home/apigee/.ssh baru. Contoh:
cd /home/apigee
mkdir .sshcd .sshvi authorized_keys
Di server cadangan, buat direktori cadangan dalam direktori /home/apigee/. Direktori cadangan dapat berupa direktori apa pun selama pengguna apigee 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:
Nama direktori cadangan di server cadangan Anda. Ini harus berupa direktori dalam
home/apigee (direktori cadangan bernama cassandra_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:
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:
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:
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-03 UTC."],[[["\u003cp\u003eThis document details how to schedule and manage Cassandra backups for Apigee hybrid version 1.11, storing backups on a remote server via SSH instead of Cloud Storage.\u003c/p\u003e\n"],["\u003cp\u003eBackups are scheduled as \u003ccode\u003ecron\u003c/code\u003e jobs, executed periodically by a Kubernetes job that triggers a backup script on each Cassandra node, compressing the data, and sending it to the designated remote server.\u003c/p\u003e\n"],["\u003cp\u003eTo set up, you must designate a Linux/Unix server for backups, configure an SSH server, create an SSH key pair with no password, create a user account on the server, and establish a backup directory.\u003c/p\u003e\n"],["\u003cp\u003eThe backup schedule, remote server details, and SSH key file path are configured in the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file under the \u003ccode\u003ecassandra.backup\u003c/code\u003e section, which includes properties like enabling backups, the server's IP, and the storage directory.\u003c/p\u003e\n"],["\u003cp\u003eA manual backup can be initiated using a specific \u003ccode\u003ekubectl\u003c/code\u003e command, in addition to the automated backups scheduled through the cron configuration in the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file.\u003c/p\u003e\n"]]],[],null,["# Scheduling backups in a remote server\n\n| You are currently viewing version 1.11 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n| **Warning:** This Apigee Hybrid version has a known issue [388608440](/apigee/docs/release/known-issues#388608440) affecting backups that use `HYBRID` or `GCP` Cloud Providers. Please see the [Cassandra troubleshooting guide](/apigee/docs/api-platform/troubleshoot/playbooks/cassandra/ts-cassandra#ki-388608440-hybrid-ssh-backup-111) to check whether your setup is affected and for steps needed for resolution.\n\nThis page describes how to schedule backups for Cassandra without the Cloud Storage.\nIn this method, backups are stored on a remote server specified by you instead of a Cloud Storage bucket. Apigee uses\nSSH to communicate with the remote server.\n\nYou must schedule the backups as `cron` jobs. Once a backup schedule\nhas been applied to your hybrid cluster, a Kubernetes backup job is\nperiodically executed according to the schedule in the runtime plane. The job triggers a\nbackup script on each Cassandra node in your hybrid cluster that collects all the\ndata on the node, creates an archive (compressed) file of the data, and sends the archive\nto the server specified in your `overrides.yaml` file.\n| **Note:**\n|\n| - You must ensure there is enough space on the file system for the backups, and adjust the frequency of the backups to avoid unnecessarily filling the allotted storage space. Apigee does not dictate a retention policy for the backup files. You may want to create a retention policy for files appropriate to your installation.\n| - Applying backup configuration on the existing cluster will rolling restart Cassandra pods.\n\n\nThe following steps include common examples for completing specific tasks, like creating an SSH\nkey pair. Use the methods that are appropriate to your installation.\n\n\nThe procedure has the following parts:\n\n- [Set up the server and SSH](#server-ssh)\n- [Set the schedule and destination for backup](#overrides-backup)\n\n### Set up the server and SSH\n\n1. Designate a Linux or Unix server for your backups. This server must be reachable using SSH from your Apigee hybrid runtime plane. It must have enough storage for your backups.\n2. Set up an SSH server on the server, or ensure that it has a secure SSH server configured. **Caution:** For security purposes, make sure your SSH server is up to date.\n3. Create an SSH key pair and store the private key file in a path that is accessible from your hybrid runtime plane. **You must use a blank password for your key pair or the backup will fail** . For example: \n\n ssh-keygen -t rsa -b 4096 -C \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eexampleuser\u003c/span\u003e\u003cspan class=\"devsite-syntax-nv\"\u003e@example\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003ecom\u003c/span\u003e\u003c/var\u003e\n Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key\n Enter passphrase (empty for no passphrase):\n Enter same passphrase again:\n Your identification has been saved in ssh_key\n Your public key has been saved in ssh_key.pub\n The key fingerprint is:\n SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com\n The key's randomart image is:\n +---[RSA 4096]----+\n | +. ++X|\n | . . o.=.*+|\n | . o . . o==o |\n | . . . =oo+o...|\n | . S +E oo .|\n | . . .. . o .|\n | . . . . o.. |\n | . ...o ++. |\n | .. .. +o+. |\n +----[SHA256]-----+\n\n\n Where: \u003cvar translate=\"no\"\u003eexampleuser@example.com\u003c/var\u003e is a string.\n Any string that follows `-C` in the `ssh-keygen`\n command becomes a comment included in the newly created `ssh`\n key. The input string can be any string. When you use an account name\n in the form of \u003cvar translate=\"no\"\u003eexampleuser@example.com\u003c/var\u003e, you can quickly\n identify which account goes with the key.\n4. Create a user account on the backup server with the name `apigee`. Make sure the new `apigee` user has a home directory under `/home`.\n5. On the backup server, create an `.ssh` directory in the new `/home/apigee` directory.\n6. Copy the public key (`ssh_key.pub` in the previous example) into a file named `authorized_keys` in the new `/home/apigee/.ssh` directory. For example: \n\n cd /home/apigee\n mkdir .ssh\n cd .ssh\n vi authorized_keys\n\n7. On your backup server, create a backup directory within the `/home/apigee/` directory. The backup directory can be any directory as long as the `apigee` user has access to it. For example: \n\n cd /home/apigee\n mkdir cassandra-backup\n\n8. Test the connection. You need to make sure that your Cassandra pods can connect to your backup server using SSH:\n 1. Log into the shell of your Cassandra pod. For example: \n\n ```\n kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eAPIGEE_CASSANDRA_POD\u003c/var\u003e is the name of a Cassandra pod. Change this to\n the name of the pod you want to connect from.\n 2. Connect by SSH to your backup server, using the private SSH key mounted the Cassandra pod and server IP address: \n\n ```\n ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP\n ```\n | **Note:** You may see a warning at this point saying your server's fingerprint is unrecognized and asks if you would like to continue. You can continue at that prompt and verify the SSH configuration.\n\n### Set the schedule and destination for backup\n\n\nYou set the schedule and destination for backups in your `overrides.yaml` file.\n\n1. Add the following parameters to your `overrides.yaml` file:\n\n ### Parameters\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"\u003cvar translate=\"no\"\u003ePATH_TO_PRIVATE_KEY_FILE\u003c/var\u003e\"\n server: \"\u003cvar translate=\"no\"\u003eBACKUP_SERVER_IP\u003c/var\u003e\"\n storageDirectory: \"/home/apigee/\u003cvar translate=\"no\"\u003eBACKUP_DIRECTORY\u003c/var\u003e\"\n cloudProvider: \"HYBRID\" # required verbatim \"HYBRID\" (all caps)\n schedule: \"\u003cvar translate=\"no\"\u003eSCHEDULE\u003c/var\u003e\"\n ```\n\n ### Example Helm\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"private.key\"# path relative to apigee-datastore path\n server: \"34.56.78.90\"\n storageDirectory: \"/home/apigee/cassbackup\"\n cloudProvider: \"HYBRID\"\n schedule: \"0 2 * * *\"\n ```\n\n ### Example `apigeectl`\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"home/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key\"\n server: \"34.56.78.90\"\n storageDirectory: \"/home/apigee/cassbackup\"\n cloudProvider: \"HYBRID\"\n schedule: \"0 2 * * *\"\n ```\n\n\n Where:\n\n2. Apply the backup configuration to the storage scope of your cluster:\n\n ### Helm\n\n ```\n helm upgrade datastore apigee-datastore/ \\\n --install \\\n --namespace APIGEE_NAMESPACE \\\n --atomic \\\n -f OVERRIDES_FILE.yaml\n ```\n\n ### `apigeectl`\n\n ```\n $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eOVERRIDES_FILE\u003c/var\u003e is the path to the overrides file you just edited.\n3. Verify the backup job. For example: \n\n ```\n kubectl get cronjob -n apigee\n ``` \n\n ```component-pascal\n NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE\n apigee-cassandra-backup 33 * * * * False 0 \u003cnone\u003e 94s\n ```\n\n### Launch a manual backup\n\n\nBackup jobs are triggered automatically according to the cron schedule set in\n[cassandra.backup.schedule](/apigee/docs/hybrid/v1.11/config-prop-ref#cassandra-backup-schedule) in your\n`overrides.yaml` file. However, you can also initiate a backup job manually if needed\nusing the following command: \n\n```\nkubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME\n```\n\nWhere \u003cvar translate=\"no\"\u003eMANUAL_BACKUP_JOB_NAME\u003c/var\u003e is the name of a manual backup job to be be created.\n\n### Troubleshooting\n\n1. Test the connection from a Cassandra pod. You need to make sure that your Cassandra pods can connect to your backup server using SSH:\n 1. Log into the shell of your Cassandra pod. For example: \n\n ```\n kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eAPIGEE_CASSANDRA_POD\u003c/var\u003e is the name of a Cassandra pod. Change this to\n the name of the pod you want to connect from.\n 2. Connect by SSH to your backup server, using the private SSH key mounted the Cassandra pod and server IP address: \n\n ```\n ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP\n ```\n | **Note:** You may see a warning at this point saying your server's fingerprint is unrecognized and asks if you would like to continue. You can continue at that prompt and verify the SSH configuration.\n2. If you have problems accessing your remote server from the Cassandra pod, please check your ssh configuration on the remote server again and also make sure that [upgrading the datastore](#overrides-backup) was successful.\n3. You can check if Cassandra uses the correct private key by running the following command while you are logged in to your Cassandra pod, and compare the output [with the private key you created](#create-key): \n\n ```\n cat /var/secrets/keys/key\n ```"]]