ชุด 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 ทั้งหมดเป็นโหนด voter ซึ่งหมายความว่าโหนดทั้งหมด
จะเข้าร่วมในการเลือก ผู้นำ ZooKeeper คุณสามารถใส่ตัวแก้ไข
:observer กับ ZK_HOSTS เพื่อระบุว่า
โหนดเป็นโหนด observer ไม่ใช่โหนด voter โหนด observer จะไม่เข้าร่วมใน
การเลือกผู้นำ
โดยปกติคุณจะระบุตัวแก้ไข :observer เมื่อสร้างศูนย์ข้อมูล Edge หลายแห่ง
หรือเมื่อศูนย์ข้อมูลเดียวมีโหนด ZooKeeper จำนวนมาก ตัวอย่างเช่น ในการติดตั้ง Edge แบบ 12 โฮสต์ที่มีศูนย์ข้อมูล 2 แห่ง ZooKeeper ในโหนด 9 ในศูนย์ข้อมูล 2 เป็น observer

จากนั้นใช้การตั้งค่าต่อไปนี้ในไฟล์กำหนดค่าสำหรับศูนย์ข้อมูล 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"
ส่วนต่อไปนี้มีรายละเอียดเพิ่มเติมเกี่ยวกับโหนดผู้นำ โหนด voter และ โหนด observer รวมถึงอธิบายข้อควรพิจารณาในการเพิ่มโหนด voter และโหนด observer
เกี่ยวกับผู้นำ ผู้ติดตาม ผู้ลงคะแนน และผู้สังเกตการณ์
ในการติดตั้ง ZooKeeper แบบหลายโหนด ระบบจะกำหนดให้โหนดหนึ่งเป็น ผู้นำ และกำหนดให้โหนด ZooKeeper อื่นๆ ทั้งหมดเป็น ผู้ติดตาม แม้ว่าการอ่านจะเกิดขึ้นได้จากโหนด ZooKeeper ใดก็ตาม แต่คำขอเขียนทั้งหมดจะถูกส่งต่อไปยังผู้นำ ตัวอย่างเช่น มีการเพิ่ม Message Processor ใหม่ลงใน Edge ระบบจะเขียนข้อมูลนั้นลงในผู้นำ ZooKeeper จากนั้นผู้ติดตามทั้งหมด จะจำลองข้อมูล
เมื่อติดตั้ง Edge คุณจะกำหนดให้โหนด ZooKeeper แต่ละโหนดเป็น voter หรือ observer จากนั้นโหนด ZooKeeper voter ทั้งหมดจะเลือกผู้นำ ข้อกำหนดเดียวสำหรับการเลือกผู้นำคือต้องมีโหนด voter ZooKeeper ที่ทำงานได้ตามจำนวน quorum ที่พร้อมใช้งาน quorum หมายถึงโหนด voter ZooKeeper มากกว่าครึ่งหนึ่งจากศูนย์ข้อมูลทั้งหมดทำงานได้
หากไม่มีโหนด voter ที่พร้อมใช้งานตามจำนวน quorum ก็จะเลือกผู้นำไม่ได้ ในสถานการณ์นี้, ZooKeeper จะไม่สามารถให้บริการคำขอได้ ซึ่งหมายความว่าคุณจะไม่สามารถส่งคำขอไปยัง เซิร์ฟเวอร์การจัดการ Edge, ประมวลผลคำขอ API หรือเข้าสู่ระบบ UI ของ New Edge ได้จนกว่าจะมีการกู้คืน quorum
ตัวอย่างเช่น ในการติดตั้งศูนย์ข้อมูลเดียว
- คุณติดตั้งโหนด ZooKeeper 3 โหนด
- โหนด ZooKeeper ทั้งหมดเป็น voter
- quorum คือโหนด voter ที่ทำงานได้ 2 โหนด
- หากมีโหนด voter เพียงโหนดเดียวที่พร้อมใช้งาน ชุด ZooKeeper จะทำงานไม่ได้
ในการติดตั้งที่มีศูนย์ข้อมูล 2 แห่ง
- คุณติดตั้งโหนด ZooKeeper 3 โหนดต่อศูนย์ข้อมูล รวมเป็น 6 โหนด
- ศูนย์ข้อมูล 1 มีโหนด voter 3 โหนด
- ศูนย์ข้อมูล 2 มีโหนด voter 2 โหนดและโหนด observer 1 โหนด
- quorum อิงตาม voter 5 คนจากศูนย์ข้อมูลทั้ง 2 แห่ง ดังนั้นจึงเป็น โหนด voter ที่ทำงานได้ 3 โหนด
- หากมีโหนด voter เพียง 2 โหนดหรือน้อยกว่านั้น ชุด ZooKeeper จะทำงานไม่ได้
ข้อควรพิจารณาในการเพิ่มโหนดเป็น voter หรือ observer
ข้อกำหนดของระบบอาจกำหนดให้คุณต้องเพิ่มโหนด ZooKeeper ลงในการติดตั้ง Edge เอกสารประกอบการเพิ่มโหนด ZooKeeper จะอธิบายวิธีเพิ่มโหนด ZooKeeper ลงใน Edge เมื่อเพิ่มโหนด ZooKeeper คุณต้อง พิจารณาประเภทของโหนดที่จะเพิ่ม ได้แก่ voter หรือ observer
คุณต้องตรวจสอบว่ามีโหนด voter เพียงพอเพื่อให้ชุด ZooKeeper ยังคงทำงานได้หากโหนด voter อย่างน้อย 1 โหนดหยุดทำงาน ซึ่งหมายความว่ายังมีโหนด voter ที่พร้อมใช้งานตามจำนวน quorum การเพิ่มโหนด voter จะเพิ่มขนาดของ quorum และคุณจึงยอมรับได้หากโหนด voter จำนวนมากขึ้นหยุดทำงาน
อย่างไรก็ตาม การเพิ่มโหนด voter เพิ่มเติมอาจส่งผลเสียต่อประสิทธิภาพการเขียนเนื่องจากการดำเนินการเขียน ต้องใช้ quorum เพื่อตกลงกันในเรื่องผู้นำ เวลาที่ใช้ในการกำหนดผู้นำ จะขึ้นอยู่กับจำนวนโหนด voter ซึ่งจะเพิ่มขึ้นเมื่อคุณเพิ่มโหนด voter มากขึ้น ดังนั้นคุณจึงไม่ควรทำให้โหนดทั้งหมดเป็น voter
คุณสามารถเพิ่มโหนด observer แทนการเพิ่มโหนด voter การเพิ่มโหนด observer จะเพิ่ม ประสิทธิภาพการอ่านโดยรวมของระบบโดยไม่เพิ่มค่าใช้จ่ายในการเลือกผู้นำ เนื่องจาก โหนด observer จะไม่ลงคะแนนและไม่ส่งผลต่อขนาด quorum ดังนั้นหากโหนด observer หยุดทำงาน ก็จะไม่ส่งผลต่อความสามารถของชุดในการเลือกผู้นำ อย่างไรก็ตาม การสูญเสียโหนด observer อาจทำให้ประสิทธิภาพการอ่านของชุด ZooKeeper ลดลงเนื่องจากมี โหนดที่พร้อมให้บริการคำขอข้อมูลน้อยลง
ในศูนย์ข้อมูลเดียว Apigee แนะนำให้มี voter ไม่เกิน 5 คนไม่ว่า จะมีโหนด observer กี่โหนดก็ตาม ในศูนย์ข้อมูล 2 แห่ง Apigee แนะนำให้มี voter ไม่เกิน 9 คน (5 คนในศูนย์ข้อมูลหนึ่งแห่งและ 4 คนในอีกแห่ง) จากนั้นคุณสามารถเพิ่มโหนด observer ได้มากเท่าที่จำเป็นตามข้อกำหนดของระบบ
นำโหนด 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 เพียงโหนดเดียวที่หยุดทำงานในแต่ละครั้งจะช่วยให้มั่นใจได้ว่าจะมีโหนด voter ที่พร้อมใช้งานตามจำนวน quorum เพื่อเลือกผู้นำเสมอ
การบำรุงรักษาในศูนย์ข้อมูลหลายแห่ง
เมื่อทำงานกับศูนย์ข้อมูลหลายแห่ง โปรดทราบว่าชุด ZooKeeper จะไม่ แยกความแตกต่างระหว่างศูนย์ข้อมูล ชุด ZooKeeper จะมองว่าโหนด ZooKeeper ทั้งหมดจากศูนย์ข้อมูลทั้งหมด เป็นชุดเดียว
ตำแหน่งของโหนด voter ในศูนย์ข้อมูลที่กำหนดไม่ใช่ปัจจัยที่ ZooKeeper ใช้ในการคำนวณ quorum โหนดแต่ละโหนดอาจหยุดทำงานในศูนย์ข้อมูลต่างๆ แต่ตราบใดที่ยังคงรักษา quorum ไว้ ทั่วทั้งชุด ZooKeeper ก็จะยังคงทำงานได้
ผลกระทบของการบำรุงรักษา
ในบางครั้ง คุณจะต้องหยุดโหนด ZooKeeper เพื่อทำการบำรุงรักษา ไม่ว่าจะเป็นโหนด voter หรือโหนด observer ตัวอย่างเช่น คุณอาจต้องอัปเกรดเวอร์ชันของ Edge ในโหนด เครื่องที่โฮสต์ ZooKeeper อาจล้มเหลว หรือโหนดอาจไม่พร้อมใช้งานด้วยเหตุผลอื่นๆ เช่น ข้อผิดพลาดเกี่ยวกับเครือข่าย
หากโหนดที่หยุดทำงานเป็นโหนด observer คุณจะเห็นประสิทธิภาพของชุด ZooKeeper ลดลงเล็กน้อยใน ประสิทธิภาพของชุด ZooKeeper จนกว่าจะมีการกู้คืนโหนด หากโหนดเป็นโหนด voter ก็อาจส่งผลต่อความสามารถในการทำงานของชุด ZooKeeper เนื่องจากการสูญเสียโหนดที่ เข้าร่วมในกระบวนการเลือกผู้นำ ไม่ว่าเหตุผลที่โหนด voter หยุดทำงานคืออะไร สิ่งสำคัญคือต้องรักษาโหนด voter ที่พร้อมใช้งานตามจำนวน quorum
ขั้นตอนการบำรุงรักษา
ดำเนินการตามขั้นตอนการบำรุงรักษาหลังจากตรวจสอบว่าชุด ZooKeeper ทำงานได้ ซึ่งจะถือว่าโหนด observer ทำงานได้และมีโหนด voter ที่พร้อมใช้งานเพียงพอในระหว่างการบำรุงรักษาเพื่อรักษา quorum
เมื่อเป็นไปตามเงื่อนไขเหล่านี้ ชุด ZooKeeper ที่มีขนาดเท่าใดก็ได้จะสามารถรับมือกับการ สูญเสียโหนดเดียวได้ทุกเมื่อโดยไม่มีข้อมูลสูญหายหรือส่งผลกระทบอย่างมีนัยสำคัญต่อประสิทธิภาพ ซึ่ง หมายความว่าคุณสามารถทำการบำรุงรักษาโหนดใดก็ได้ในชุดตราบใดที่ดำเนินการกับโหนดทีละ โหนด
ในการทำการบำรุงรักษา ให้ใช้ขั้นตอนต่อไปนี้เพื่อกำหนดประเภทของโหนด ZooKeeper (ผู้นำ, voter หรือ observer)
- หากไม่ได้ติดตั้งไว้ในโหนด 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(หมายถึง voter ที่ไม่ใช่ผู้นำ) ทั้งนี้ขึ้นอยู่กับการกำหนดค่าโหนด - ทำซ้ำขั้นตอนที่ 1 และ 2 ในโหนด ZooKeeper แต่ละโหนด
สรุป
วิธีที่ดีที่สุดในการบำรุงรักษาชุด ZooKeeper คือการดำเนินการกับโหนดทีละ โหนด ข้อควรจำ
- คุณต้องรักษาโหนด voter ตามจำนวน quorum ไว้ในระหว่างการบำรุงรักษาเพื่อให้ชุด ZooKeeper ทำงานได้ต่อไป
- การหยุดโหนด observer จะไม่ส่งผลต่อ quorum หรือความสามารถในการเลือกผู้นำ
- ระบบจะคำนวณ quorum จากโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลทั้งหมด
- ดำเนินการบำรุงรักษาเซิร์ฟเวอร์ถัดไปหลังจากที่เซิร์ฟเวอร์ก่อนหน้าทำงานได้
- ใช้คำสั่ง
ncเพื่อตรวจสอบโหนด ZooKeeper