Mempertahankan deployment Spanner Omni

Dokumen ini menjelaskan cara mempertahankan deployment Spanner Omni. Mempertahankan deployment Spanner Omni mencakup pemeriksaan kesehatan rutin, menonaktifkan elemen yang tidak sehat, dan mengganti node server atau disk yang rusak untuk memastikan stabilitas dan konsistensi cluster. Mengelola kesehatan database melindungi database Anda dari gangguan yang tidak direncanakan dan mempertahankan redundansi grup konsensus Paxos yang mendasarinya.

Melakukan pemeliharaan membantu Anda:

  • Memastikan ketersediaan tinggi: Menyediakan ulang virtual machine (VM) yang tidak sehat atau pod untuk mempertahankan redundansi server database. Hal ini membantu Anda menjaga aplikasi tetap berjalan jika hardware gagal.

  • Melindungi keamanan dan integritas data: Menonaktifkan node dengan disk yang rusak untuk mencegah kegagalan penyimpanan menyebar ke bagian lain database. Hal ini juga memastikan bahwa server yang terputus tidak mencatat update yang bertentangan.

Sebelum memulai

Sebelum melakukan pemeliharaan pada deployment Kubernetes, Anda harus melakukan hal berikut:

Mengganti server

Anda mungkin perlu mengganti server dalam deployment untuk mengatasi kesalahan sistem atau penyimpanan.

Mengganti server root

Untuk mengganti server root, pilih tab untuk lingkungan Anda:

Kubernetes

Untuk mengganti server root dalam deployment Kubernetes, lakukan langkah-langkah berikut. Meskipun menambahkan lebih banyak server root ke deployment Kubernetes yang ada tidak didukung, Anda dapat mengganti server root yang ada untuk mengatasi error yang tidak dapat dipulihkan yang Anda alami.

  1. Hapus server yang ingin Anda ganti:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ganti kode berikut:

    • SERVER_ENDPOINT: Endpoint pod server yang akan dihapus, dalam format SERVER.pod.NAMESPACE:PORT—misalnya, spanner-a-1.pod.spanner-ns:15000. Untuk menemukan endpoint server dalam deployment, cantumkan server deployment dengan menjalankan spanner deployment servers list --zone=ZONE.
    • ZONE: Zona yang berisi server—misalnya, us-central1-a.

    Langkah ini mungkin memerlukan waktu beberapa menit, bergantung pada volume data di server. Spanner Omni memindahkan data dari server ini ke server lain dalam deployment. Pastikan penghapusan server selesai sebelum melanjutkan ke langkah berikutnya.

    Untuk melacak progres penghapusan, periksa status server:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Tunggu hingga perintah menampilkan error NOT_FOUND atau menunjukkan bahwa server tidak lagi terdaftar.

  2. Hapus klaim volume persisten (PVC) untuk pod yang menghosting server:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Ganti kode berikut:

    • DATA_VOLUME_NAME: Nama volume data—misalnya, data-volume-spanner-a-1. Untuk menemukan nama volume data, cantumkan PVC di namespace Anda dengan menjalankan kubectl get pvc -n NAMESPACE.
    • NAMESPACE: Namespace deployment—misalnya, spanner-ns.
  3. Hapus pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Ganti POD_NAME dengan nama pod server yang akan dihapus—misalnya, spanner-a-1.

    Kubernetes otomatis memulai server baru di pod pengganti dan melampirkan PVC baru.

  4. Tambahkan server baru ke deployment:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Pastikan argumen cocok dengan endpoint dan zona pod baru—misalnya, menggunakan spanner-a-1.pod.spanner-ns:15000 sebagai endpoint dan us-central1-a sebagai zona.

VM

