Menjadwalkan pencadangan di server jarak jauh

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

  1. Pilih Server Cadangan: Pilih server Linux atau Unix dengan penyimpanan yang memadai untuk pencadangan Anda dan pastikan server tersebut dapat diakses melalui SSH dari platform runtime campuran Apigee Anda.
  2. Konfigurasi Server SSH: Instal server SSH atau pastikan server yang ada aman.
  3. Buat Pasangan Kunci SSH: Buat pasangan kunci SSH tanpa frasa sandi:Misalnya:
    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 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.

    Perintah ini akan menghasilkan dua file kunci SSH, file kunci pribadi (misalnya `ssh_key.rsa`) dan file kunci publik (misalnya, `ssh_key.pub`).

    Simpan kunci pribadi ke lokasi yang dapat diakses oleh platform runtime Anda.

  4. Tambahkan Akun Pengguna: Di server cadangan, buat pengguna bernama apigee dengan direktori utama di bagian /home/apigee. Pastikan pengguna apigee baru memiliki direktori beranda di /home.
  5. Menyiapkan Direktori .ssh: Di server cadangan, buat direktori .ssh di /home/apigee/.ssh. Contoh:
    cd /home/apigee
          mkdir .ssh
          cd .ssh
          vi authorized_keys
  6. Instal Kunci Publik: Tempatkan kunci publik ke dalam file authorized_keys dalam direktori /home/apigee/. Direktori cadangan dapat berupa direktori apa pun selama pengguna apigee memiliki akses ke direktori tersebut.Tempelkan konten file ssh public key ke dalam file.
  7. Verifikasi Akses SSH: Uji koneksi dari komputer lokal atau node cluster:
  8. ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP

Menetapkan jadwal dan tujuan untuk pencadangan

Anda menetapkan jadwal dan tujuan untuk pencadangan di file overrides.yaml.

  1. 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

    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 * * *"

    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). Jalur ini harus relatif terhadap direktori diagram apigee-datastore.

    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 bernama cassandra_backup di langkah saat Anda membuat direktori cadangan).

    backup:cloudProvider

    GCP/HYBRID

    Untuk pencadangan Cloud Storage, tetapkan properti ke GCP. Misalnya, cloudProvider: "GCP".

    Untuk pencadangan server jarak jauh, tetapkan properti ke HYBRID. Misalnya, cloudProvider: "HYBRID".

    backup:schedule

    SCHEDULE

    Waktu saat pencadangan dimulai, yang ditentukan dalam sintaksis crontab standar. Waktu dalam zona waktu lokal cluster Kubernetes. Default: 0 2 * * *

  2. Terapkan konfigurasi pencadangan ke cakupan penyimpanan cluster Anda:
    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    Dengan OVERRIDES_FILE adalah jalur ke file penggantian yang baru saja Anda edit.

  3. Verifikasi tugas pencadangan. Contoh:
    kubectl get cronjob -n apigee
    NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

Pemecahan masalah

  1. Uji koneksi dari pod Cassandra. Anda harus memastikan bahwa pod Cassandra dapat terhubung ke server cadangan menggunakan SSH:
    1. Login ke shell pod Cassandra Anda. Contoh:
      kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash

      Dengan APIGEE_CASSANDRA_DEFAULT_0 adalah nama pod Cassandra. Ubah ini menjadi nama pod yang ingin Anda hubungkan.

    2. 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
  2. Jika Anda mengalami masalah saat mengakses server jarak jauh dari pod Cassandra, periksa kembali konfigurasi ssh Anda di server jarak jauh dan juga pastikan bahwa upgrade datastore berhasil.
  3. 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