การจัดการแอปพลิเคชันในเซิร์ฟเวอร์หลายเครื่องหรือ PXE กับ cfEngine / Chef / Puppet


15

เรามีแอปพลิเคชั่นที่ทำงานในกล่อง (5 หรือมากกว่านั้นและจะเติบโต) ฮาร์ดแวร์นั้นเหมือนกันในทุกเครื่องและซอฟต์แวร์ก็น่าจะเป็นเช่นกัน ฉันจัดการมันด้วยมือจนถึงตอนนี้และไม่ต้องการอีกต่อไป (ที่อยู่ ip แบบคงที่ปิดใช้งานบริการที่จำเป็นทั้งหมดติดตั้งแพ็คเกจที่จำเป็น ... ) ทุกคนสามารถสร้างสมดุลระหว่างข้อดีข้อเสียของตัวเลือกต่อไปนี้หรือแนะนำสิ่งที่ฉลาดกว่า

1: ติดตั้ง Centos แยกต่างหากบนกล่องทั้งหมดและจัดการการตั้งค่าด้วยพ่อครัว / cfengine / หุ่นเชิด มันจะดีเพราะฉันต้องการแก้ตัวเพื่อเรียนรู้การใช้แอพพลิเคชั่น แต่ฉันไม่รู้ว่านี่เป็นทางออกที่ดีที่สุดหรือไม่

2: ทำให้หนึ่งกล่องสมบูรณ์แบบและภาพมัน แสดงภาพผ่าน PXE และเมื่อใดก็ตามที่ฉันต้องการแก้ไขฉันสามารถรีบูตกล่องจากภาพใหม่ โดยปกติแล้วคลัสเตอร์คลัสเตอร์จะจัดการกับสิ่งต่าง ๆ เช่นมีที่อยู่ mac ในไฟล์ / etc / sysconfig / network-script / ifcfg * ได้อย่างไร เราใช้ infiniband เช่นกันและก็ปฏิเสธที่จะเริ่มต้นหาก hwaddr ผิด สามารถสร้างสิ่งเหล่านี้ได้อย่างถูกต้องเมื่อบู๊ต?

ฉันเอนไปทางโซลูชัน PXE แต่ฉันคิดว่าการตรวจสอบด้วย munin หรือ nagios จะซับซ้อนกว่านี้เล็กน้อย ใครมีประสบการณ์เกี่ยวกับปัญหาประเภทนี้บ้าง

เซิร์ฟเวอร์ทั้งหมดมี SSD อยู่ในนั้นและรวดเร็วและมีประสิทธิภาพ

ขอบคุณแมตต์

คำตอบ:


12

คลัสเตอร์ของคุณฟังดูเหมือนคลัสเตอร์ HPC มากกว่า OLTP เหมือนของฉัน แต่ฉันคิดว่าการตั้งค่าที่ฉันใช้จะทำงานได้ดีสำหรับคุณเช่นกัน ฉันเรียกมันว่า "mpdehaan trifecta" เพราะนั่นคือ ircnick ของคนที่เขียนหรือจัดการเครื่องมือทั้งสามที่เกี่ยวข้อง

1. ) พายผลไม้สำหรับการจัดสรรฐานสร้าง Cobbler เป็นโครงการที่มุ่งหวังที่จะเป็นจุดตัดของจุดเริ่มต้นของคุณ, pxe, yum-repo, dhcp, dns, และระบบอื่น ๆ มันเป็นวิธีที่ง่ายที่สุดในการตั้งค่าเริ่มต้นและเริ่มใช้งานและคุณสามารถเติบโตไปสู่คุณสมบัติอื่น ๆ ได้ตามต้องการ

