กลุ่ม ZooKeeper ได้รับการออกแบบมาให้ทำงานต่อไปได้โดยไม่มีข้อมูลสูญหาย แม้ว่าโหนด ZooKeeper จะสูญหายไปอย่างน้อย 1 โหนดก็ตาม ความยืดหยุ่นนี้สามารถใช้เพื่อบำรุงรักษาโหนด ZooKeeper ได้อย่างมีประสิทธิภาพโดยไม่มีช่วงเวลาที่ระบบหยุดทำงาน
เกี่ยวกับ ZooKeeper และ Edge
ใน Edge โหนด ZooKeeper จะมีข้อมูลการกำหนดค่าเกี่ยวกับตำแหน่งและการกำหนดค่าของคอมโพเนนต์ Edge ต่างๆ และแจ้งเตือนคอมโพเนนต์ต่างๆ เกี่ยวกับการเปลี่ยนแปลงการกำหนดค่า โทโพโลยี Edge ที่รองรับทั้งหมดสำหรับระบบเวอร์ชันที่ใช้งานจริงจะใช้โหนด ZooKeeper อย่างน้อย 3 โหนด
ใช้พร็อพเพอร์ตี้ ZK_HOSTS และ ZK_CLIENT_HOSTS ในไฟล์การกำหนดค่า Edge เพื่อระบุโหนด ZooKeeper เช่น
ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
สถานที่:
ZK_HOSTSระบุที่อยู่ IP ของโหนด ZooKeeper ที่อยู่ IP ต้องแสดงตามลำดับเดียวกันในโหนด ZooKeeper ทั้งหมดในสภาพแวดล้อมแบบหลายศูนย์ข้อมูล ให้แสดงรายการโหนด ZooKeeper ทั้งหมดจากศูนย์ข้อมูลทั้งหมด
ZK_CLIENT_HOSTSระบุที่อยู่ IP ของโหนด ZooKeeper ที่ใช้โดยศูนย์ข้อมูลนี้เท่านั้น ที่อยู่ IP ต้องแสดงตามลำดับเดียวกันในโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลในการติดตั้งศูนย์ข้อมูลเดียว โหนดเหล่านี้จะเป็นโหนดเดียวกับที่ระบุโดย ZK_HOSTS ในสภาพแวดล้อมแบบหลายศูนย์ข้อมูล ไฟล์การกำหนดค่า Edge สำหรับศูนย์ข้อมูลแต่ละแห่งควรแสดงเฉพาะโหนด ZooKeeper สำหรับศูนย์ข้อมูลนั้นเท่านั้น
โดยค่าเริ่มต้น ระบบจะกำหนดให้โหนด ZooKeeper ทั้งหมดเป็นโหนดผู้ลงคะแนน ซึ่งหมายความว่าโหนดทั้งหมดจะเข้าร่วมในการเลือกผู้นำ ZooKeeper คุณสามารถใส่ตัวแก้ไข :observer พร้อมกับ ZK_HOSTS เพื่อระบุว่าโหนดเป็นโหนดผู้สังเกตการณ์ ไม่ใช่ผู้ลงคะแนน โหนดผู้สังเกตการณ์จะไม่เข้าร่วมในการเลือกผู้นำ
โดยปกติแล้ว คุณจะระบุตัวแก้ไข :observer เมื่อสร้าง Edge ศูนย์ข้อมูล หลายแห่ง หรือเมื่อ ศูนย์ข้อมูล แห่งเดียวมีโหนด ZooKeeper จำนวนมาก ตัวอย่างเช่น ในการติดตั้ง Edge แบบ 12 โฮสต์ที่มีศูนย์ข้อมูล 2 แห่ง ZooKeeper ในโหนด 9 ในศูนย์ข้อมูล 2 จะเป็นผู้สังเกตการณ์

