Tentang pemeliharaan ZooKeeper

Ansambel ZooKeeper dirancang untuk tetap berfungsi, tanpa kehilangan data, meskipun hilangnya satu atau beberapa node ZooKeeper. Ketahanan ini dapat digunakan secara efektif untuk melakukan pemeliharaan di Node ZooKeeper tanpa periode nonaktif sistem.

Tentang ZooKeeper dan Edge

Di Edge, node ZooKeeper berisi data konfigurasi tentang lokasi dan konfigurasi berbagai komponen Edge, dan memberi tahu berbagai komponen tentang perubahan konfigurasi. Semua topologi Edge yang didukung untuk sistem produksi, menggunakan setidaknya tiga ZooKeeper node.

Gunakan properti ZK_HOSTS dan ZK_CLIENT_HOSTS di File konfigurasi Edge untuk menentukan node ZooKeeper. Contoh:

ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Dengan keterangan:

  • ZK_HOSTS menentukan alamat IP node ZooKeeper. Alamat IP harus tercantum dalam urutan yang sama di semua node ZooKeeper.

    Dalam lingkungan multi-Pusat Data, cantumkan semua node ZooKeeper dari semua Pusat Data.

  • ZK_CLIENT_HOSTS menentukan alamat IP node ZooKeeper yang digunakan oleh node ini Khusus Pusat Data. Alamat IP harus tercantum dalam urutan yang sama pada semua node ZooKeeper di di Pusat Data.

    Dalam satu penginstalan Pusat Data, ini adalah node yang sama seperti yang ditetapkan oleh ZK_HOSTS. Di lingkungan multi-Pusat Data, file konfigurasi Edge untuk setiap Pusat Data hanya boleh mencantumkan Node ZooKeeper untuk Pusat Data tersebut.

Secara default, semua node ZooKeeper ditetapkan sebagai node voter. Artinya, beberapa node semua berpartisipasi dalam memilih pemimpin ZooKeeper. Anda dapat menyertakan Pengubah :observer dengan ZK_HOSTS untuk menunjukkan bahwa node adalah node pengamat, bukan pemilih. Sebuah {i>node<i} pengamat tidak berpartisipasi dalam pemilihan pemimpin.

Anda biasanya menentukan pengubah :observer saat membuat beberapa Data Edge Center, atau jika satu Pusat Data memiliki sejumlah besar node ZooKeeper. Misalnya, di Instalasi Edge 12-host dengan dua Pusat Data, ZooKeeper pada node 9 di Pusat Data 2 adalah {i>observer <i}(pengamat):

Kemudian, gunakan setelan berikut di file konfigurasi untuk Pusat Data 1:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

Dan untuk Pusat Data 2:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

Bagian berikut berisi informasi lebih lanjut tentang pemimpin, pemilih, dan node observer dan menjelaskan pertimbangan dalam menambahkan node pemilih dan pengamat.

Tentang pemimpin, pengikut, pemilih, dan pengamat

Pada penginstalan ZooKeeper multi-node, salah satu node ditetapkan sebagai leader. Semua node ZooKeeper lainnya ditetapkan sebagai pengikut. Sedangkan operasi baca dapat dilakukan dari di node ZooKeeper, semua permintaan tulis diteruskan ke pemimpin. Misalnya, pesan baru Prosesor ditambahkan ke Edge. Informasi itu dituliskan kepada pemimpin ZooKeeper. Semua pengikut kemudian mereplikasi datanya.

Pada waktu penginstalan Edge, Anda menetapkan setiap node ZooKeeper sebagai pemilih atau sebagai pengamat. Tujuan pemimpin kemudian dipilih oleh semua {i>node<i} ZooKeeper pemilih. Satu-satunya persyaratan untuk pemilihan pemimpinnya adalah harus ada kuorum node pemilih ZooKeeper yang berfungsi. J kuorum berarti lebih dari setengah dari seluruh node pemilih ZooKeeper, di semua Pusat Data, fungsional.

Jika tidak ada kuorum jumlah node pemilih yang tersedia, pemimpin tidak dapat dipilih. Dalam skenario ini, Zookeeper tidak bisa melayani permintaan. Artinya, Anda tidak dapat mengajukan permintaan ke Pengelolaan Edge Server, proses permintaan API, atau login ke UI Edge hingga kuorum dipulihkan.

