ฉันได้เทียบท่าอิมเมจของ redis (เป็นคู่มือ dockerhub อย่างเป็นทางการเมื่อใช้ redis.conf แบบกำหนดเอง) และรูปภาพที่กำหนดเอง (ตามภาพเทือกเขาแอลป์ ดูที่นี่: https://pastebin.com/9WsMk1JC ) ของ Sentinel (รวมถึง sendinel.conf ที่กำหนดเองด้วย)
ใน redis.confมีการเพิ่มพารามิเตอร์ทั้งสามนี้ (ส่วนที่เหลือยังคงเป็นไฟล์ conf เริ่มต้น):
รหัสผ่านหลัก
ผู้ใช้หลักเริ่มต้น
ต้องการรหัสผ่าน
ใน sendinel.confเนื่องจากการแยกอินสแตนซ์ redis (คอนเทนเนอร์อื่น) และ Sentinel ถูกตั้งค่าให้บูตด้วยมาสเตอร์ที่ไม่มีอยู่บน localhost ฉันได้เพิ่มพารามิเตอร์เพื่อทำการตรวจสอบสิทธิ์กับมาสเตอร์แล้ว ดังนั้นไฟล์ config จึงมีพารามิเตอร์เพิ่มเติมสองตัว (ส่วนที่เหลือยังคงเป็นไฟล์ conf เริ่มต้น):
Sentinel auth-pass รหัสผ่าน mymaster
sendinel auth-user mymaster เป็นค่าเริ่มต้น
หลังจากบูทคอนเทนเนอร์ redis และพร้อมสำหรับการเชื่อมต่อ ฉันเริ่มอิมเมจของเซนทิเนล เมื่อเสร็จแล้ว ฉันจะเชื่อมต่อกับ redis CLI บนพอร์ตเซนทิเนลและสลับมาสเตอร์ด้วยมือ:
redis-cli -p 26379 Sentinel ลบ mymaster && redis-cli -p 26379 Sentinel มอนิเตอร์ mymaster <redis คอนเทนเนอร์ ip> 6379 2
CLI ของ Sentinel ส่งคืนค่า OK สองครั้ง แต่หลังจากนั้นไม่นานก็พิมพ์ออกมาว่าตัวหลักหยุดทำงาน และอยู่ในสถานะนี้ตลอดไป
การเชื่อมต่อระหว่างคอนเทนเนอร์ที่ทดสอบผ่าน telnet และ ping - ตกลง
ฉันเดาว่า Redis Sentinel ไม่สามารถเชื่อมต่อกับมาสเตอร์ได้ - เนื่องจากรหัสผ่าน
ทำไม
- แบบจำลองของคอนเทนเนอร์ redis - การสร้างสำเนาภาพสองสามภาพที่ทำงานและเข้าร่วมใน MASTER-SLAVE ผ่าน CLI ใช้งานได้อย่างมีเสน่ห์ ตู้คอนเทนเนอร์สามารถคุยกันโดยใช้รหัสผ่านจาก redis.conf
- ก่อนที่จะแนะนำรหัสผ่านให้กับ redis contianers เหล่าทหารรักษาการณ์สามารถเชื่อมต่อและทำการเฟลโอเวอร์ได้สำเร็จ
- ทำงานบน Openshift โดยไม่ต้องตั้งรหัสผ่าน