Tentang Pemeliharaan ZooKeeper

Edge for Private Cloud v. 4.17.01

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, serta 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. Contoh:

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

dalam hal ini:

  • ZK_HOSTS - Menentukan alamat IP node ZooKeeper. Alamat IP harus dicantumkan 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 Data Center, ini adalah node yang sama seperti yang ditentukan 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, semua node berpartisipasi dalam memilih pemimpin ZooKeeper. Anda dapat menyertakan pengubah “:observer” dengan ZK_HOSTS untuk menunjukkan bahwa catatan adalah node observer, bukan pemilih. Node observer 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, dalam penginstalan Edge 12 host dengan dua Pusat Data, ZooKeeper di node 9 di Pusat Data 2 adalah pengamat:

Kemudian, Anda menggunakan setelan berikut dalam file konfigurasi untuk Data Center 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, Message Processor baru ditambahkan ke Edge. Informasi tersebut ditulis ke pemimpin ZooKeeper. Semua pengikut kemudian mereplikasi data.

Pada waktu penginstalan Edge, Anda menetapkan setiap node ZooKeeper sebagai pemilih atau sebagai pengamat. Pemimpin kemudian dipilih oleh semua node ZooKeeper pemilih. Satu persyaratan untuk pemilihan pemimpin adalah harus ada kuorum node pemilih ZooKeeper yang berfungsi. Kuorum berarti lebih dari setengah dari semua node ZooKeeper pemilih, di semua Pusat Data, berfungsi.

Jika tidak ada kuorum jumlah node pemilih yang tersedia, pemimpin tidak dapat dipilih. Dalam skenario ini, Zookeeper tidak dapat 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 telah menginstal tiga node ZooKeeper
  • Semua node ZooKeeper adalah pemilih
  • Kuorum adalah dua node pemilih yang berfungsi
  • Jika hanya satu node pemilih yang tersedia, ensemble 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 pengamat

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

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 node pemilih, Anda meningkatkan ukuran kuorum, sehingga Anda dapat mentoleransi lebih banyak node pemilih yang tidak aktif.

Namun, menambahkan node pemilih tambahan dapat berdampak negatif pada performa penulisan karena operasi tulis operasi membutuhkan kuorum untuk menyetujui pemimpin. Waktu yang diperlukan untuk menentukan pemimpin didasarkan pada jumlah node pemilih, yang meningkat saat Anda menambahkan lebih banyak node pemilih. Oleh karena itu, Anda tidak ingin menjadikan semua pemilih node.

Daripada menambahkan node pemilih, Anda dapat menambahkan node observer. Menambahkan node observer akan meningkatkan performa baca sistem secara keseluruhan tanpa menambah overhead pemilihan pemimpin karena node observer tidak memberikan suara dan tidak memengaruhi ukuran kuorum. Oleh karena itu, jika {i>node<i} pengamat berjalan tidak mempengaruhi kemampuan ansambel untuk memilih 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.

Di satu Data Center, Apigee merekomendasikan agar Anda memiliki tidak lebih dari lima pemilih, terlepas dari jumlah node observer. Di dua Pusat Data, Apigee merekomendasikan agar Anda tidak memiliki lebih dari sembilan pemilih (lima di satu Pusat Data dan empat di Pusat Data lainnya). Kemudian, Anda dapat menambahkan node pengamat sebanyak 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 menggunakan beberapa Pusat Data, ingat bahwa ensemble ZooKeeper tidak membedakan antara Pusat Data. Assembly ZooKeeper melihat semua node ZooKeeper di semua Data Center sebagai satu ensemble.

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 akan tetap berfungsi.

Implikasi Pemeliharaan

Pada waktu yang berbeda, Anda harus mematikan node ZooKeeper untuk pemeliharaan, baik sebagai 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 node yang mengalami error adalah node observer, Anda dapat mengalami sedikit penurunan performa ensemble ZooKeeper hingga node 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.

Jika kondisi ini terpenuhi, ensemble ZooKeeper dengan ukuran arbitrer dapat mentoleransi hilangnya satu node kapan saja tanpa kehilangan data atau dampak yang signifikan terhadap performa. Artinya, Anda bebas melakukan pemeliharaan pada node mana pun dalam ensemble selama node tersebut berada di satu node pada satu waktu.

Sebagai bagian dari 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 ensembel ZooKeeper tetap berfungsi
  • Menghentikan node observer 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