Misalnya, dalam satu penginstalan Pusat Data:

  • Anda menginstal tiga node ZooKeeper
  • Semua node ZooKeeper adalah pemilih
  • Kuorum adalah dua node pemilih yang berfungsi
  • Jika hanya tersedia satu node pemilih, maka ansambel ZooKeeper tidak dapat berfungsi

Dalam penginstalan dengan dua Pusat Data:

  • Anda menginstal tiga node ZooKeeper per Pusat Data, dengan total enam node
  • Pusat Data 1 memiliki tiga node pemilih
  • Pusat Data 2 memiliki dua node pemilih dan satu node pengamat
  • Kuorum didasarkan pada lima pemilih di kedua Pusat Data, sehingga tiga node pemilih yang berfungsi
  • Jika hanya dua atau kurang {i>node<i} pemilih yang tersedia, maka ansambel ZooKeeper tidak dapat fungsi

Pertimbangan untuk menambahkan {i>node<i} sebagai pemilih atau observer

Persyaratan sistem mungkin mengharuskan Anda menambahkan node ZooKeeper tambahan ke Edge penginstalan. Dokumentasi Menambahkan node ZooKeeper menjelaskan cara menambahkan node ZooKeeper tambahan ke Edge. Saat menambahkan node ZooKeeper, Anda harus mempertimbangkan jenis {i>node<i} yang akan ditambahkan: pemilih atau pengamat.

Anda ingin memastikan ada cukup {i>node<i} pemilih sehingga jika satu atau beberapa {i>node<i} pemilih tidak aktif ansambel ZooKeeper masih dapat berfungsi, yang berarti masih ada kuorum node pemilih yang tersedia. Dengan menambahkan {i>node<i} pemberi suara, Anda meningkatkan ukuran kuorum, dan karena itu Anda bisa menoleransi lebih banyak node pemilih.

Namun, menambahkan node pemilih tambahan dapat berdampak negatif pada performa operasi tulis karena operasi tulis operasi membutuhkan kuorum untuk menyetujui pemimpin. Waktu yang diperlukan untuk menentukan posisi teratas didasarkan pada jumlah node pemilih, yang akan meningkat seiring dengan bertambahnya jumlah node pemilih. Oleh karena itu, Anda tidak ingin membuat semua pemilih node.

Daripada menambahkan node pemilih, Anda dapat menambahkan node observer. Menambahkan node observer akan meningkatkan kinerja pembacaan sistem secara keseluruhan tanpa menambah biaya untuk memilih pemimpin karena node pengamat tidak memberikan suara dan tidak mempengaruhi ukuran kuorum. Oleh karena itu, jika {i>node<i} pengamat berjalan mati, hal itu tidak mempengaruhi kemampuan ansambel untuk memilih seorang pemimpin. Namun, kehilangan observer {i>node <i}dapat menyebabkan penurunan kinerja membaca ansambel ZooKeeper karena ada lebih sedikit node yang tersedia untuk melayani permintaan data.

Dalam satu Pusat Data, Apigee merekomendasikan agar Anda memiliki maksimal lima pemilih jumlah node pengamat. Di dua Pusat Data, Apigee merekomendasikan agar Anda tidak lagi dari sembilan pemilih (lima di satu Pusat Data dan empat di lainnya). Anda kemudian dapat menambahkan sebanyak {i>node<i} pengamat yang diperlukan untuk persyaratan sistem Anda.

Menghapus node Zookeeper

Ada banyak alasan Anda mungkin ingin menghapus {i>node<i} Zookeeper; misalnya, sebuah {i>node<i} mendapat rusak atau ditambahkan ke lingkungan yang salah.

Bagian ini menjelaskan cara menghapus node Zookeeper saat node sedang tidak aktif dan tidak dapat dijangkau.

Untuk menghapus node Zookeeper:

  1. Edit file konfigurasi senyap Anda dan hapus alamat IP node Zookeeper yang ingin dihapus.
  2. Jalankan ulang perintah setup untuk Zookeeper guna mengonfigurasi ulang ZooKeeper yang tersisa node:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. Mulai ulang semua node Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Konfigurasi ulang node Server Pengelolaan:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Konfigurasi ulang semua Router:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. Konfigurasi ulang semua Pemroses Pesan:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. Konfigurasi ulang semua node Qpid:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. Konfigurasi ulang semua node Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

