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

Edge for Private Cloud v4.18.05

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

จากนั้นใช้การตั้งค่าต่อไปนี้ในไฟล์การกำหนดค่าสำหรับ Data Center 1

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

และสำหรับศูนย์ข้อมูล

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

เกี่ยวกับผู้นำ ผู้ติดตาม ผู้มีสิทธิเลือกตั้ง และผู้สังเกตการณ์

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

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

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

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

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

ในการติดตั้งที่มีศูนย์ข้อมูล 2 แห่ง ได้แก่

  • คุณติดตั้งโหนด ZooKeeper 3 โหนดต่อศูนย์ข้อมูล รวมแล้วโหนดทั้งหมด 6 โหนด
  • ศูนย์ข้อมูลที่ 1 มีโหนดผู้มีสิทธิ์เลือกตั้ง 3 จุด
  • ศูนย์ข้อมูลที่ 2 มีโหนดผู้มีสิทธิเลือกตั้ง 2 โหนดและโหนดผู้สังเกตการณ์ 1 โหนด
  • องค์การทั้ง 2 นี้อิงตามผู้มีสิทธิเลือกตั้ง 5 คนจากศูนย์ข้อมูลทั้งสอง ดังนั้น โหนดของผู้มีสิทธิเลือกตั้ง 3 ฝ่าย
  • หากมีโหนดผู้มีสิทธิเลือกตั้งไม่เกิน 2 โหนด ชุดของ ZooKeeper ก็จะไม่สามารถ ฟังก์ชัน

การเพิ่มโหนดเป็นผู้โหวตหรือ ผู้สังเกตการณ์

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

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

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

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

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

ข้อควรพิจารณาด้านการบำรุงรักษา

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

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

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

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

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

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

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

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

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

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

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

  1. ถ้าไม่มีการติดตั้งในโหนด ZooKeeper ให้ติดตั้ง nc:
    sudo yum install nc
  2. เรียกใช้คำสั่ง nc ต่อไปนี้บนโหนด
    echo stat | nc localhost 2181

    โดย 2181 คือพอร์ต ZooKeeper คุณควรเห็นผลลัพธ์ในแบบฟอร์ม:

    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