งานบำรุงรักษา Apache Cassandra

ส่วนนี้จะอธิบายงานบำรุงรักษาตามระยะสำหรับ Cassandra

การบำรุงรักษาเพื่อป้องกันการสูญเสียข้อมูล

โหนดวงแหวนของ Apache Cassandra ต้องได้รับการบำรุงรักษาตามระยะเพื่อให้มั่นใจถึงความสอดคล้องกันในทุก โหนด หากต้องการทำการบำรุงรักษานี้ ให้ใช้คำสั่งต่อไปนี้

apigee-service apigee-cassandra apigee_repair -pr

Apigee ขอแนะนำให้ทำดังนี้เมื่อเรียกใช้คำสั่งนี้

  • เรียกใช้ในทุกโหนด Cassandra (ในทุกภูมิภาคหรือศูนย์ข้อมูล)
  • เรียกใช้ในโหนดทีละโหนดเพื่อให้มั่นใจถึงความสอดคล้องกันในทุกโหนดในวงแหวน การเรียกใช้การซ่อมในหลายโหนดพร้อมกันอาจ ส่งผลเสียต่อสถานะของ Cassandra

    หากต้องการตรวจสอบว่างานซ่อมในโหนดเสร็จสมบูรณ์แล้วหรือไม่ ให้ดูไฟล์ system.log ของโหนดเพื่อหารายการ ที่มี UUID ของเซสชันการซ่อมล่าสุดและวลี "session completed successfully." ตัวอย่างรายการบันทึกมีดังนี้

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • เรียกใช้ในช่วงที่มีปริมาณงานค่อนข้างต่ำ (เครื่องมือนี้จะเพิ่มภาระงานให้กับ ระบบอย่างมาก)
  • เรียกใช้ทุกๆ 7 วันเป็นอย่างน้อยเพื่อขจัดปัญหาที่เกี่ยวข้องกับ "การลบที่ลืม" ของ Cassandra
  • เรียกใช้ในโหนดต่างๆ ในวันต่างๆ หรือกำหนดเวลาให้มีเวลาหลายชั่วโมงระหว่างการเรียกใช้ในแต่ละโหนด
  • ใช้ตัวเลือก -pr (ช่วงตัวแบ่งพาร์ติชัน) เพื่อระบุช่วงตัวแบ่งพาร์ติชันหลัก ของโหนดเท่านั้น

หากคุณเปิดใช้การตรวจสอบสิทธิ์ JMX สำหรับ Cassandra คุณต้องระบุชื่อผู้ใช้และรหัสผ่านเมื่อเรียกใช้ nodetool เช่น

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

นอกจากนี้ คุณยังเรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบตัวเลือกที่รองรับของ apigee_repair: ได้ด้วย

apigee-service apigee-cassandra apigee_repair -h

หมายเหตุ: apigee_repair เป็น Wrapper สำหรับการซ่อม nodetool ของ Cassandra ซึ่งจะทำการตรวจสอบเพิ่มเติมก่อนที่จะทำการซ่อมของ Cassandra

ดูข้อมูลเพิ่มเติมได้จากแหล่งข้อมูลต่อไปนี้

การบำรุงรักษาไฟล์บันทึก

ระบบจะจัดเก็บบันทึกของ Cassandra ไว้ในไดเรกทอรี /opt/apigee/var/log/apigee-cassandra ใน แต่ละโหนด โดยค่าเริ่มต้น ระบบจะสร้างไฟล์บันทึกได้สูงสุด 50 ไฟล์ โดยแต่ละไฟล์มีขนาดสูงสุด 20 MB เมื่อถึงขีดจำกัดนี้ ระบบจะลบบันทึกเก่าเมื่อมีการสร้างบันทึกใหม่

หากพบว่าไฟล์บันทึกของ Cassandra ใช้พื้นที่มากเกินไป คุณสามารถแก้ไขจำนวนพื้นที่ที่จัดสรรไว้สำหรับไฟล์บันทึกได้โดยการแก้ไขการตั้งค่า log4j

  1. แก้ไข /opt/apigee/customer/application/cassandra.properties เพื่อตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้ หากไม่มีไฟล์ดังกล่าว ให้สร้างขึ้น
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. รีสตาร์ท Cassandra โดยใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

การบำรุงรักษาพื้นที่ในดิสก์

คุณควรตรวจสอบการใช้ดิสก์ของ Cassandra เป็นประจำเพื่อให้แน่ใจว่ามีพื้นที่ว่างอย่างน้อย 50% ใน แต่ละดิสก์ หากการใช้ดิสก์เพิ่มขึ้นเกิน 50% เราขอแนะนำให้คุณ เพิ่มพื้นที่ในดิสก์เพื่อลดเปอร์เซ็นต์ที่ใช้งาน

Cassandra จะดำเนินการต่อไปนี้โดยอัตโนมัติเพื่อลดการใช้ดิสก์ของตัวเอง

  • การลบโทเค็นการตรวจสอบสิทธิ์เมื่อโทเค็นหมดอายุ อย่างไรก็ตาม ระบบอาจใช้เวลา 2-3 สัปดาห์ในการเพิ่มพื้นที่ในดิสก์ที่โทเค็นใช้ ทั้งนี้ขึ้นอยู่กับการกำหนดค่า หากการลบอัตโนมัติไม่เพียงพอที่จะรักษา พื้นที่ดิสก์ให้เพียงพอ โปรดติดต่อทีมสนับสนุนเพื่อดูข้อมูลเกี่ยวกับการลบโทเค็นด้วยตนเองเพื่อกู้คืน พื้นที่
  • การบีบอัดข้อมูล: เริ่มตั้งแต่ Edge for Private Cloud 4.51.00 การติดตั้ง Apigee Cassandra ใหม่จะสร้าง Keyspace ด้วย กลยุทธ์การบีบอัดแบบระดับ

    การติดตั้ง Edge for Private Cloud เวอร์ชันก่อนหน้าที่ อัปเกรดเป็น Edge for Private Cloud 4.54.00 จะยังคงใช้กลยุทธ์การบีบอัดก่อนหน้า หากกลยุทธ์การบีบอัดที่มีอยู่คือ SizeTieredCompactionStrategy Apigee ขอแนะนำให้เปลี่ยนเป็น LeveledCompactionStrategy ซึ่งจะช่วยให้ใช้ดิสก์ ได้ดีขึ้น ดูวิธีการได้ที่ เปลี่ยนกลยุทธ์การบีบอัดของ Cassandra

หมายเหตุ: เมื่อ Cassandra ทำการบีบอัดข้อมูล อาจใช้รอบ CPU จำนวนมาก และหน่วยความจำ แต่การใช้ทรัพยากรจะกลับสู่ปกติเมื่อการบีบอัดเสร็จสมบูรณ์ คุณสามารถเรียกใช้คำสั่ง 'Nodetool compactionstats' ในแต่ละโหนด เพื่อตรวจสอบว่าการบีบอัดกำลังทำงานอยู่หรือไม่ เอาต์พุตของ compactionstats จะแจ้งให้คุณทราบว่ามี การบีบอัดที่รอดำเนินการอยู่หรือไม่และเวลาโดยประมาณที่จะเสร็จสมบูรณ์