Tentang pemeliharaan ZooKeeper

Edge untuk Private Cloud v4.19.01

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

Gunakan properti ZK_HOSTS dan ZK_CLIENT_HOSTS dalam 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 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 node 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 2:

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

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

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

Pertimbangan untuk 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 yang tersedia. 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.

Menghapus node Zookeeper

Ada banyak alasan mengapa node Zookeeper perlu dihapus; misalnya, node rusak atau ditambahkan ke lingkungan yang salah.

Bagian ini menjelaskan cara menghapus node Zookeeper saat node 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 node ZooKeeper yang tersisa:
    /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 melakukannya pada satu node dalam 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, Anda dapat memperkirakan sedikit penurunan pada performa ansambel ZooKeeper 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

Lakukan prosedur pemeliharaan hanya setelah memastikan ansambel ZooKeeper berfungsi. Hal ini mengasumsikan bahwa node pengamat berfungsi dan bahwa ada cukup node pemilih yang tersedia selama pemeliharaan untuk mempertahankan kuorum.

Saat kondisi tersebut terpenuhi, ansambel ZooKeeper dengan ukuran arbitrer dapat menoleransi hilangnya satu node kapan pun tanpa kehilangan data atau memberikan dampak yang signifikan 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 di node ZooKeeper, instal nc:
    sudo yum install nc
  2. Jalankan perintah nc berikut pada node, dengan 2181 sebagai port ZooKeeper:
    echo stat | nc localhost 2181

    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 dioperasikan.
  • Gunakan perintah nc untuk memeriksa node ZooKeeper.