Untuk mengganti server root dalam deployment VM, lakukan langkah-langkah berikut:

  1. Hapus server yang ingin Anda ganti:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ganti kode berikut:

    • SERVER_ENDPOINT: Alamat IP server atau nama host dan port—misalnya, spanner-vm-1.example.com:15000. Untuk menemukan endpoint server, cantumkan server deployment dengan menjalankan spanner deployment servers list --zone=ZONE.
    • ZONE: Zona yang berisi server—misalnya, us-central1-a.

    Langkah ini mungkin memerlukan waktu beberapa menit, bergantung pada volume data di server. Spanner Omni memindahkan data dari server ini ke server lain dalam deployment. Pastikan penghapusan server selesai sebelum melanjutkan ke langkah berikutnya.

    Untuk melacak progres penghapusan, periksa status server:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Tunggu hingga perintah menampilkan error NOT_FOUND atau menunjukkan bahwa server tidak lagi terdaftar.

  2. Sediakan ulang server dengan penyimpanan bersih seperti yang dijelaskan dalam Membuat deployment untuk Spanner Omni di VM:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    Ganti kode berikut:

    • HOSTNAME: FQDN atau nama host VM baru yang dapat di-resolve—misalnya, spanner-vm-1.example.com.
    • ZONE: Zona target—misalnya, us-central1-a.
    • BASE_DIR: Jalur tempat data disimpan—misalnya, ./span-dir.
  3. Tambahkan server baru ke deployment:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Pastikan argumen cocok dengan parameter server baru—misalnya, menggunakan spanner-vm-1.example.com:15000 sebagai endpoint dan us-central1-a sebagai zona.

Mengganti server non-root

Untuk mengganti server non-root, pilih tab untuk lingkungan Anda:

Kubernetes

Untuk mengganti server non-root dalam deployment Kubernetes, lakukan langkah-langkah berikut:

  1. Hapus server yang ingin Anda ganti:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ganti kode berikut:

    • SERVER_ENDPOINT: Endpoint pod server yang akan dihapus, dalam format SERVER.pod.NAMESPACE:PORT—misalnya, spanner-a-4.pod.spanner-ns:15000. Untuk menemukan endpoint server dalam deployment, cantumkan server deployment dengan menjalankan spanner deployment servers list --zone=ZONE.
    • ZONE: Zona yang berisi server—misalnya, us-central1-a.

    Langkah ini mungkin memerlukan waktu beberapa menit, bergantung pada volume data di server. Spanner Omni memindahkan data dari server ini ke server lain dalam deployment. Pastikan penghapusan server selesai sebelum melanjutkan ke langkah berikutnya.

    Untuk melacak progres penghapusan, periksa status server:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Tunggu hingga perintah menampilkan error NOT_FOUND atau menunjukkan bahwa server tidak lagi terdaftar.

  2. Hapus klaim volume persisten (PVC) untuk pod yang menghosting server:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Ganti kode berikut:

    • DATA_VOLUME_NAME: Nama volume data—misalnya, data-volume-spanner-a-4. Untuk menemukan nama volume data, cantumkan PVC di namespace Anda dengan menjalankan kubectl get pvc -n NAMESPACE.
    • NAMESPACE: Namespace deployment—misalnya, spanner-ns.
  3. Hapus pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Ganti POD_NAME dengan nama pod server yang akan dihapus—misalnya, spanner-a-4.

    Kubernetes otomatis memulai server baru di pod pengganti dan melampirkan PVC baru. Spanner Omni otomatis mendaftarkan server non-root baru ke dalam deployment.

VM

Untuk mengganti server non-root dalam deployment VM, lakukan langkah-langkah berikut:

  1. Hapus server yang ingin Anda ganti:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ganti kode berikut:

    • SERVER_ENDPOINT: Alamat IP server atau nama host dan port—misalnya, spanner-vm-4.example.com:15000. Untuk menemukan endpoint server, cantumkan server deployment dengan menjalankan spanner deployment servers list --zone=ZONE.
    • ZONE: Zona yang berisi server—misalnya, us-central1-a.

    Langkah ini mungkin memerlukan waktu beberapa menit, bergantung pada volume data di server. Spanner Omni memindahkan data dari server ini ke server lain dalam deployment. Pastikan penghapusan server selesai sebelum melanjutkan ke langkah berikutnya.

    Untuk melacak progres penghapusan, periksa status server:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Tunggu hingga perintah menampilkan error NOT_FOUND atau menunjukkan bahwa server tidak lagi terdaftar.

  2. Sediakan ulang server non-root dengan penyimpanan bersih seperti yang dijelaskan dalam Menambahkan server non-root. Server akan otomatis ditambahkan ke deployment.

Langkah berikutnya