Pertimbangan pemeliharaan

Anda dapat melakukan pemeliharaan ZooKeeper pada ansambel yang berfungsi penuh tanpa periode nonaktif jika Anda menjalankannya pada satu {i>node<i} dalam satu waktu. Dengan memastikan bahwa hanya satu {i>node<i} ZooKeeper yang berada di kapan saja, Anda dapat memastikan bahwa selalu ada kuorum jumlah pemilih yang tersedia untuk memilih pemimpin.

Pemeliharaan di seluruh beberapa pusat data

Saat bekerja dengan beberapa Pusat Data, ingat bahwa ansambel ZooKeeper tidak membedakan Pusat Data. Rangkaian ZooKeeper melihat semua node ZooKeeper di seluruh Pusat Data sebagai satu ansambel.

Lokasi node pemilih di Pusat Data tertentu bukanlah faktor saat ZooKeeper menjalankan perhitungan kuorum. Masing-masing {i>node<i} dapat turun di seluruh Pusat Data, tetapi selama kuorum dipertahankan di seluruh ansambel, ZooKeeper tetap berfungsi.

Implikasi pemeliharaan

Pada waktu yang berbeda, Anda harus menonaktifkan node ZooKeeper untuk pemeliharaan, baik untuk pemilih atau simpul pengamat. Misalnya, Anda mungkin harus meningkatkan versi Edge pada {i>node<i}, komputer yang menghosting ZooKeeper mungkin gagal, atau node mungkin tidak tersedia untuk beberapa seperti kesalahan jaringan.

Jika {i>node<i} yang menurun adalah {i>node<i} pengamat, Anda akan melihat sedikit penurunan pada pertunjukan ansambel ZooKeeper sampai {i>node<i} dipulihkan. Jika node adalah pemilih {i>node<i}, itu dapat mempengaruhi kelangsungan hidup ansambel ZooKeeper karena hilangnya {i>node<i} yang berpartisipasi dalam proses pemilihan ketua. Terlepas dari alasan node pemilih berada penting untuk mempertahankan kuorum {i>node<i} pemilih yang tersedia.

Prosedur pemeliharaan

Melakukan prosedur pemeliharaan hanya setelah memastikan bahwa ZooKeeper ansambel bersifat fungsional. Hal ini mengasumsikan bahwa node observer bersifat fungsional dan bahwa ada cukup node pemilih tersedia selama pemeliharaan untuk mempertahankan kuorum.

Ketika kondisi ini terpenuhi, ansambel ZooKeeper dengan ukuran arbitrer dapat menoleransi hilangnya satu {i>node<i} pada titik mana pun tanpa kehilangan data atau dampak yang berarti terhadap kinerja. Ini berarti Anda bebas melakukan pemeliharaan pada {i>node<i} mana pun dalam ansambel selama masih berada di satu {i>node<i} pada satu waktu.

Sebagai bagian dari pelaksanaan pemeliharaan, gunakan prosedur berikut untuk menentukan jenis Node ZooKeeper (pemimpin, pemilih, atau pengamat):

  1. Jika tidak diinstal pada node ZooKeeper, instal nc:
    sudo yum install nc
  2. Jalankan perintah nc berikut pada node, dengan 2181 adalah port ZooKeeper:
    echo stat | nc localhost 2181

    Anda akan melihat output pada formulir:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    Pada baris Mode output untuk node, Anda akan melihat observer, leader, atau follower (artinya pemilih yang bukan pemimpin) bergantung pada konfigurasi node.

  3. Ulangi langkah 1 dan 2 pada setiap node ZooKeeper.

Ringkasan

Cara terbaik untuk melakukan pemeliharaan pada ansambel ZooKeeper adalah dengan melakukan satu node pada baik. Ingat:

  • Anda harus mempertahankan kuorum node pemilih selama pemeliharaan untuk memastikan ZooKeeper ansambel tetap berfungsi.
  • Menghapus node pengamat tidak memengaruhi kuorum atau kemampuan untuk memilih pemimpin.
  • Kuorum dihitung di seluruh node ZooKeeper di seluruh Pusat Data.
  • Lanjutkan pemeliharaan ke server berikutnya setelah server sebelumnya beroperasi.
  • Gunakan perintah nc untuk memeriksa node ZooKeeper.