Ensemble ZooKeeper dirancang agar tetap berfungsi, tanpa kehilangan data, meskipun terjadi kehilangan satu atau beberapa node ZooKeeper. 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, serta memberi tahu berbagai komponen tentang 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:
ZK_HOSTSmenentukan 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_HOSTSmenentukan 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 penginstalan Pusat Data tunggal, node ini sama dengan yang ditentukan oleh ZK_HOSTS. Dalam 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 leader ZooKeeper. Anda dapat menyertakan pengubah :observer dengan ZK_HOSTS untuk menandakan bahwa node tersebut 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 banyak node ZooKeeper. Misalnya, dalam
penginstalan Edge 12 host dengan dua Pusat Data, ZooKeeper di node 9 di Pusat Data 2 adalah
observer:

Kemudian, Anda menggunakan setelan berikut dalam 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 selengkapnya tentang node leader, voter, dan observer serta menjelaskan pertimbangan penambahan node voter dan observer.
Tentang pemimpin, pengikut, pemilih, dan pengamat
Dalam penginstalan ZooKeeper multi-node, salah satu node ditetapkan sebagai leader. Semua node ZooKeeper lainnya ditetapkan sebagai pengikut. Meskipun pembacaan dapat terjadi dari node ZooKeeper mana pun, semua permintaan tulis akan 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-satunya persyaratan untuk pemilihan pemimpin adalah harus ada kuorum node pemilih ZooKeeper yang berfungsi dan tersedia. Korum berarti lebih dari setengah dari semua node ZooKeeper pemilih, di semua Pusat Data, berfungsi.
Jika tidak ada kuorum node pemilih yang tersedia, tidak ada pemimpin yang dapat dipilih. Dalam skenario ini, ZooKeeper tidak dapat melayani permintaan. Artinya, Anda tidak dapat membuat permintaan ke Edge Management Server, memproses permintaan API, atau login ke New Edge UI hingga kuorum dipulihkan.
Misalnya, dalam penginstalan Pusat Data tunggal:
- Anda telah menginstal tiga node ZooKeeper
- Semua node ZooKeeper adalah pemilih
- Kuorumnya adalah dua node pemilih yang berfungsi
- Jika hanya satu node pemilih yang tersedia, ZooKeeper ensemble 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 ada tiga node pemilih yang berfungsi
- Jika hanya ada dua atau kurang dari dua node pemberi suara, maka ansambel ZooKeeper tidak dapat berfungsi
Pertimbangan untuk menambahkan node sebagai pemberi suara 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 harus memastikan memiliki cukup banyak node pemilih sehingga jika satu atau beberapa node pemilih tidak berfungsi, ansambel ZooKeeper masih dapat berfungsi, yang berarti masih ada kuorum node 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 memengaruhi performa penulisan secara negatif karena operasi penulisan memerlukan kuorum untuk menyetujui pemimpin. Waktu yang diperlukan untuk menentukan pemimpin didasarkan pada jumlah node pemilih, yang meningkat seiring Anda menambahkan lebih banyak node pemilih. Oleh karena itu, Anda tidak ingin menjadikan semua node sebagai pemilih.
Daripada menambahkan node pemilih, Anda dapat menambahkan node pengamat. Menambahkan node pengamat akan meningkatkan performa baca sistem secara keseluruhan tanpa menambah overhead pemilihan pemimpin karena node pengamat tidak memberikan suara dan tidak memengaruhi ukuran kuorum. Oleh karena itu, jika node pengamat mengalami gangguan, hal ini tidak akan memengaruhi kemampuan ansambel untuk memilih pemimpin. Namun, hilangnya node pengamat dapat menyebabkan penurunan performa baca ansambel ZooKeeper karena lebih sedikit node yang tersedia untuk melayani permintaan data.
Di satu Pusat Data, Apigee merekomendasikan agar Anda memiliki maksimal 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.
Menghapus node Zookeeper
Ada banyak alasan mengapa Anda mungkin ingin menghapus node Zookeeper; 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:
- Edit file konfigurasi otomatis dan hapus alamat IP node Zookeeper yang ingin Anda hapus.
- Jalankan kembali perintah
setupuntuk Zookeeper guna mengonfigurasi ulang node ZooKeeper yang tersisa:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- Mulai ulang semua node Zookeeper:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- 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 - Mengonfigurasi 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 - Konfigurasi ulang semua Message Processor:
/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 - 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 - 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 melakukannya pada satu node dalam satu waktu. Dengan memastikan bahwa hanya satu node ZooKeeper yang tidak berfungsi dalam 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, ingatlah bahwa ansambel ZooKeeper tidak membedakan antara Pusat Data. Assembly ZooKeeper melihat semua node ZooKeeper di semua Pusat Data sebagai satu ensemble.
Lokasi node pemilih di Pusat Data tertentu tidak menjadi faktor saat ZooKeeper melakukan penghitungan kuorum. Setiap node dapat mengalami gangguan 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 node pemilih maupun node pengamat. Misalnya, Anda mungkin harus mengupgrade versi Edge di node, komputer yang menghosting ZooKeeper mungkin gagal, atau node mungkin tidak tersedia karena alasan lain seperti error jaringan.
Jika node yang tidak berfungsi adalah node pengamat, Anda dapat mengharapkan sedikit penurunan performa ansambel ZooKeeper hingga node dipulihkan. Jika node adalah node pemilih, hal ini dapat memengaruhi kelangsungan ansambel ZooKeeper karena hilangnya node yang berpartisipasi dalam proses pemilihan pemimpin. Terlepas dari alasan node pemilih nonaktif, penting untuk mempertahankan kuorum node pemilih yang tersedia.
Prosedur pemeliharaan
Lakukan prosedur pemeliharaan hanya setelah memastikan bahwa ensemble ZooKeeper berfungsi. Hal ini mengasumsikan bahwa node observer berfungsi dan ada cukup node pemilih yang tersedia selama pemeliharaan untuk mempertahankan kuorum.
Jika kondisi ini terpenuhi, ansambel ZooKeeper dengan ukuran arbitrer dapat mentoleransi kehilangan satu node kapan saja tanpa kehilangan data atau dampak yang berarti pada performa. Artinya, Anda bebas melakukan pemeliharaan pada node mana pun dalam ensemble, asalkan dilakukan pada satu node dalam satu waktu.
Sebagai bagian dari pelaksanaan pemeliharaan, gunakan prosedur berikut untuk menentukan jenis node ZooKeeper (leader, voter, atau observer):
- Jika belum diinstal di node ZooKeeper, instal
nc:sudo yum install nc
- Jalankan perintah
ncberikut pada node, dengan 2181 sebagai 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
Di baris
Modepada output untuk node, Anda akan melihatobserver,leader, ataufollower(artinya pemilih yang bukan pemimpin) bergantung pada konfigurasi node. - Ulangi langkah 1 dan 2 pada setiap node ZooKeeper.
Ringkasan
Cara terbaik untuk melakukan pemeliharaan pada ensemble ZooKeeper adalah dengan melakukannya satu per satu node. Ingat:
- Anda harus mempertahankan kuorum node pemilih selama pemeliharaan untuk memastikan ensemble ZooKeeper tetap berfungsi.
- Menonaktifkan node observer tidak memengaruhi kuorum atau kemampuan untuk memilih leader.
- Kuorum dihitung di semua node ZooKeeper di semua Pusat Data.
- Lanjutkan pemeliharaan ke server berikutnya setelah server sebelumnya beroperasi.
- Gunakan perintah
ncuntuk memeriksa node ZooKeeper.