Pencadangan dan pemulihan tanpa Google Cloud

Bagian ini membahas cara mengonfigurasi pencadangan dan pemulihan database Cassandra menggunakan ssh dan sistem file Anda, bukan menggunakan Google Cloud. Lihat juga:

Apa itu pencadangan dan pemulihan Cassandra tanpa Layanan Cloud

Pencadangan tanpa Layanan Cloud menyimpan cadangan database Cassandra ke file terkompresi dalam sistem file server yang Anda tentukan. Pencadangan terjadi sesuai jadwal yang Anda tentukan dalam file penggantian. Koneksi ke server dilakukan dengan SSH aman.

Menyiapkan pencadangan tanpa Layanan Cloud

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 pada 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]-----+
  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 alamat IP server:
      ssh 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

    HYBRID

    Properti cloudProvider: "HYBRID" wajib diisi.

    backup:schedule

    SCHEDULE

    Waktu mulai pencadangan, yang ditentukan dalam sintaksis crontab standar. Default: 0 2 * * *

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

    Dengan YOUR_OVERRIDES_FILE adalah jalur ke file pengganti yang baru saja Anda edit.

Mengonfigurasi pemulihan

Pemulihan mengambil data Anda dari lokasi cadangan dan memulihkan data ke lokasi baru Gugus Cassandra dengan jumlah node yang sama. Tidak ada data yang diambil dari Cassandra lama .

Petunjuk pemulihan di bawah ini ditujukan untuk deployment region tunggal yang tidak menggunakan Google Cloud Storage untuk pencadangan. Untuk deployment lainnya, lihat referensi berikut:

Untuk memulihkan cadangan Cassandra:

  1. Membuat namespace baru dalam cluster Kubernetes yang ada yang akan digunakan untuk memulihkan deployment waktu kerja hybrid. Jangan gunakan nama namespace asli untuk namespace baru. Jangan gunakan namespace lama untuk pemulihan.
  2. Di direktori penginstalan root hybrid, buat overrides-restore.yaml baru .
  3. Salin konfigurasi Cassandra lengkap dari overrides.yaml asli Anda ke file overrides-restore.yaml baru. Contoh:
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. Tambahkan elemen namespace ke file overrides-restore.yaml baru.

    Parameter

    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      restore:
        enabled: true
        keyFile: "PATH_TO_PRIVATE_KEY_FILE"
        server: "BACKUP_SERVER_IP"
        storageDirectory: "/home/apigee/BACKUP_DIRECTORY"
        cloudProvider: "HYBRID"  # required verbatim "HYBRID" (all caps)
        snapshotTimestamp: "TIMESTAMP"
      ...
    

    Contoh

    namespace: cassandra-restore
    cassandra:
      restore:
        enabled: true
        keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
        server: "34.56.78.90"
        storageDirectory: "/home/apigee/cassbackup"
        cloudProvider: "HYBRID"
        snapshotTimestamp: "20201001183903"
    
  5. Dengan keterangan:

    Properti Deskripsi
    namespace

    YOUR_RESTORE_NAMESPACE

    Nama namespace baru yang Anda buat pada langkah 1 untuk gugus Cassandra yang baru. Jangan gunakan namespace yang sama dengan yang Anda gunakan untuk gugus asli.

    restore:enabled Pemulihan dinonaktifkan secara default. Anda harus menyetel ini ke true.
    restore:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    Jalur di sistem file lokal Anda ke File kunci pribadi SSH (bernama ssh_key dalam langkah saat Anda membuat pasangan kunci SSH).

    restore:server

    BACKUP_SERVER_IP

    Alamat IP server cadangan Anda.

    restore: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).

    restore:cloudProvider

    HYBRID

    Properti cloudProvider: "HYBRID" wajib diisi.

    restore:snapshotTimestamp

    TIMESTAMP

    Stempel waktu snapshot cadangan yang akan dipulihkan. Untuk memeriksa stempel waktu yang dapat digunakan, buka dbStorageBucket dan lihat file yang ada di direktori VM dengan bucket. Setiap nama file berisi nilai stempel waktu seperti berikut:

    backup_20210203213003_apigee-cassandra-default-0.tgz

    Dengan 20210203213003 adalah nilai snapshotTimestamp yang akan Anda digunakan jika Anda ingin memulihkan cadangan yang dibuat pada saat itu.

  6. Ubah label app pada node Cassandra di namespace lama dengan menjalankan perintah berikut:
    kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
    
  7. Membuat deployment runtime hybrid baru. Tindakan ini akan membuat gugus Cassandra baru dan memulai memulihkan data cadangan ke dalam cluster:
    ./apigeectl init  -f ../overrides-restore.yaml
    
    ./apigeectl apply  -f ../overrides-restore.yaml
    
  8. Setelah pemulihan selesai, lalu lintas harus dialihkan untuk menggunakan Cassandra cluster di namespace baru. Jalankan perintah berikut untuk mengalihkan traffic:

    kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
    
    kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}'
    
  9. Setelah pengalihan traffic selesai, Anda dapat mengonfigurasi ulang cadangan di cluster yang dipulihkan dengan menghapus konfigurasi restore dan menambahkan konfigurasi backup ke File overrides-restore.yaml. Ganti YOUR_RESTORE_NAMESPACE dengan nama namespace baru dibuat di langkah 1.
    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      backup:
        enabled: true
        serviceAccountPath: SA_JSON_FILE_PATH
        dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
        schedule: BACKUP_SCHEDULE_CODE
      ...
    

    Kemudian, terapkan konfigurasi backup dengan perintah berikut:

    ./apigeectl apply  -f ../overrides-restore.yaml