Memigrasikan satu organisasi ke cluster lain

Halaman ini menjelaskan cara memigrasikan organisasi hybrid Apigee dari satu cluster Kubernetes ke cluster lain. Beberapa kasus yang memungkinkan Anda memigrasikan sebuah organisasi ke cluster lain adalah sebagai berikut:

  • Pusat data yang menghosting cluster yang ada tidak memiliki kapasitas lagi, atau sedang dinonaktifkan.
  • Cluster menjalankan infrastruktur lama atau versi lama Kubernetes, dan Anda ingin bermigrasi ke cluster dengan infrastruktur yang lebih baru.
  • Anda ingin memindahkan organisasi dari cluster multi-org ke dalam cluster terpisah.

Perlu diperhatikan bahwa ada risiko dan batasan saat memigrasikan organisasi ke cluster hybrid lain. Baca detailnya di bagian Batasan sebelum melakukan migrasi.

Batasan

Batasan berikut berlaku saat memigrasikan organisasi hybrid ke cluster Kubernetes lain:

  • Ada risiko kehilangan data saat memindahkan data organisasi ke cluster Kubernetes baru. Anda harus mencadangkan data untuk semua organisasi dalam cluster Kubernetes, menggunakan petunjuk pencadangan hybrid, sebelum memigrasikan organisasi.
  • Ukuran data maksimum yang didukung untuk migrasi organisasi adalah 5 GB di semua keyspace organisasi, tidak termasuk cache dan kuota.
  • Data cache tidak akan dimigrasikan. Hybrid membangun ulang data cache.
  • Data kuota tidak akan dimigrasikan. Hybrid mereset data kuota.
  • Anda hanya dapat memigrasikan organisasi ke cluster Kubernetes yang tidak berisi deployment hybrid. Bermigrasi ke cluster dengan deployment hybrid yang ada tidak didukung.
  • Organisasi yang sedang dimigrasikan hanya dapat dipindahkan ke cluster baru dengan deployment region tunggal. Setelah deployment satu region aktif dan berjalan, Anda dapat mengikuti proses perluasan region, yang dijelaskan dalam Deployment multi-region, untuk memperluasnya ke region lain.
  • Klaster Cassandra harus beroperasi dengan kondisi baik di semua region.

Memigrasikan organisasi

