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 bucket Cloud Storage. Penggunaan Apigee SSH untuk berkomunikasi dengan server jarak jauh.

Anda harus menjadwalkan pencadangan sebagai tugas cron. Setelah jadwal pencadangan diterapkan ke cluster hybrid, tugas pencadangan Kubernetes dijalankan secara berkala sesuai dengan jadwal di bidang runtime. Tugas ini memicu skrip pencadangan pada setiap node Cassandra di cluster hibrida Anda yang mengumpulkan data pada {i>node<i}, membuat file arsip (terkompresi) dari data, dan mengirimkan arsip ke server yang ditentukan dalam file overrides.yaml Anda.

Langkah-langkah berikut termasuk contoh umum untuk menyelesaikan tugas tertentu, seperti membuat SSH pasangan kunci. Gunakan metode yang sesuai dengan penginstalan Anda.

Prosedur tersebut memiliki bagian-bagian berikut:

Menyiapkan server dan SSH

  1. Tentukan server Linux atau Unix untuk cadangan Anda. Server ini harus dapat dijangkau menggunakan SSH dari bidang runtime hybrid Apigee. Harus memiliki penyimpanan yang cukup untuk cadangan Anda.
  2. Siapkan server SSH di server, atau pastikan server tersebut memiliki server SSH aman yang telah dikonfigurasi.
  3. Buat pasangan kunci SSH dan simpan file kunci pribadi di jalur yang dapat diakses dari hybrid Anda dalam bidang runtime. 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]-----+

    Dalam hal ini: exampleuser@example.com adalah string. String apa pun yang mengikuti -C di ssh-keygen menjadi komentar yang disertakan dalam ssh yang baru dibuat tombol. String input dapat berupa string apa pun. Jika Anda menggunakan nama akun dalam bentuk exampleuser@example.com, Anda dapat dengan cepat mengidentifikasi akun mana yang sesuai dengan kunci.

  4. Buat akun pengguna di server cadangan dengan nama apigee. Pastikan pengguna apigee baru memiliki direktori utama di bawah /home.
  5. Di server cadangan, buat direktori .ssh di /home/apigee baru saat ini.
  6. Salin kunci publik (ssh_key.pub pada contoh sebelumnya) ke dalam file bernama authorized_keys di direktori /home/apigee/.ssh baru. Contoh:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. Di server cadangan, buat direktori cadangan di dalam /home/apigee/ saat ini. Direktori cadangan dapat berupa direktori apa pun selama pengguna apigee memiliki akses IP eksternal mana pun yang ditetapkan pada instance tersebut. Contoh:
    cd /home/apigee
    mkdir cassandra-backup
  8. Uji koneksi. Anda perlu 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 dengan SSH ke server cadangan Anda, menggunakan kunci SSH pribadi yang terpasang pada pod Cassandra dan alamat IP server:
      ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP

Menetapkan jadwal dan tujuan pencadangan

Anda menetapkan jadwal dan tujuan 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: "/Users/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 menyetel ini ke true.
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    Jalur di sistem file lokal Anda ke file kunci pribadi SSH (bernama ssh_key pada langkah tempat 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 di dalam home/apigee (direktori cadangan bernama cassandra_backup pada langkah tempat Anda membuat direktori pencadangan).

    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 mulai pencadangan, yang ditentukan dalam sintaksis crontab standar. Waktu menggunakan zona waktu lokal cluster Kubernetes. Default: 0 2 * * *

  2. Gunakan apigeectl untuk menerapkan konfigurasi pencadangan ke cakupan penyimpanan :
    $APIGEECTL_HOME/apigeectl apply --datastore -f YOUR_OVERRIDES_FILE

    Dengan YOUR_OVERRIDES_FILE adalah jalur ke file pengganti 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