ค้นหาเว็บไซต์

วิธีการตั้งค่าคลัสเตอร์ Redis ใน CentOS 8 - ตอนที่ 3


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

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

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

ข้อสำคัญ: Redis Cluster ยังมีข้อจำกัดบางประการซึ่งขาดการสนับสนุนสำหรับสภาพแวดล้อม NATted รวมถึงข้อจำกัดที่ที่อยู่ IP หรือพอร์ต TCP ได้รับการแมปใหม่สำหรับ อินสแตนซ์ภายใต้ นักเทียบท่า นอกจากนี้ ไม่ใช่ทุกไลบรารีของไคลเอนต์ที่รองรับ

บทความนี้แสดงวิธีตั้งค่า คลัสเตอร์ Redis (โดย ปิดใช้งานโหมดคลัสเตอร์) ใน CentOS 8 โดยประกอบด้วยวิธีการติดตั้ง Redis กำหนดค่าโหนดคลัสเตอร์ สร้างคลัสเตอร์ และทดสอบเฟลโอเวอร์ของคลัสเตอร์

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

ข้อกำหนดเบื้องต้น:

  1. เซิร์ฟเวอร์ที่มีการติดตั้ง CentOS 8

ทดสอบการตั้งค่าสภาพแวดล้อม

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

การตั้งค่าของเรามีโหนดหลักสำหรับการอ่าน/เขียน 3 โหนด และโหนดแบบจำลองแบบอ่านอย่างเดียว 3 โหนด โดยแต่ละโหนดหลักจะมีแบบจำลองหนึ่งรายการ ดังนั้นสามส่วนแบ่งข้อมูลจึงมีข้อมูลทั้งหมดของคลัสเตอร์ในแต่ละโหนด แอปพลิเคชัน API หรือไคลเอนต์ CLI สามารถเขียนไปยังโหนดหลักเท่านั้น แต่อ่านจากโหนดใดๆ ในคลัสเตอร์

ขั้นตอนที่ 1: การติดตั้ง Redis บนโหนดทั้งหมด

1. เข้าสู่ระบบอินสแตนซ์ทั้งหมดผ่าน SSH จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งโมดูล Redis โดยใช้ตัวจัดการแพ็คเกจ DNF ดังที่แสดง

dnf module install redis

2. ถัดไป เริ่มบริการ Redis เปิดใช้งานเพื่อเริ่มต้นโดยอัตโนมัติเมื่อบูตระบบ และตรวจสอบสถานะเพื่อยืนยันว่าบริการทำงานอยู่ (ตรวจสอบบริการในอินสแตนซ์ทั้ง 6 รายการ ):

systemctl start redis
systemctl enable redis
systemctl status redis

ขั้นตอนที่ 2: การกำหนดค่าอินสแตนซ์ Redis บนโหนดทั้งหมด

3. ส่วนนี้อธิบายวิธีกำหนดค่าโหนดคลัสเตอร์ Redis อย่าลืมทำการกำหนดค่าที่นี่บนโหนดทั้งหมด

ใช้ไฟล์การกำหนดค่า /etc/redis.conf เพื่อกำหนดค่าเซิร์ฟเวอร์ Redis ตามแนวทางปฏิบัติที่แนะนำ ให้สร้างการสำรองข้อมูลของไฟล์ต้นฉบับก่อนที่จะแก้ไขโดยใช้โปรแกรมแก้ไขข้อความบรรทัดคำสั่งที่คุณเลือก

cp /etc/redis.conf /etc/redis.conf.orig
vi /etc/redis.conf

4. ถัดไป ค้นหาพารามิเตอร์การกำหนดค่าต่อไปนี้และแก้ไขค่าตามที่แสดง พารามิเตอร์ bind ตั้งค่าอินเทอร์เฟซของเซิร์ฟเวอร์ Redis ที่จะรับฟัง โดยตั้งค่าเป็น IP ของอินสแตนซ์ LAN ลบ 127.0.0.1 เนื่องจากเราพบว่าการปล่อยไว้ที่นั่นจะทำให้กระบวนการสร้างคลัสเตอร์ช้าลง โดยเฉพาะขั้นตอนการเข้าร่วมคลัสเตอร์

bind  10.42.0.247

จากนั้นตั้งค่า โหมดป้องกัน เป็น no เพื่ออนุญาตการเชื่อมต่อจากอินสแตนซ์อื่นๆ บนคลัสเตอร์

protected-mode no