Ikuti petunjuk di bawah ini untuk memigrasikan organisasi hybrid dari satu cluster Kubernetes ke cluster lain:

  1. Jika belum diaktifkan, aktifkan pencadangan di cluster Kubernetes yang berisi organisasi hybrid yang akan dimigrasikan. Lihat Ringkasan pencadangan Casssandra untuk mengetahui informasi tentang pencadangan hybrid.
  2. Mulai tugas pencadangan hybrid menggunakan perintah berikut:
    kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup <backup job name>

    <backup job name> dapat berupa nama penampung yang valid.

  3. Setelah tugas pencadangan selesai, gunakan petunjuk di bagian Pencadangan pemantauan berikut untuk memverifikasi bahwa pencadangan telah berhasil diselesaikan:
    • "Memeriksa status tugas pencadangan"
    • "Periksa log cadangan"
  4. Setelah memverifikasi bahwa pencadangan berhasil, catat nomor ID di akhir log pencadangan. Misalnya, log pencadangan yang berhasil harus berisi baris seperti berikut:
    INFO: completed upload for 20230207004250
    Catat bilangan multi-digit di akhir baris. Anda akan memerlukan nomor ini nanti.
  5. Alihkan konteks Kubernetes ke cluster Kubernetes tujuan:
    kubectl config use-context <destination cluster name> # <destination cluster name>

    dengan <destination cluster name> adalah nama cluster Kubernetes tujuan.

  6. Pulihkan data cadangan ke dalam cluster Kubernetes tujuan menggunakan petunjuk dalam artikel Memulihkan di satu region.
    • Gunakan file Replace.yaml untuk organisasi yang sedang dimigrasikan ke deployment hybrid tujuan.
    • Jangan lupa menyetel nilai restore:snapshotTimestamp ke angka multi-digit yang ditunjukkan oleh log cadangan di langkah 4. Lihat Memulihkan di satu region.
  7. Setelah pemulihan selesai, hapus semua data organisasi, selain data untuk organisasi yang sedang dimigrasikan, dari cluster Kubernetes tujuan. File cadangan campuran berisi data untuk semua organisasi, termasuk yang mungkin tidak ingin Anda migrasikan. Setelah deployment hybrid tujuan dipulihkan, Anda harus menghapus semua data organisasi tambahan yang disalin ke deployment, menggunakan langkah-langkah berikut:
    1. Verifikasi bahwa konteks saat ini adalah konteks yang benar untuk cluster Kubernetes tujuan:
      kubectl config current-context
    2. Mengeksekusi ke pod apigee-cassandra-default-0:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
    3. Jalankan perintah berikut:
      find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2 -printf "%f\n"

      Lihat Mendapatkan nama organisasi yang dimigrasikan untuk mendapatkan petunjuk tentang cara menemukan <migrated org name>.

      Salin daftar semua nama yang ditampilkan dalam output. Anda akan membutuhkan daftar ini di langkah 7. f.

    4. Keluar dari pod apigee-cassandra-default-0.
    5. Buat pod klien debug Cassandra menggunakan petunjuk di Membuat penampung klien untuk proses debug. Lanjutkan ke langkah berikutnya setelah mendapatkan perintah cqlsh.
    6. Jalankan perintah berikut di perintah cqlsh:
      • desc keyspaces;

        Pastikan perintah ini tidak menampilkan error.

      • Untuk setiap nama dalam daftar yang dibuat di langkah 7. c., jalankan perintah berikut:
        drop keyspace <name>
    7. Keluar dari pod klien debug Cassandra.
    8. Setelah menjalankan perintah cqlsh, jalankan perintah berikut pada semua pod Cassandra di cluster Kubernetes tujuan:
      • kubectl exec -it -n apigee  -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2

        Lihat Mendapatkan nama organisasi yang dimigrasikan untuk mendapatkan petunjuk tentang cara menemukan <migrated org name>.

      • find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '**' -type d -maxdepth 2 -exec rm -rf {} +
    9. Keluar dari pod Cassandra.
  8. Alihkan konteks Kubernetes ke cluster Kubernetes sumber:
    kubectl config use-context <source cluster name>

    dengan <source cluster name> adalah nama cluster Kubernetes sumber.

  9. Hapus organisasi yang dimigrasikan dari cluster Kubernetes sumber. Pastikan Anda menggunakan file overrides.yaml untuk organisasi dalam perintah hapus:
    1. Pastikan bahwa konteks saat ini adalah konteks yang benar untuk cluster Kubernetes sumber:
      kubectl config current-context

      Jika perlu, setel konteks kubernetes ke cluster dan organisasi harus dinonaktifkan.

      Cantumkan konteks Anda saat ini untuk melihat nama konteks untuk setiap cluster:

      kubectl config get-contexts

      Tetapkan konteks ke cluster dan region yang ingin Anda nonaktifkan:

      kubectl config use-context CONTEXT_NAME

      Dengan CONTEXT_NAME adalah nama konteks untuk cluster dan region.

      Contoh:

          kubectl config get-contexts
          CURRENT   NAME                                                   CLUSTER                                                AUTHINFO                                               NAMESPACE
                    gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        apigee
          *         gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        apigee
                    gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           apigee
      
          kubectl config use-context gke_example-org-1_us-west1_example-cluster-2
    2. Hapus virtualhost.

      Helm

      Ulangi langkah ini untuk setiap grup lingkungan:

      helm -n apigee delete ENV_GROUP_NAME
      

      apigeectl

      $APIGEECTL_HOME/apigeectl delete --settings virtualhost -f OVERRIDES_FILE.yaml
    3. Menghapus lingkungan.

      Helm

      Ulangi langkah ini untuk setiap lingkungan:

      helm -n apigee delete ENV_NAME
      

      apigeectl

      $APIGEECTL_HOME/apigeectl delete --all-envs -f OVERRIDES_FILE.yaml
    4. Hapus org Apigee.

      Helm

      helm -n apigee delete ORG_NAME
      

      apigeectl

      $APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml --org
    5. Jalankan ke pod apigee-cassandra-default-0:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
    6. Jalankan perintah berikut:
      find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -printf "%f\n"

      Lihat Mendapatkan nama organisasi yang dimigrasikan untuk mendapatkan petunjuk tentang cara menemukan <migrated org name>.

      Salin daftar semua nama yang ditampilkan dalam output. Anda akan memerlukan daftar ini di langkah 9. j.

    7. Keluar dari pod apigee-cassandra-default-0.
    8. Buat pod klien debug Cassandra menggunakan petunjuk di Membuat penampung klien untuk proses debug. Lanjutkan ke langkah berikutnya setelah mendapatkan perintah cqlsh.
    9. Jalankan perintah berikut pada prompt cqlsh:
      desc keyspaces;

      Pastikan perintah ini tidak menampilkan error.

    10. Untuk setiap nama dalam daftar yang dibuat di langkah 10. f., jalankan perintah berikut:
      drop keyspace <name>;
    11. Keluar dari pod klien debug Cassandra.
    12. Setelah menjalankan perintah cqlsh, jalankan perintah berikut pada semua pod Cassandra di cluster Kubernetes sumber:
      • kubectl exec -it -n apigee <cassandra pod name> -- /bin/bash
      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2

        Lihat Mendapatkan nama organisasi yang dimigrasikan untuk mendapatkan petunjuk tentang cara menemukan <migrated org name>.

      • find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
    13. Keluar dari pod Cassandra.

Mendapatkan nama organisasi yang dimigrasikan

Beberapa langkah dalam prosedur yang dijelaskan di bagian sebelumnya memerlukan nama organisasi yang dimigrasikan. Untuk mendapatkan nama organisasi yang dimigrasikan, lakukan langkah berikut:

  1. Dapatkan nama organisasi dari file override.yaml org. Pastikan Anda memeriksa file override.yaml untuk organisasi yang sedang dimigrasikan.
  2. Jika nama organisasi berisi tanda hubung "-", ganti semua tanda hubung "-" dengan garis bawah "_".