Tentang Pemeliharaan ZooKeeper

Edge for Private Cloud v. 4.17.05

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 yang ditentukan untuk menggunakan setidaknya tiga ZooKeeper node.

Gunakan ZK_HOSTS dan ZK_CLIENT_HOSTS properti di File konfigurasi Edge untuk menentukan node ZooKeeper. Untuk ujian

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

dalam hal ini:

  • ZK_HOSTS - Menentukan alamat IP {i>node<i} ZooKeeper. Alamat IP harus terdaftar 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 Pusat Data ini saja. IP alamat harus tercantum dalam urutan yang sama di semua node ZooKeeper 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 catatannya 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

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

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, memproses permintaan Management API, atau login ke UI Edge sampai 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

Menambahkan node 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 bahwa ansambel ZooKeeper masih dapat berfungsi, yang berarti masih ada kuorum jumlah 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.

Pertimbangan Pemeliharaan

Pemeliharaan ZooKeeper dapat dilakukan pada ansambel yang berfungsi penuh tanpa periode nonaktif jika dilakukan 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, maka 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, maka 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

Sebaiknya pertimbangkan 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, maka 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 di node ZooKeeper, instal nc:
    &gt; sudo yum install nc
  2. Jalankan perintah nc berikut pada node:
    &gt; statistik echo | {i>nc localhost<i} 2181

    Dengan 2181 adalah port ZooKeeper. Anda akan melihat output pada formulir:
    Versi Zookeeper: 3.4.5-1392090, dibuat pada 30/09/2012 17:52 GMT
    Klien: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Min/rata-rata/maks latensi: 0/0/0
    Diterima: 1
    Terkirim: 0
    Koneksi: 1
    Luar biasa: 0
    Zxid: 0xc00000044
    Mode: pengikut
    Jumlah node: 653


    Di baris Mode output untuk node, Anda akan melihat pengamat, pemimpin, atau pengikut (artinya pemilih yang bukan pemimpin) bergantung pada konfigurasi node.

    Catatan: Dalam penginstalan Edge mandiri dengan satu node ZooKeeper, Mode ditetapkan ke mandiri.
  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 pada seluruh Pusat Data
  • Lanjutkan pemeliharaan ke server berikutnya setelah server sebelumnya beroperasi
  • Menggunakan perintah nc untuk memeriksa node ZooKeeper