จากนั้นคุณใช้การตั้งค่าต่อไปนี้ในไฟล์การกำหนดค่าสำหรับศูนย์ข้อมูล 1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
และสำหรับศูนย์ข้อมูล 2 ให้ทำดังนี้
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
ส่วนต่อไปนี้มีรายละเอียดเพิ่มเติมเกี่ยวกับโหนดผู้นำ โหนดผู้ลงคะแนน และโหนดผู้สังเกตการณ์ รวมถึงอธิบายข้อควรพิจารณาในการเพิ่มโหนดผู้ลงคะแนนและโหนดผู้สังเกตการณ์
เกี่ยวกับผู้นำ ผู้ติดตาม ผู้โหวต และผู้สังเกตการณ์
ในการติดตั้ง ZooKeeper แบบหลายโหนด ระบบจะกำหนดให้โหนดหนึ่งเป็นผู้นำ โหนด ZooKeeper อื่นๆ ทั้งหมดจะได้รับการกำหนดให้เป็นผู้ติดตาม แม้ว่าการอ่านจะเกิดขึ้นได้จากโหนด ZooKeeper ใดก็ได้ แต่คำขอเขียนทั้งหมดจะส่งต่อไปยังโหนดผู้นำ เช่น มีการเพิ่ม Message Processor ใหม่ลงใน Edge ระบบจะเขียนข้อมูลดังกล่าวไปยังผู้นำ ZooKeeper ผู้ติดตามทั้งหมดจะจำลองข้อมูล
เมื่อติดตั้ง Edge คุณจะกำหนดโหนด ZooKeeper แต่ละโหนดเป็นผู้ลงคะแนนหรือผู้สังเกตการณ์ จากนั้นโหนด ZooKeeper ของผู้มีสิทธิเลือกตั้งทั้งหมดจะเลือกผู้นำ ข้อกำหนดเดียวสำหรับการเลือกผู้นำคือต้องมีองค์ประชุมของโหนดผู้มีสิทธิเลือกตั้ง ZooKeeper ที่ทำงานอยู่ องค์ประชุมหมายความว่าโหนด ZooKeeper ของผู้มีสิทธิเลือกตั้งมากกว่าครึ่งหนึ่งในศูนย์ข้อมูลทั้งหมดทำงานได้
หากไม่มีโหนดผู้ลงคะแนนเสียงครบองค์ประชุม ก็จะเลือกผู้นำไม่ได้ ในสถานการณ์นี้ Zookeeper จะไม่สามารถตอบสนองคำขอได้ ซึ่งหมายความว่าคุณจะไม่สามารถส่งคำขอไปยังเซิร์ฟเวอร์การจัดการ Edge, ประมวลผลคำขอ API หรือเข้าสู่ระบบ Edge UI ได้จนกว่าจะกู้คืน Quorum
ตัวอย่างเช่น ในการติดตั้งศูนย์ข้อมูลเดียว
- คุณติดตั้งโหนด ZooKeeper 3 โหนด
- โหนด ZooKeeper ทั้งหมดเป็นผู้โหวต
- องค์ประชุมคือโหนดผู้มีสิทธิเลือกตั้งที่ทำงานอยู่ 2 โหนด
- หากมีโหนดผู้ลงคะแนนเพียงโหนดเดียว กลุ่ม ZooKeeper จะทำงานไม่ได้
ในการติดตั้งที่มีศูนย์ข้อมูล 2 แห่ง ให้ทำดังนี้
- คุณติดตั้งโหนด ZooKeeper 3 โหนดต่อศูนย์ข้อมูล รวมเป็น 6 โหนด
- ศูนย์ข้อมูล 1 มีโหนดผู้ลงคะแนน 3 โหนด
- ศูนย์ข้อมูล 2 มีโหนดผู้ลงคะแนน 2 โหนดและโหนดผู้สังเกตการณ์ 1 โหนด
- องค์ประชุมจะอิงตามผู้ลงคะแนน 5 คนในศูนย์ข้อมูลทั้ง 2 แห่ง ดังนั้นจึงมีโหนดผู้ลงคะแนนที่ทำงานอยู่ 3 โหนด
- หากมีโหนดผู้ลงคะแนนเพียง 2 โหนดหรือน้อยกว่านั้น กลุ่ม ZooKeeper จะทำงานไม่ได้
ข้อควรพิจารณาในการเพิ่มโหนดเป็นผู้ลงคะแนนเสียงหรือผู้สังเกตการณ์
ข้อกำหนดของระบบอาจกำหนดให้คุณต้องเพิ่มโหนด ZooKeeper ลงในการติดตั้ง Edge เอกสารประกอบการเพิ่มโหนด ZooKeeper อธิบายวิธีเพิ่มโหนด ZooKeeper ลงใน Edge เมื่อเพิ่มโหนด ZooKeeper คุณต้องพิจารณาประเภทของโหนดที่จะเพิ่ม ได้แก่ ผู้ลงคะแนนหรือผู้สังเกตการณ์
คุณต้องตรวจสอบว่ามีโหนดผู้ลงคะแนนเสียงเพียงพอ เพื่อที่ว่าหากโหนดผู้ลงคะแนนเสียงอย่างน้อย 1 โหนดหยุดทำงาน กลุ่ม ZooKeeper จะยังคงทำงานได้ ซึ่งหมายความว่ายังมีโหนดผู้ลงคะแนนเสียงที่พร้อมใช้งานอยู่ การเพิ่มโหนดผู้ลงคะแนนจะเพิ่มขนาดขององค์ประชุม ดังนั้นคุณจึงสามารถยอมรับโหนดผู้ลงคะแนนที่หยุดทำงานได้มากขึ้น
อย่างไรก็ตาม การเพิ่มโหนดผู้ลงคะแนนเสียงอาจส่งผลเสียต่อประสิทธิภาพการเขียน เนื่องจาก การดำเนินการเขียนต้องใช้องค์ประชุมเพื่อตกลงเกี่ยวกับผู้นำ เวลาที่ใช้ในการกำหนดโหนดผู้นำจะขึ้นอยู่กับจำนวนโหนดผู้ลงคะแนน ซึ่งจะเพิ่มขึ้นเมื่อคุณเพิ่มโหนดผู้ลงคะแนน ดังนั้น คุณจึงไม่ควรทำให้โหนดทั้งหมดเป็นผู้โหวต
คุณสามารถเพิ่มโหนดผู้สังเกตการณ์แทนการเพิ่มโหนดผู้ลงคะแนนได้ การเพิ่มโหนดผู้สังเกตการณ์จะช่วยเพิ่มประสิทธิภาพการอ่านของระบบโดยรวมโดยไม่เพิ่มค่าใช้จ่ายในการเลือกผู้นำ เนื่องจากโหนดผู้สังเกตการณ์จะไม่ลงคะแนนเสียงและไม่ส่งผลต่อขนาดองค์ประชุม ดังนั้น หากโหนดผู้สังเกตการณ์หยุดทำงาน ก็จะไม่ส่งผลต่อความสามารถของกลุ่มในการเลือกผู้นำ อย่างไรก็ตาม การสูญเสียโหนดผู้สังเกตการณ์อาจทำให้ประสิทธิภาพการอ่านของกลุ่ม ZooKeeper ลดลงเนื่องจากมีโหนดที่พร้อมให้บริการคำขอข้อมูลน้อยลง
ในศูนย์ข้อมูลเดียว Apigee ขอแนะนำให้คุณมีผู้ลงคะแนนไม่เกิน 5 คน ไม่ว่าจะมีโหนดผู้สังเกตการณ์กี่โหนดก็ตาม ในศูนย์ข้อมูล 2 แห่ง Apigee ขอแนะนำให้คุณมีผู้ลงคะแนนไม่เกิน 9 คน (5 คนในศูนย์ข้อมูลแห่งหนึ่งและ 4 คนในอีกแห่งหนึ่ง) จากนั้นคุณสามารถเพิ่มโหนดผู้สังเกตการณ์ได้มากเท่าที่จำเป็นสำหรับข้อกำหนดของระบบ
นำโหนด Zookeeper ออก
คุณอาจต้องการนำโหนด Zookeeper ออกด้วยเหตุผลหลายประการ เช่น โหนดเสียหายหรือเพิ่มลงในสภาพแวดล้อมที่ไม่ถูกต้อง
ส่วนนี้จะอธิบายวิธีนำโหนด Zookeeper ออกเมื่อโหนดไม่ทำงานและเข้าถึงไม่ได้
วิธีนำโหนด ZooKeeper ออก
- แก้ไขไฟล์การกำหนดค่าแบบไม่มีการโต้ตอบและนำที่อยู่ IP ของโหนด Zookeeper ที่ต้องการนำออก
- เรียกใช้คำสั่ง
setupอีกครั้งสำหรับ ZooKeeper เพื่อกำหนดค่าโหนด ZooKeeper ที่เหลือใหม่ ดังนี้/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- รีสตาร์ทโหนด Zookeeper ทั้งหมด:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- กำหนดค่าโหนดเซิร์ฟเวอร์การจัดการใหม่โดยทำดังนี้
/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 - กำหนดค่าเราเตอร์ทั้งหมดใหม่
/opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-router restart - กำหนดค่า 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 - กำหนดค่าโหนด 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 - กำหนดค่าโหนด 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
ข้อควรพิจารณาเกี่ยวกับการบำรุงรักษา
คุณสามารถดำเนินการบำรุงรักษา ZooKeeper ในชุดที่ทำงานได้อย่างสมบูรณ์โดยไม่มีช่วงพักทำงานหากดำเนินการในโหนดเดียวในแต่ละครั้ง การตรวจสอบว่ามีโหนด ZooKeeper เพียงโหนดเดียวที่หยุดทำงานในแต่ละครั้งจะช่วยให้มั่นใจได้ว่ามีโหนดผู้ลงคะแนนเสียงจำนวนมากพอที่จะเลือกผู้นำได้เสมอ
การบำรุงรักษาในศูนย์ข้อมูลหลายแห่ง
เมื่อทำงานกับศูนย์ข้อมูลหลายแห่ง โปรดทราบว่ากลุ่ม ZooKeeper ไม่ได้แยกความแตกต่างระหว่างศูนย์ข้อมูล ชุดประกอบ ZooKeeper จะดูโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลทั้งหมดเป็นชุดเดียว
ตำแหน่งของโหนดผู้ลงคะแนนในศูนย์ข้อมูลหนึ่งๆ ไม่ใช่ปัจจัยเมื่อ ZooKeeper ทำการคำนวณองค์ประชุม โหนดแต่ละโหนดอาจหยุดทำงานในศูนย์ข้อมูล แต่ตราบใดที่ยังคงมีองค์ประชุมอยู่ทั่วทั้งกลุ่ม ZooKeeper ก็จะยังคงทำงานได้
ผลกระทบต่อการบำรุงรักษา
ในบางครั้ง คุณจะต้องปิดโหนด ZooKeeper เพื่อบำรุงรักษา ไม่ว่าจะเป็นโหนดผู้ลงคะแนนหรือโหนดผู้สังเกตการณ์ เช่น คุณอาจต้องอัปเกรดเวอร์ชันของ Edge ในโหนด เครื่องที่โฮสต์ ZooKeeper อาจทำงานไม่สำเร็จ หรือโหนดอาจไม่พร้อมใช้งานเนื่องจากสาเหตุอื่นๆ เช่น ข้อผิดพลาดเกี่ยวกับเครือข่าย
หากโหนดที่หยุดทำงานเป็นโหนดผู้สังเกตการณ์ คุณอาจคาดหวังได้ว่าประสิทธิภาพของกลุ่ม ZooKeeper จะลดลงเล็กน้อยจนกว่าโหนดจะได้รับการกู้คืน หากโหนดเป็นโหนดผู้ลงคะแนนเสียง ก็อาจส่งผลต่อความสามารถในการทำงานของกลุ่ม ZooKeeper เนื่องจากสูญเสียโหนดที่เข้าร่วมในกระบวนการเลือกผู้นำ ไม่ว่าโหนดผู้ลงคะแนนจะหยุดทำงานด้วยสาเหตุใดก็ตาม สิ่งสำคัญคือต้องรักษาองค์ประชุมของโหนดผู้ลงคะแนนที่พร้อมใช้งานไว้
ขั้นตอนการบำรุงรักษา
ดำเนินการตามขั้นตอนการบำรุงรักษาหลังจากตรวจสอบแล้วว่าชุด ZooKeeper ทำงานได้เท่านั้น ซึ่งจะถือว่าโหนดผู้สังเกตการณ์ทำงานได้และมีโหนดผู้ลงคะแนนเสียงเพียงพอในระหว่างการบำรุงรักษาเพื่อรักษาองค์ประชุม
เมื่อเป็นไปตามเงื่อนไขเหล่านี้ กลุ่ม ZooKeeper ที่มีขนาดใดก็ได้จะทนต่อการสูญเสียโหนดเดียว ณ จุดใดก็ได้โดยไม่มีการสูญเสียข้อมูลหรือผลกระทบที่มีนัยสำคัญต่อประสิทธิภาพ ซึ่งหมายความว่าคุณสามารถดำเนินการบำรุงรักษาโหนดใดก็ได้ในกลุ่มตราบใดที่ดำเนินการทีละโหนด
ในระหว่างการบำรุงรักษา ให้ใช้ขั้นตอนต่อไปนี้เพื่อระบุประเภทของโหนด ZooKeeper (ผู้นำ ผู้ลงคะแนน หรือผู้สังเกตการณ์)
- หากไม่ได้ติดตั้งไว้ในโหนด ZooKeeper ให้ติดตั้ง
ncโดยทำดังนี้sudo yum install nc
- เรียกใช้คำสั่ง
ncต่อไปนี้ในโหนด โดยที่ 2181 คือพอร์ต ZooKeeperecho stat | nc localhost 2181
คุณควรเห็นเอาต์พุตในแบบฟอร์มดังนี้
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
ในบรรทัด
Modeของเอาต์พุตสำหรับโหนด คุณควรเห็นobserver,leaderหรือfollower(หมายถึงผู้ลงคะแนนที่ไม่ใช่ผู้นำ) ทั้งนี้ขึ้นอยู่กับการกำหนดค่าโหนด - ทำขั้นตอนที่ 1 และ 2 ซ้ำในโหนด ZooKeeper แต่ละโหนด
สรุป
วิธีที่ดีที่สุดในการบำรุงรักษาชุด ZooKeeper คือการดำเนินการทีละโหนด ข้อควรจำ:
- คุณต้องรักษาองค์ประชุมของโหนดผู้มีสิทธิเลือกตั้งในระหว่างการบำรุงรักษาเพื่อให้แน่ใจว่าชุด ZooKeeper ยังคงทำงานได้
- การปิดโหนดผู้สังเกตการณ์จะไม่ส่งผลต่อองค์ประชุมหรือความสามารถในการเลือกผู้นำ
- ระบบจะคำนวณองค์ประชุมในโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลทั้งหมด
- ดำเนินการบำรุงรักษาเซิร์ฟเวอร์ถัดไปหลังจากเซิร์ฟเวอร์ก่อนหน้าทำงานได้แล้ว
- ใช้คำสั่ง
ncเพื่อตรวจสอบโหนด ZooKeeper