이 페이지에서는 Cloud Storage 없이 Cassandra에 대해 백업을 예약하는 방법을 보여줍니다.
이 방법의 경우 Cloud Storage 버킷 대신 사용자가 지정한 원격 서버에 백업이 저장됩니다. Apigee는 SSH를 사용해서 원격 서버와 통신합니다.
백업을 cron 작업으로 예약해야 합니다. 백업 일정이 하이브리드 클러스터에 적용되면 런타임 영역의 일정에 따라 Kubernetes 백업 작업이 주기적으로 실행됩니다. 이 작업은 하이브리드 클러스터의 각 Cassandra 노드에서 노드의 모든 데이터를 수집하고, 데이터의 보관 파일(압축)을 만들고, overrides.yaml 파일에 지정된 서버로 보관 파일을 보내는 백업 스크립트를 트리거합니다.
다음 단계에서는 SSH 키 쌍 만들기와 같은 특정 작업을 완료하기 위한 일반적인 예시가 포함되어 있습니다. 설치에 적합한 방법을 사용합니다.
여기서 exampleuser@example.com은 문자열입니다.
ssh-keygen 명령어에서 -C 뒤에 오는 모든 문자열은 새로 만든 ssh 키에 포함된 주석이 됩니다. 입력 문자열은 어떤 문자열이든 가능합니다. exampleuser@example.com 형식의 계정 이름을 사용하면 키와 함께 사용될 계정을 빠르게 식별할 수 있습니다.
백업 서버에 apigee이라는 이름의 사용자 계정을 만듭니다. 새 apigee 사용자의 /home에 홈 디렉터리가 있는지 확인합니다.
백업 서버의 새 /home/apigee 디렉터리에 ssh 디렉터리를 만듭니다.
공개 키(이전 예시의 ssh_key.pub)를 새 /home/apigee/ssh 디렉터리의 authorized_keys라는 파일에 복사합니다. 예를 들면 다음과 같습니다.
cd /home/apigee
mkdir .sshcd .sshvi authorized_keys
백업 서버의 /home/apigee/ 디렉터리 내에 백업 디렉터리를 만듭니다. 백업 디렉터리는 apigee 사용자가 액세스할 수 있는 디렉터리면 모두 됩니다. 예를 들면 다음과 같습니다.
cd /home/apigee
mkdir cassandra-backup
연결을 테스트합니다. Cassandra 포드가 SSH를 사용하여 백업 서버에 연결할 수 있는지 확인해야 합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eThis document explains how to schedule Cassandra backups to a remote server using SSH, instead of using Cloud Storage, within the Apigee hybrid environment.\u003c/p\u003e\n"],["\u003cp\u003eBackups are scheduled as \u003ccode\u003ecron\u003c/code\u003e jobs, with the frequency determined by the user to manage storage space, and will trigger a backup script on each Cassandra node that will send an archived file to the specified server.\u003c/p\u003e\n"],["\u003cp\u003eTo set up backups, users must designate a Linux or Unix server, establish an SSH server with a blank-password SSH key pair, and configure a user account with appropriate permissions, all which must be accessible from the Apigee hybrid runtime plane.\u003c/p\u003e\n"],["\u003cp\u003eThe backup schedule and destination are configured within the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file, specifying the backup server's IP, the storage directory, the SSH key file location, and a crontab schedule, with the \u003ccode\u003ecloudProvider\u003c/code\u003e property set to \u003ccode\u003eHYBRID\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eAfter configuring \u003ccode\u003eoverrides.yaml\u003c/code\u003e, users apply the backup settings using \u003ccode\u003eapigeectl\u003c/code\u003e, which will restart the Cassandra pods, and the configuration can be verified by checking the active \u003ccode\u003ecronjob\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Scheduling backups in a remote server\n\n| You are currently viewing version 1.8 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\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 APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eAPIGEE_CASSANDRA_DEFAULT_0\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 server IP address: \n\n ```\n ssh 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. For purposes of this test, this means you can successfully reach your backup server from your Cassandra pod. You do not need to continue.\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\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"/Users/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. Use `apigeectl` to apply the backup configuration to the storage scope of your cluster: \n\n ```\n $APIGEECTL_HOME/apigeectl apply --datastore -f YOUR_OVERRIDES_FILE\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eYOUR_OVERRIDES_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 ```"]]