เกี่ยวกับการบํารุงรักษา ZooKeeper

Edge สำหรับ Private Cloud เวอร์ชัน 4.19.01

ชุดอุปกรณ์ 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 ของผู้โหวตทั้งหมดจะได้รับการเลือกตั้งผู้นำ ข้อกำหนดหนึ่งสำหรับการเลือกตั้งผู้นำคือต้องมีquorumของโหนดผู้มีสิทธิเลือกตั้ง ZooKeeper ที่ใช้งานได้ โควต้าหมายความว่าโหนด ZooKeeper ของผู้มีสิทธิเลือกตั้งมากกว่าครึ่งหนึ่งของศูนย์ข้อมูลทั้งหมดใช้งานได้

ถ้ายังไม่มีจำนวนโหนดของผู้มีสิทธิเลือกตั้งเลย ก็จะไม่สามารถเลือกผู้นำได้ ในสถานการณ์นี้ Zookeeper แสดงคําขอไม่ได้ ซึ่งหมายความว่าคุณจะส่งคำขอไปยังเซิร์ฟเวอร์ Edge Management, ประมวลผลคำขอ Management API หรือเข้าสู่ระบบ Edge UI ไม่ได้จนกว่าจะกู้คืนโควต้า

ตัวอย่างเช่น ในการติดตั้งศูนย์ข้อมูลเดียว:

  • คุณติดตั้งโหนด ZooKeeper 3 รายการ
  • โหนด ZooKeeper ทั้งหมดเป็นผู้โหวต
  • โควต้าคือโหนดของผู้มีสิทธิเลือกตั้งที่ทำงานได้ 2 โหนด
  • หากมีโหนดผู้โหวตเพียง 1 โหนด ชุด 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 คน โดยไม่คำนึงถึงจำนวนโหนดผู้สังเกตการณ์ Apigee ในศูนย์ข้อมูล 2 แห่ง แนะนำให้คุณไม่มีผู้โหวตเกิน 9 คน (5 คนในศูนย์ข้อมูล 1 แห่งและอีก 4 คน) จากนั้นคุณจะเพิ่มโหนดผู้สังเกตการณ์ได้มากเท่าที่จำเป็นสำหรับข้อกำหนดของระบบ

นำโหนด Zookeeper ออก

มีหลายสาเหตุที่คุณอาจต้องการนำโหนด Zookeeper ออก ตัวอย่างเช่น โหนดได้รับความเสียหายหรือโหนดถูกเพิ่มในสภาพแวดล้อมที่ไม่ถูกต้อง

ส่วนนี้จะอธิบายวิธีนำโหนด Zookeeper ออกเมื่อโหนดไม่ทำงานและเข้าถึงไม่ได้

วิธีนำโหนด Zookeeper ออก

  1. แก้ไขไฟล์การกำหนดค่าแบบปิดเสียงและนำที่อยู่ IP ของโหนด Zookeeper ที่ต้องการนำออกออก
  2. เรียกใช้คำสั่ง setup สำหรับ Zookeeper อีกครั้งเพื่อกำหนดค่าโหนด ZooKeeper ที่เหลืออยู่ใหม่ดังนี้
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. รีสตาร์ทโหนด Zookeeper ทั้งหมด:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. กำหนดค่าโหนดเซิร์ฟเวอร์การจัดการอีกครั้ง:
    /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. กำหนดค่าเราเตอร์ทั้งหมดใหม่โดยทำดังนี้
    /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. กำหนดค่าเครื่องมือประมวลผลข้อความทั้งหมดใหม่
    /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. กำหนดค่าโหนด 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. กำหนดค่าโหนด 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 หยุดทำงานเพียงครั้งละ 1 รายการจะช่วยให้คุณมั่นใจได้ว่ามีโหนดของผู้มีสิทธิเลือกตั้งสำหรับเลือกผู้นำอยู่ในโควต้าเสมอ

การบำรุงรักษาในศูนย์ข้อมูลหลายแห่ง

เมื่อทำงานกับศูนย์ข้อมูลหลายแห่ง โปรดทราบว่าชุดของ ZooKeeper ไม่ได้แยกแยะความแตกต่างระหว่างศูนย์ข้อมูลต่างๆ ชุดของ ZooKeeper จะมองว่าโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลทั้งหมดรวมกันเป็นโหนดเดียว