2. ) Puppetสำหรับการจัดการการกำหนดค่า นึกคิดเจ้าภาพพายผลไม้ที่สร้างขึ้นของคุณมีมากเล่าเรื่อง configs รู้ว่าเพียงแค่พอที่จะที่บ้านโทรศัพท์ไปยังเซิร์ฟเวอร์หุ่นเชิดของคุณในการเริ่มต้น Puppet จะใช้การตั้งค่าการกำหนดค่าของคุณและทำให้มันสอดคล้องกันในสภาพแวดล้อมของคุณในความเป็นอมตะ

3. ) Funcสำหรับคำสั่ง ad-hoc ไปยังหลายเครื่องพร้อมกัน ตัวอย่างเช่น "ปรับใช้การชำระเงิน svn ใหม่ของรหัสและเริ่ม apache" มันง่ายมากที่จะใช้ func ในการเรียกคำสั่ง bash เดียวกันบนกลุ่มของเซิร์ฟเวอร์เช่นเดียวกับ cluster-ssh หากคุณต้องการเข้าร่วมคุณสามารถเขียนโมดูลของคุณเองด้วยหลามที่เรียบง่าย

เครื่องมือทั้งสามนี้มีช่องสัญญาณของ wiki และ active irc ที่ดีสำหรับความช่วยเหลือใน freenode


ฉันคิดว่านี่เป็นทางออกที่ฉันจะไป ฉันจะให้มันยิงและให้คุณทุกคนรู้ ฉันอาจจะบล็อกกระบวนการเช่นกัน ขอบคุณ!
แมตต์

5

ภาพรวม

ในบางวิธีคุณมีสองคำถามที่นี่ ..

  • ฉันจะสร้างและบำรุงรักษาเซิร์ฟเวอร์มาตรฐานได้อย่างไร
  • ฉันจะรักษาการกำหนดค่ามาตรฐานและทำการเปลี่ยนแปลงในภายหลังได้อย่างไร

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

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

เซิร์ฟเวอร์อาคาร

ฉันไม่ชอบภาพในโลกของยูนิกซ์ นั่นเป็นวิธีสไตล์ Windows มากกว่า แม้แต่คน Windows บางคนก็ดูเหมือนจะให้ความสำคัญกับสคริปต์สำหรับการสร้างมาตรฐานในตอนนี้

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

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

ก่อนอื่นใช้ประโยชน์จากการสร้างการกระจายอัตโนมัติของคุณเช่น Kickstart ใน RHEL / CentOS การเริ่มต้นจะเป็นพื้นฐานกับการเปลี่ยนแปลงขึ้นอยู่กับความต้องการของคุณ การสร้าง Kickstart สามารถเริ่มต้นได้จากเซิร์ฟเวอร์ PXE

สำหรับส่วนเพิ่มเติมขั้นสูงของบิลด์และสิ่งที่ไม่เหมาะกับไฟล์ Kickstart คุณสามารถเขียนสคริปต์ที่คุณกำหนดเองได้ อย่างไรก็ตามคุณอาจพบว่าหุ่นกระบอกหรือ cfengine ทำงานได้ดีสำหรับคุณแทนที่จะเป็นสคริปต์ที่กำหนดเอง ฉันพบว่าสคริปต์ที่กำหนดเองมีความยืดหยุ่นมากที่สุดและไม่ จำกัด เพียงวิธีการเดียว

หากคุณเลือกที่จะเขียนสคริปต์ของคุณเองฉันแนะนำสคริปต์หลักสำหรับการกำหนดค่าสากล นี่จะเป็นการกำหนดค่าความปลอดภัยการชุบแข็งและสิ่งใดก็ตามที่ใช้กับบิลด์ทั้งหมด จากนั้นสคริปต์สุดท้ายเพื่อจบบทบาทเซิร์ฟเวอร์ ตัวอย่างเช่นเว็บเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ฐานข้อมูล



การบำรุงรักษามาตรฐาน

สิ่งที่คุณอธิบายยังอยู่ภายใต้การบำรุงรักษาการกำหนดค่า สร้างมาตรฐานอัปเดตซอฟต์แวร์และสิ่งอื่น ๆ ที่เกี่ยวข้องกับงานสร้าง แต่มีหลายวิธีที่แยกจากกัน

