ระบบการจัดการการกำหนดค่า (CM) ที่เป็นที่ยอมรับมากขึ้นเช่น Puppet และ Chef ใช้วิธีการแบบดึง: ไคลเอนต์สำรวจต้นแบบหลักที่ส่วนกลางเป็นระยะสำหรับการปรับปรุง บางคนเสนอวิธีการที่ไม่เชี่ยวชาญเช่นกัน (เช่นเป็นแบบ push-based) แต่ระบุว่ามันไม่ใช่ 'สำหรับการผลิต' (Saltstack) หรือ 'scalable ที่น้อยลง' (Puppet) ระบบเดียวที่ฉันรู้ว่าเป็นแบบ push-based ตั้งแต่เริ่มต้นคือวิ่ง Ansible
อะไรคือข้อได้เปรียบในการปรับขนาดที่เฉพาะเจาะจงของระบบที่ใช้แรงดึง ทำไมมันจึงง่ายกว่าที่จะเพิ่ม pull-masters มากกว่า push-agent
ตัวอย่างเช่นagiletesting.blogspot.nlเขียน:
ในระบบ 'ดึง' ลูกค้าจะติดต่อกับเซิร์ฟเวอร์โดยไม่ขึ้นต่อกันดังนั้นระบบโดยรวมสามารถปรับขนาดได้มากกว่าระบบ 'ดัน'
ในอีกทางหนึ่ง Rackspace แสดงให้เห็นว่าพวกเขาสามารถจัดการกับระบบ 15Kด้วยรูปแบบการผลักดัน
infastructures.orgเขียน:
เราสาบานด้วยวิธีการดึงสำหรับการบำรุงรักษาโครงสร้างพื้นฐานโดยใช้เครื่องมือเช่น SUP, CVSup, เซิร์ฟเวอร์ rsync หรือ cfengine แทนที่จะผลักดันการเปลี่ยนแปลงไปยังไคลเอนต์แต่ละเครื่องไคลเอนต์แต่ละคนจะต้องรับผิดชอบในการสำรวจเซิร์ฟเวอร์ทองคำตอนบูตและหลังจากนั้นเป็นระยะเพื่อรักษาระดับการหมุนรอบของตัวเอง ก่อนที่จะนำมุมมองนี้มาใช้เราได้พัฒนาสคริปต์แบบพุชอิงที่มีพื้นฐานมาจาก ssh, rsh, rcp และ rdist ปัญหาที่เราพบกับคำสั่ง r-(หรือ ssh) คือ: เมื่อคุณรันสคริปต์ตามคำสั่ง r เพื่อผลักดันการเปลี่ยนแปลงไปยังเครื่องเป้าหมายของคุณอัตราต่อรองคือว่าถ้าคุณมีโฮสต์เป้าหมายมากกว่า 30 คนหนึ่งในนั้นจะ จะลงในเวลาใดก็ได้ การดูแลรักษารายชื่อของเครื่องจักรที่ได้รับหน้าที่กลายเป็นฝันร้าย ในระหว่างการเขียนโค้ดเพื่อแก้ไขสิ่งนี้คุณจะได้รับรหัส wrapper ที่ซับซ้อนเพื่อจัดการกับ: หมดเวลาจากโฮสต์ที่ตายแล้ว การบันทึกและลองโฮสต์ที่ตายแล้ว การฟอร์กและการรันงานแบบขนานเพื่อพยายามโฮสต์หลายโฮสต์ในเวลาที่เหมาะสม และในที่สุดก็ตรวจจับและป้องกันกรณีของการใช้ซ็อกเก็ต TCP ที่มีอยู่ทั้งหมดบนเครื่องต้นทางด้วยเซสชัน rsh ขาออกทั้งหมด จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม การฟอร์กและการรันงานแบบขนานเพื่อพยายามโฮสต์หลายโฮสต์ในเวลาที่เหมาะสม และในที่สุดก็ตรวจจับและป้องกันกรณีของการใช้ซ็อกเก็ต TCP ที่มีอยู่ทั้งหมดบนเครื่องต้นทางด้วยเซสชัน rsh ขาออกทั้งหมด จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม การฟอร์กและการรันงานแบบขนานเพื่อพยายามโฮสต์หลายโฮสต์ในเวลาที่เหมาะสม และในที่สุดการตรวจจับและป้องกันกรณีของการใช้ซ็อกเก็ต TCP ที่มีอยู่ทั้งหมดบนเครื่องต้นทางด้วยเซสชัน rsh ขาออกทั้งหมด จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม และในที่สุดการตรวจจับและป้องกันกรณีของการใช้ซ็อกเก็ต TCP ที่มีอยู่ทั้งหมดบนเครื่องต้นทางด้วยเซสชัน rsh ขาออกทั้งหมด จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม และในที่สุดการตรวจจับและป้องกันกรณีของการใช้ซ็อกเก็ต TCP ที่มีอยู่ทั้งหมดบนเครื่องต้นทางด้วยเซสชัน rsh ขาออกทั้งหมด จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม จากนั้นคุณยังคงมีปัญหาในการรับสิ่งที่คุณเพิ่งทำลงไปในอิมเมจการติดตั้งสำหรับโฮสต์ใหม่ทั้งหมดที่จะติดตั้งในอนาคตเช่นเดียวกับการทำซ้ำสำหรับโฮสต์ที่ตายและต้องสร้างใหม่ในวันพรุ่งนี้ หลังจากปัญหาที่เราผ่านการใช้การจำลองแบบ r-command เราพบว่ามันไม่คุ้มค่า เราไม่ได้วางแผนเกี่ยวกับการจัดการโครงสร้างพื้นฐานด้วยคำสั่ง r อีกครั้งหรือด้วยกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม หรือกับกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม หรือกับกลไกการผลักดันอื่น ๆ สำหรับเรื่องนั้น พวกเขาไม่ได้ปรับขนาดเช่นเดียวกับวิธีการดึงตาม
นั่นไม่ใช่ปัญหาการดำเนินการแทนที่จะเป็นสถาปัตยกรรมใช่หรือไม่ ทำไมการเขียนไคลเอนต์พุชแบบเธรดจึงยากกว่าเซิร์ฟเวอร์ดึงแบบเธรด?
ansible-pull
กัน