พารามิเตอร์พอร์ตกำหนดพอร์ตที่เซิร์ฟเวอร์ Redis จะรับฟังสำหรับการเชื่อมต่อ ค่าเริ่มต้นคือ 6379 นี่คือพอร์ตข้อมูลสำหรับการสื่อสารกับไคลเอนต์

port 6379

5. ชุดพารามิเตอร์ถัดไปจะเปิดใช้งานโหมดคลัสเตอร์และตั้งค่าคุณลักษณะที่มีประโยชน์บางอย่าง พารามิเตอร์ เปิดใช้งานคลัสเตอร์ เมื่อตั้งค่าเป็น ใช่ จะเปิดใช้งานโหมดคลัสเตอร์

cluster-enabled yes

ถัดไป พารามิเตอร์ cluster-config-file จะตั้งชื่อไฟล์การกำหนดค่าคลัสเตอร์ของโหนดคลัสเตอร์ (เช่น nodes-6379.conf) ไฟล์ถูกสร้างขึ้นในไดเร็กทอรีการทำงาน (ค่าเริ่มต้นคือ /var/lib/redis กำหนดโดยใช้พารามิเตอร์ dir) และผู้ใช้ไม่สามารถแก้ไขได้

cluster-config-file nodes-6379.conf

ตัวเลือกคลัสเตอร์ที่มีประโยชน์ถัดไปคือ การหมดเวลาโหนดคลัสเตอร์ ใช้เพื่อตั้งค่าระยะเวลาสูงสุดเป็นมิลลิวินาทีที่อินสแตนซ์ไม่พร้อมใช้งานเพื่อให้ถือว่าอยู่ในสถานะล้มเหลว ค่า 15000 เท่ากับ 15 วินาที

cluster-node-timeout 15000

6. เรายังจำเป็นต้องเปิดใช้งานการคงอยู่ของ Redis บนดิสก์ด้วย เราสามารถใช้โหมดการคงอยู่โหมดใดโหมดหนึ่งได้ นั่นคือ ผนวกเฉพาะไฟล์ (AOF): มันบันทึก (ในไฟล์ appendonly.aof ที่สร้างขึ้น ภายใต้ไดเร็กทอรีการทำงาน) การดำเนินการเขียนทุกครั้งได้รับโดยเซิร์ฟเวอร์สำเร็จ ข้อมูลจะถูกเล่นในระหว่างการเริ่มต้นเซิร์ฟเวอร์เพื่อสร้างชุดข้อมูลดั้งเดิมขึ้นมาใหม่

หากต้องการเปิดใช้งาน ให้ตั้งค่าพารามิเตอร์ ผนวกเท่านั้น เป็น yes

appendonly yes

7. หลังจากทำการเปลี่ยนแปลงทั้งหมดแล้ว ให้รีสตาร์ทบริการ Redis บนโหนดทั้งหมดเพื่อใช้การเปลี่ยนแปลงล่าสุด

systemctl restart redis

8. ณ จุดนี้ ทุกโหนดคลัสเตอร์ควรมี ID คุณสามารถตรวจสอบได้ในไฟล์บันทึกที่ /var/log/redis/redis.log

cat /var/log/redis/redis.log

9. ถัดไป เปิดพอร์ต 6397 และ 16379 บนอินสแตนซ์ทั้งหมด พอร์ต ในภายหลังใช้สำหรับคลัสเตอร์บัส (ช่องทางการสื่อสาร โหนดต่อโหนด โดยใช้โปรโตคอลไบนารี) นี่เป็นข้อกำหนดพื้นฐานสำหรับการเชื่อมต่อ TCP ของคลัสเตอร์ Redis

firewall-cmd --zone=public --permanent --add-port=6379/tcp 
firewall-cmd --zone=public --permanent --add-port=16379/tcp 
firewall-cmd --reload

ขั้นตอนที่ 3: การสร้างคลัสเตอร์ Redis

10. หากต้องการสร้างคลัสเตอร์ ให้ใช้ไคลเอ็นต์บรรทัดคำสั่ง redis-cli ดังต่อไปนี้ --cluster-replicas 1 เปิดใช้งานการสร้างคลัสเตอร์ และ --cluster-replicas 1 หมายถึงสร้างหนึ่งแบบจำลองต่อต้นแบบ

สำหรับการตั้งค่าของเราซึ่งมี 6 โหนด เราจะมี 3 มาสเตอร์และ 3 ทาส