หากคุณเลือกที่จะพึ่งพาแพ็คเกจระบบซึ่งต่างจากการสร้างซอร์สของคุณเองตามการสร้างสำหรับบทบาทเซิร์ฟเวอร์ที่สำคัญที่สุดของคุณสิ่งต่างๆมากมายสามารถดูแลได้ด้วยยูทิลิตี้ระบบดั้งเดิม นี้สามารถทำได้ง่ายสคริปต์เพื่อให้ทำงานได้เป็นห่วงกับรายการเซิร์ฟเวอร์ของคุณและทำงานforyum -y update package

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

เมื่อคุณอัปเดตมาตรฐานการกำหนดค่าสำหรับเซิร์ฟเวอร์ของคุณเป็นสิ่งสำคัญที่จะต้องใส่ข้อมูลนี้กลับเข้าไปในเซิร์ฟเวอร์มาตรฐานของคุณ


0

เมื่อเร็ว ๆ นี้ฉันเพิ่งเสร็จสิ้นโครงการขนาดใหญ่เพื่อเปิดตัวระบบการจัดการการสร้าง / การจัดสรรและการกำหนดค่าจากส่วนกลางที่ $ WORK เรากำลังใช้งาน CentOS

การออกแบบของฉันซึ่งฉันชอบมากทำให้เราสร้างกระบวนการสร้างได้ในคลิกเดียว (หน้าเว็บ GUI หนึ่งหน้า) โดยใช้สคริปต์ PHP ที่กำหนดเองเพื่อผูกทุกอย่างเข้าด้วยกันผ่าน UI เว็บที่เรียบง่ายและมีประสิทธิภาพ

ทฤษฎีทั่วไปคือ:

  1. ทำการติดตั้งทั้งหมดจากไฟล์ KickStart แบบมินิมัลลิสต์แบบรวมศูนย์ (อย่างดีโอเคสำหรับ x86 และอีกไฟล์สำหรับ x86-64 แต่ยังคงเหมือนกันกับไฟล์ที่แทบจะไม่ต้องเลือกแพ็คเกจเลย)
  2. KickStat ติดตั้งสคริปต์ bootstraps Puppet
  3. Puppet ใช้การกำหนดค่าโหนด / โฮสต์เฉพาะทั้งหมด, การติดตั้งแพ็คเกจ, ฯลฯ

ฉันยอมรับว่ารูปภาพไม่ใช่วิธีที่ใช้ Unix-y ในการทำสิ่งต่าง ๆ ... มันเหมาะกับโลก Windows มากกว่าซึ่งการติดตั้งและตั้งค่าสคริปต์แบบอัตโนมัติ / อัตโนมัตินั้นไม่ง่าย

คุณสามารถแทนที่ Puppet ด้วยระบบการจัดการการกำหนดค่าอื่น ๆ ที่เหมาะกับการเรียกเก็บเงิน แต่ฉันชอบที่ธรรมชาติของหุ่นเชิดและแนวคิดของการลู่เข้า