ตําแหน่งของโหนดผู้โหวตในศูนย์ข้อมูลที่ระบุไม่ใช่ปัจจัยเมื่อ ZooKeeper คํานวณโควต้า แต่ละโหนดอาจเลื่อนลงไปยังศูนย์ข้อมูลต่างๆ ได้ แต่ตราบใดที่ยังมีการเก็บรักษาโควต้าไว้ทั่วทั้งชุด ทาง ZooKeeper ก็จะยังคงทำงานตามปกติ

ผลกระทบต่อการบำรุงรักษา

ในหลายๆ ครั้ง คุณจะต้องปิดโหนด ZooKeeper เพื่อบำรุงรักษาว่าเป็นโหนดผู้โหวตหรือโหนดของผู้สังเกตการณ์ ตัวอย่างเช่น คุณอาจต้องอัปเกรดเวอร์ชันของ Edge บนโหนด เครื่องที่โฮสต์ ZooKeeper อาจล้มเหลว หรือโหนดอาจไม่พร้อมใช้งานด้วยเหตุผลอื่น เช่น ข้อผิดพลาดของเครือข่าย

หากโหนดที่ไม่ทำงานเป็นโหนดผู้สังเกตการณ์ ประสิทธิภาพของชุด ZooKeeper จะลดลงเล็กน้อยจนกว่าจะกู้คืนโหนด หากโหนดเป็นโหนดผู้มีสิทธิเลือกตั้ง โหนดดังกล่าวอาจส่งผลต่อการอยู่รอดของชุด ZooKeeper เนื่องจากโหนดที่เข้าร่วมในกระบวนการเลือกตั้งผู้นำหายไป ไม่ว่าเหตุผลที่โหนดผู้เลือกตั้งลดลงด้วยเหตุผลใดก็ตาม สิ่งสำคัญคือการรักษาระดับโควต้าของโหนดผู้มีสิทธิเลือกตั้งไว้

ขั้นตอนการบำรุงรักษา

ดำเนินการตามขั้นตอนการบำรุงรักษาหลังจากตรวจสอบแล้วว่าชุดซอฟต์แวร์ ZooKeeper ใช้งานได้เท่านั้น โดยสมมติว่าโหนดผู้สังเกตการณ์ใช้งานได้และมีโหนดผู้เลือกตั้งเพียงพอระหว่างการบำรุงรักษาเพื่อคงโควต้าไว้

เมื่อตรงตามเงื่อนไขเหล่านี้ ชุดของ ZooKeeper ที่มีขนาดที่กำหนดเองจะยอมรับการสูญเสียโหนดนี้ ณ จุดใดก็ได้โดยไม่มีการสูญเสียข้อมูลหรือผลกระทบที่มีความหมายต่อประสิทธิภาพ ซึ่งหมายความว่าคุณจะทำการบำรุงรักษาในโหนดใดก็ได้ในชุด ตราบใดที่ยังอยู่ในโหนดเดียว

ในขั้นตอนการบำรุงรักษา โปรดใช้ขั้นตอนต่อไปนี้เพื่อระบุประเภทโหนด ZooKeeper (ผู้นำ ผู้มีสิทธิเลือกตั้ง หรือผู้สังเกตการณ์)

  1. หากไม่ได้ติดตั้งในโหนด ZooKeeper ให้ติดตั้ง nc:
    sudo yum install nc
  2. เรียกใช้คำสั่ง nc ต่อไปนี้ในโหนด โดยที่ 2181 คือพอร์ต ZooKeeper
    echo 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 (หมายถึงผู้โหวตที่ไม่ใช่ผู้นำ) ทั้งนี้ขึ้นอยู่กับการกำหนดค่าโหนด

  3. ทำขั้นตอนที่ 1 และ 2 ซ้ำในโหนด ZooKeeper แต่ละรายการ

สรุป

วิธีที่ดีที่สุดในการบำรุงรักษาชุด ZooKeeper คือการดำเนินการครั้งละ 1 โหนด ข้อควรจำ:

  • คุณต้องรักษาจำนวนโหนดของผู้มีสิทธิเลือกตั้งไว้ระหว่างการบำรุงรักษาเพื่อให้ชุด ZooKeeper ทำงานได้อย่างต่อเนื่อง
  • การลบโหนดผู้สังเกตการณ์ไม่ได้ส่งผลต่อควอมหรือความสามารถในการเลือกผู้นำ
  • ระบบจะคำนวณโควต้าจากโหนด ZooKeeper ทั้งหมดในศูนย์ข้อมูลทั้งหมด
  • ดำเนินการบำรุงรักษาเซิร์ฟเวอร์ถัดไปหลังจากเซิร์ฟเวอร์ก่อนหน้าทำงาน
  • ใช้คำสั่ง nc เพื่อตรวจสอบโหนด ZooKeeper