โปรดทราบว่า 6 โหนดแรกจะถือเป็น มาสเตอร์ (M) และอีก 3 โหนดถัดไปจะถือเป็น ทาส (S). สเลฟตัวแรกคือ 10.42.0.200:6379 จำลองต้นแบบตัวแรกเช่น 10.42.0.247:6379 สเลฟตัวที่สองจำลองต้นแบบตัวที่สองตามลำดับนั้น

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

redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. เมื่อการสร้างคลัสเตอร์สำเร็จ ให้รันคำสั่งต่อไปนี้บนโฮสต์ใดๆ (ระบุที่อยู่ IP โดยใช้แฟล็ก -h) เพื่อแสดงรายการโหนดคลัสเตอร์ทั้งหมด

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

คุณควรจะสามารถเห็นโหนดคลัสเตอร์ทั้งหมดได้ โดยทาสจะระบุโหนดหลัก ดังที่แสดงในภาพหน้าจอต่อไปนี้

ฟิลด์ต่างๆ อยู่ในลำดับนี้: รหัสโหนด, ที่อยู่ IP: พอร์ต, แฟล็ก, ส่ง Ping ล่าสุด, ได้รับ Pong ล่าสุด, ยุคการกำหนดค่า, สถานะลิงก์, สล็อต (สำหรับต้นแบบ)

ขั้นตอนที่ 4: การทดสอบความล้มเหลวของคลัสเตอร์ Redis

12. ในส่วนนี้ เราจะสาธิตวิธีทดสอบความล้มเหลวของคลัสเตอร์ ก่อนอื่น เรามาทำความเข้าใจกับปรมาจารย์กันก่อน

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

นอกจากนี้ โปรดสังเกตทาสเรดิสด้วย

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. ต่อไป เรามาหยุดบริการ Redis บนหนึ่งในโหนดหลัก เช่น 10.42.0.197 และตรวจสอบโหนดหลักทั้งหมดในคลัสเตอร์

systemctl stop redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

จากภาพหน้าจอต่อไปนี้ คุณจะเห็นว่าโหนด 10.42.0.197:6367 อยู่ในสถานะล้มเหลว และโหนดรอง 10.42.0.21:6379 ได้รับการเลื่อนระดับเป็นสถานะหลัก

14. ตอนนี้เรามาเริ่มบริการ Redis อีกครั้งบนโหนดที่ล้มเหลว และตรวจสอบต้นแบบทั้งหมดในคลัสเตอร์

systemctl start redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

นอกจากนี้ ให้ตรวจสอบทาสของคลัสเตอร์เพื่อยืนยันว่าต้นแบบที่ล้มเหลวกลายเป็นทาสแล้ว

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

ขั้นตอนที่ 5: ทดสอบการจำลองข้อมูลทั่วทั้งคลัสเตอร์ Redis

15. ส่วนสุดท้ายนี้จะอธิบายวิธีการตรวจสอบการจำลองข้อมูลคลัสเตอร์ เราจะสร้างคีย์และค่าบนหนึ่งในต้นแบบ จากนั้นลองอ่านจากโหนดคลัสเตอร์ทั้งหมดดังต่อไปนี้ ใช้สวิตช์ -c เพื่อเปิดใช้งานการสนับสนุนคลัสเตอร์ภายใต้ยูทิลิตี้ redis-cli และเข้าถึงข้อมูลในโหมดคลัสเตอร์

redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
redis-cli -c -h 10.42.0.247 -p 6379 get name
redis-cli -c -h 10.42.0.21 -p 6379 get name
redis-cli -c -h 10.42.0.132 -p 6379 get name
redis-cli -c -h 10.42.0.200 -p 6379 get name
redis-cli -c -h 10.42.0.197 -p 6379 get name
redis-cli -c -h 10.42.0.34 -p 6379 get name

สิ่งที่สำคัญที่สุดคือ คลัสเตอร์ Redis เป็นวิธีที่นิยมใช้ในการรับการแบ่งส่วนอัตโนมัติ การจำลอง และความพร้อมใช้งานสูง มีพารามิเตอร์การกำหนดค่าที่มีการบันทึกไว้อย่างดีอื่นๆ มากมายในส่วนที่เหลือของไฟล์ /etc/redis.conf คุณสามารถดูข้อมูลเพิ่มเติมได้ในเอกสารอย่างเป็นทางการ: บทช่วยสอนคลัสเตอร์ Redis และข้อกำหนดเฉพาะของคลัสเตอร์ Redis

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