ระบบนี้ให้ประโยชน์หลายประการ:

  • Puppet จัดการทุกอย่างที่ผ่านการติดตั้งพื้นฐานทั่วไปดังนั้นแพ็คเกจและการกำหนดค่าที่จำเป็นทั้งหมดจึงอยู่ในที่เดียว
  • หุ่นกระบอกทำหน้าที่เป็นแหล่งข้อมูลเพิ่มเติมของเอกสารระดับต่ำ
  • ตราบใดที่คุณยึดติดกับ Puppet (เช่นไม่ทำการเปลี่ยนแปลงการกำหนดค่าในเครื่องหรือรวมกลับเข้าไปใน Puppet) มันเป็นเรื่องเล็กน้อยที่จะสร้างสำเนาของเครื่องจักร
  • เนื่องจากโฮสต์ทั้งหมดถูกสร้างขึ้นจากฐานร่วมกันคุณสามารถติดตั้งฮาร์ดแวร์หรือ VM ล่วงหน้าด้วยชุดแพ็กเกจ base (KickStart) จากนั้นเปลี่ยนเป็นโฮสต์ที่ใช้งานได้โดยเพิ่มคลาสตามต้องการ
  • Puppet อนุญาตให้โฮสต์ "แท็ก" สำหรับการผลิตหรือการพัฒนาดังนั้นจึงเป็นเรื่องง่ายอย่างเหลือเชื่อที่จะสร้างสำเนาการพัฒนา / ทดสอบของโฮสต์อัพเกรดแพ็คเกจหรือทำการเปลี่ยนแปลง config ตามต้องการทดสอบและรวมกลับเข้าสู่การผลิต

0

หากคุณไปตามเส้นทาง pxe อย่าลืมมองดู

http://etherboot.org/wiki/index.php

Gpxe จะให้ความยืดหยุ่นมากขึ้นกับเป้าหมายการบูต มันค่อนข้างง่ายในการบูท aoe blade และไม่มีอะไรที่เหมือนกับการบูทเคอร์เนลจากเซิร์ฟเวอร์ http ระยะไกล !!!!!!!!!! :-)

เซิร์ฟเวอร์ใดที่คุณต้องการใช้

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

ในด้าน pxe คุณมีตัวเลือกน้อยขึ้นอยู่กับไฟล์ I / O ของคุณในคลัสเตอร์ เพียงแค่บูตเคอร์เนลและติดตั้งดิสก์จากระยะไกลผ่าน aoe หรือ iscsi

คุณสามารถทำสิ่งที่ฉลาดมากด้วยการคัดลอกลงบนภาพเขียน เป็นการดีสำหรับการอัปเกรดและย้อนกลับการเปลี่ยนแปลงใด ๆ ที่อาจเป็นปัญหา

ฉันยังประสบความสำเร็จในการใช้รูต nfs โดยใช้โซลูชัน nfs แบบคลัสเตอร์ คุณสามารถระบุไฟล์ต่าง ๆ ที่จะให้บริการขึ้นอยู่กับที่อยู่ของลูกค้า

อีกครั้งคุณต้องตรวจสอบว่าแอปพลิเคชันของคุณชอบที่จะปิด nfs หรือไม่ มันไม่เหมาะสำหรับทุกภาระงาน

เซิร์ฟเวอร์ NFS แบบคลัสเตอร์สามารถมี 192.168.0.1:/etc/hostname 192.168.0.2:/etc/hostname

ดังนั้นลูกค้าทุกคนอ้างอิงไฟล์เดียวกัน แต่รับบริการไฟล์ที่เกี่ยวข้องกับลูกค้า มันเป็นสิ่งที่น่าประทับใจ แต่มันไม่ง่ายเลย!

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

หากคุณใช้โซลูชันเหล่านี้ตรวจสอบให้แน่ใจว่าคุณมีเลเยอร์เครือข่ายที่ออกแบบมาอย่างดีและทนต่อความผิดพลาดและเซิร์ฟเวอร์ nfs / SAN ของคุณได้รับการออกแบบมาเป็นอย่างดี + ปลอดภัย!

การสูญเสียการเชื่อมต่อ NFS / SAN ของคุณจะไม่ดีต่อความสมบูรณ์ของเซิร์ฟเวอร์ :-(

มันค่อนข้างง่ายในการสร้างสคริปต์สำหรับ tftp / pxe เพื่อควบคุมกระบวนการบูต

ถ้าฉันรู้ว่าสิ่งที่คุณพยายามจัดกลุ่มจริง ๆ ฉันอาจนึกถึงวิธีแก้ปัญหาที่เหมาะกับคุณมากกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.