Tentang pemeliharaan ZooKeeper

Edge untuk Private Cloud v4.18.05

Ansambel ZooKeeper dirancang untuk tetap berfungsi, tanpa kehilangan data, meskipun satu atau beberapa node ZooKeeper hilang. Ketahanan ini dapat digunakan secara efektif untuk melakukan pemeliharaan pada 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 perubahan konfigurasi. Semua topologi Edge yang didukung untuk sistem produksi menentukan untuk menggunakan setidaknya tiga node ZooKeeper.

Gunakan properti ZK_HOSTS dan ZK_CLIENT_HOSTS dalam file konfigurasi Edge untuk menentukan node ZooKeeper. Untuk ujian

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

Dengan keterangan:

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

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

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

    Dalam satu penginstalan Pusat Data, node ini sama dengan 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 pemilih. Artinya, semua node berpartisipasi dalam memilih pemimpin ZooKeeper. Anda dapat menyertakan pengubah :observer dengan ZK_HOSTS untuk menunjukkan bahwa catatan adalah node observer, dan bukan pemilih. Node observer tidak berpartisipasi dalam pemilihan pemimpin.

Anda biasanya menentukan pengubah :observer saat membuat beberapa Pusat Data Edge, atau saat satu Pusat Data memiliki sejumlah besar node ZooKeeper. Misalnya, pada penginstalan Edge 12 host dengan dua Pusat Data, ZooKeeper pada node 9 di Pusat Data 2 menjadi pengamat:

Selanjutnya, Anda menggunakan 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

Dalam penginstalan ZooKeeper multinode, salah satu node ditetapkan sebagai posisi teratas. Semua node ZooKeeper lainnya ditetapkan sebagai pengikut. Meskipun operasi baca dapat terjadi dari node ZooKeeper mana pun, semua permintaan tulis diteruskan ke pemimpin. Misalnya, Pemroses Pesan baru ditambahkan ke Edge. Informasi itu disampaikan kepada pemimpin ZooKeeper. Semua pengikut kemudian mereplikasi data tersebut.

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

Jika kuorum node pemilih tidak tersedia, pemimpin tidak dapat dipilih. Dalam skenario ini, Zookeeper tidak dapat melayani permintaan. Artinya, Anda tidak dapat mengajukan permintaan ke Server Edge Management, memproses permintaan Management 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 satu node pemilih yang tersedia, 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 observer
  • Kuorum didasarkan pada lima pemilih di kedua Pusat Data, dan oleh karena itu merupakan tiga node pemilih yang berfungsi
  • Jika hanya tersedia dua node pemilih atau kurang, ansambel ZooKeeper tidak dapat berfungsi

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 pengamat.

Anda ingin memastikan memiliki node pemilih yang cukup sehingga jika satu atau beberapa node pemilih tidak aktif, ansambel ZooKeeper masih dapat berfungsi, artinya masih ada kuorum node pemilih. Dengan menambahkan node pemilih, Anda meningkatkan ukuran kuorum, sehingga Anda dapat menoleransi lebih banyak node pemilih yang dihentikan.

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

Daripada menambahkan node pemilih, Anda dapat menambahkan node observer. Menambahkan node observer akan meningkatkan performa pembacaan sistem secara keseluruhan tanpa menambah overhead memilih pemimpin karena node observer tidak memberikan suara dan tidak memengaruhi ukuran kuorum. Oleh karena itu, jika node observer tidak aktif, hal tersebut tidak memengaruhi kemampuan ansambel untuk memilih pemimpin. Namun, kehilangan node observer dapat menyebabkan penurunan performa baca ansambel ZooKeeper karena jumlah node yang tersedia untuk permintaan data layanan lebih sedikit.

Dalam satu Pusat Data, Apigee merekomendasikan agar Anda tidak memiliki lebih dari lima pemilih, berapa pun jumlah node observernya. Di dua Pusat Data, Apigee merekomendasikan agar Anda tidak memiliki lebih dari sembilan pemilih (lima di satu Pusat Data dan empat di pemilih lainnya). Anda kemudian dapat menambahkan node observer 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 node pada satu waktu. Dengan memastikan bahwa hanya satu node ZooKeeper yang nonaktif pada satu waktu, Anda dapat memastikan bahwa selalu ada kuorum node pemilih yang tersedia untuk memilih pemimpin.

Pemeliharaan di beberapa pusat data

Saat bekerja dengan beberapa Pusat Data, ingat bahwa ansambel ZooKeeper tidak dapat membedakan beberapa Pusat Data. Majelis ZooKeeper menggabungkan semua node ZooKeeper di semua Pusat Data sebagai satu ansambel.

Lokasi node pemilih di Pusat Data tertentu bukan merupakan faktor saat ZooKeeper melakukan perhitungan kuorum. Setiap node dapat turun di seluruh Pusat Data, tetapi selama kuorum dipertahankan di seluruh ansambel, ZooKeeper akan tetap berfungsi.

Implikasi pemeliharaan

Pada waktu tertentu, Anda harus menonaktifkan node ZooKeeper untuk melakukan pemeliharaan, baik berupa node pemilih maupun node observer. Misalnya, Anda mungkin harus mengupgrade versi Edge pada node, mesin yang menghosting ZooKeeper mungkin gagal, atau node mungkin menjadi tidak tersedia karena beberapa alasan lain, seperti error jaringan.

Jika node yang turun adalah node observer, maka performa ansambel ZooKeeper akan sedikit menurun hingga node tersebut dipulihkan. Jika node adalah node pemilih, node tersebut dapat memengaruhi kelangsungan atau tidaknya ansambel ZooKeeper karena hilangnya node yang berpartisipasi dalam proses pemilihan pemimpin. Terlepas dari alasan menurunnya node pemilih, penting untuk menjaga kuorum node pemilih yang tersedia.

Prosedur pemeliharaan

Anda harus mempertimbangkan untuk melakukan prosedur pemeliharaan apa pun hanya setelah memastikan bahwa ansambel ZooKeeper berfungsi. Hal ini mengasumsikan bahwa node pengamat berfungsi dan bahwa ada cukup node pemilih yang tersedia selama pemeliharaan untuk mempertahankan kuorum.

Jika kondisi tersebut terpenuhi, ansambel ZooKeeper dengan ukuran arbitrer dapat menoleransi hilangnya satu node pada titik mana pun tanpa kehilangan data atau dampak yang berarti terhadap performa. Artinya, Anda bebas melakukan pemeliharaan pada node mana pun dalam ansambel selama berada di satu node 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:
    echo stat | nc localhost 2181

    Dengan 2181 sebagai port ZooKeeper. Anda akan melihat output dalam bentuk:

    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 melakukannya satu node dalam satu waktu. Perlu diingat:

  • Anda harus menjaga kuorum node pemilih selama pemeliharaan untuk memastikan ansambel ZooKeeper tetap berfungsi
  • Menurunkan simpul pengamat tidak memengaruhi kuorum atau kemampuan untuk memilih pemimpin
  • Kuorum dihitung di semua node ZooKeeper di semua Pusat Data
  • Lanjutkan dengan pemeliharaan ke server berikutnya setelah server sebelumnya beroperasi
  • Menggunakan perintah nc untuk memeriksa node ZooKeeper