Outgrowing cron: กำหนดการต่อไปคืออะไร? [ปิด]


30

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

ข้อเสียคือค่อนข้างชัดเจน: ยากต่อการจัดการงานไม่มีวิธีง่ายๆในการสร้างการอ้างอิง (โดยเฉพาะในเซิร์ฟเวอร์ที่แตกต่างกัน) และแน่นอนว่าเป็นเรื่องที่หลีกเลี่ยงไม่ได้ที่บางคน "ชั่วคราว" ข้ามงาน แต่ภายหลังลืมลบความคิดเห็น

เราลองเสนอขายเชิงพาณิชย์ แต่ในที่สุดมันก็ถือว่าแพงเกินไปเมื่อเทียบกับ cron

ฉันเห็นตัวเลือกอื่น ๆ เช่น SLURM, Oracle Grid Engine, Torque / Maui, Quartz, DIET, Condor ซึ่งดูเหมือนว่าจะมุ่งเน้นไปที่สภาพแวดล้อมของคลัสเตอร์ที่มีขนาดใหญ่ขึ้นและเป็นเนื้อเดียวกันมากขึ้นด้วยงานซึ่งจะทำงานบนโหนดจำนวนเดียวกัน และไม่ชอบ สภาพแวดล้อมของเรามีความหลากหลาย (Linux, AIX และ FreeBSD) และเราจำเป็นต้องสร้างการพึ่งพาข้ามระบบที่แตกต่างกัน (เช่นงานบนกล่อง Linux อาจต้องพิจารณาว่างานบนกล่อง AIX ควรทำงานหรือไม่)

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

คำตอบ:


11

แร้ง OGE และแรงบิดทั้งหมดได้รับคุณมี แต่เพียงแร้งมีในตัวจัดการการพึ่งพาด้วยนั้นเครื่องมือ DAGMan DAGMan ช่วยให้คุณตั้งค่ากราฟ acyclic โดยตรงที่อธิบายขั้นตอนการทำงานของคุณและผู้จัดการจะดูแลการเคลื่อนย้ายผ่านงานในเวิร์กโฟลว์ของคุณและประเมินผลการผ่าน / ไม่ผ่านในแต่ละขั้นตอนในการไหล Condor เป็นแพลตฟอร์มที่ไม่เชื่อเรื่องพระเจ้าซึ่งหมายความว่า DAGMan นั้นเหมือนกันและคุณสามารถมีขั้นตอนย่อยหนึ่งลูกบน AIX เมื่อพาเรนต์รันบน Linux หรือ Windows DAGMan ไม่เกี่ยวข้องกับตำแหน่งที่ใช้งานเพียงรหัสทางออกนั้นผ่านหรือไม่ผ่าน

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

ด้วยคำเตือนบางอย่างฉันคิดว่าชุมชนฟรีในพื้นที่นี้คุ้มค่าที่จะดู

OGE อยู่ในพื้นที่ประหลาดตอนนี้ ไม่มีอิสระในการใช้งานชุดตัวเลือก GE ที่ผลิตโดย Oracle และ Oracle ไม่สนับสนุนรหัสที่เขียนกลับไปที่ GE SCC อีกต่อไป แต่มีรหัสที่มีอยู่หลายตัวที่พยายามทำหน้าที่เป็นทหารในโครงการโอเพ่นซอร์สฟรี โดยเฉพาะอย่างยิ่ง Univa นำไปสู่การคิดค่าจ้างว่าจ้างอดีต GE Sun devs เพื่อทำงานในโอเพนซอร์ซต่อไป Grid Engine มีสองสิ่งที่จะเกิดขึ้น: มันง่ายต่อการติดตั้งมันสามารถจัดการงานระยะสั้น (<2 นาที) โดยไม่ต้องกำหนดการจัดส่งค่าโสหุ้ยในงานที่ช้าลง ข้อเสียที่ยิ่งใหญ่คือมีการสนับสนุน Windows ไม่ดีมาก พวกเราบางคนใช้ความพยายามในการพอร์ตให้ทำงานบน Cygwin เมื่อหลายปีก่อน แต่มันก็ไม่ดีเท่าของพื้นเมืองที่แน่นอน

ตอนนี้ Condor เป็นที่ชื่นชอบในสามเทคโนโลยีที่คุณพูดถึง มีชุมชนที่เข้มแข็งรอบ ๆ Condor และซอฟต์แวร์นั้นมีความสมบูรณ์มาก (มากกว่า 20 ปีแล้ว) การสนับสนุนเนทิฟ Windows และ POSIX OS หมายความว่ามันทำงานได้ดีทุกที่ DAGMan ดังกล่าวเป็นเพียงหนึ่งในชิ้นส่วนที่ยอดเยี่ยมมากมายที่มาพร้อมกับ Condor อาจเป็นเรื่องยุ่งยากในการตั้งค่า แต่เมื่อมันเริ่มใช้งานแล้วมันจะแข็งเป็นก้อน มันมีภาษาที่ยืดหยุ่นอย่างไม่น่าเชื่อสำหรับการทำงานจับคู่เครื่อง <-> และสร้างกฎการใช้งานของคุณสำหรับทรัพยากรของคุณ นอกจากนี้ยังสนับสนุนการจัดเตรียมแบบไดนามิกบนเครื่องช่วยให้งานเลือกทรัพยากรเครื่องจักรที่ต้องการและทำการโฆษณาอีกครั้งว่ายังคงมีความแตกต่างอยู่ รองรับเคาน์เตอร์ทรัพยากรทั่วโลกเพื่อให้คุณสามารถควบคุมสิ่งต่างๆเช่นลิขสิทธิ์ซอฟต์แวร์ และแน่นอน มันมี DAGMan ซึ่งเป็นเครื่องมืออันทรงพลังสำหรับการจัดการเวิร์กโฟลว์ ข้อเสียของ Condor คือค่าใช้จ่ายในการจัดตารางเวลาสำหรับงานระยะสั้นอาจเป็นภาระ คุณต้องการให้งานที่ใช้เวลานานกว่า 2 นาทีอย่างสมบูรณ์แบบไม่เช่นนั้นการตั้งเวลาจะกลายเป็นส่วนสำคัญของเวลาของงานในระบบ

แรงบิดเป็นช่องเล็ก ๆ น้อย ๆ ฉันรู้น้อยกว่าเกี่ยวกับมันฉันกลัว มันเปรียบเทียบกับ Grid Engine มากกว่า Condor มีส่วนเสริมที่ @warren พูดถึงซึ่งสามารถขยายสิ่งที่ Torque พื้นฐานฟรีสามารถทำได้

หากคุณต้องการลองใช้เทคโนโลยีทั้งสามและดูวิธีการทำงานกับปริมาณงานเฉพาะของคุณCycleCloudสามารถหมุนได้อย่างปลอดภัยเสมือนจริงพูลที่กำหนดค่าไว้ล่วงหน้าด้วย Condor, GridEngine หรือ Torque - ดังนั้นจึงไม่มีเวลาในการหาสิ่งที่ต้องการ ในส่วนของคุณ อาจเป็นเพียงไม่กี่ดอลลาร์ในการหมุนกลุ่มเล็ก ๆ ของแต่ละเทคโนโลยีและลองใช้กับปริมาณงานที่เป็นตัวแทน (ข้อจำกัดความรับผิดชอบ: ฉันทำงานให้กับ Cycle Computing เราสร้าง CycleCloud)


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

1
Condor สามารถจัดการกับสถานการณ์ของคุณ คุณสามารถ จำกัด งานจาก DAG ได้หลายวิธีดังนั้นพวกเขาจึงกำหนดเป้าหมายเครื่องหรือฮาร์ดแวร์ที่เฉพาะเจาะจงในกลุ่มของคุณ
เอียนซี

6

โครโนสดูสดใสมาก

โครโนสเป็นตัวแทนของ cron Airbnb มันเป็นตัวกำหนดตารางเวลาการกระจายและการยอมรับข้อผิดพลาดที่ทำงานบน Apache Mesos คุณสามารถใช้มันเพื่อจัดการงาน มันรองรับตัวจัดการ Mesos ที่กำหนดเองเช่นเดียวกับตัวจัดการคำสั่งเริ่มต้น ดังนั้นโดยค่าเริ่มต้น Chronos รันสคริปต์ sh (ในระบบทุบตีส่วนใหญ่) Chronos สามารถใช้เพื่อโต้ตอบกับระบบเช่น Hadoop (รวมถึง EMR) แม้ว่าทาส Mesos ที่การดำเนินการจะไม่ติดตั้ง Hadoop สคริปต์ตัวห่อหุ้มที่รวมอยู่นั้นอนุญาตให้ถ่ายโอนไฟล์และเรียกใช้งานบนเครื่องระยะไกลในพื้นหลังและใช้การเรียกกลับแบบอะซิงโครนัสเพื่อแจ้งเตือน Chronos ถึงความสำเร็จของงานหรือความล้มเหลว

ฉันยังเป็นผู้นำที่ประสบความสำเร็จอย่างยิ่งใหญ่ด้วยการใช้เจนกินส์เป็นตัวสำรอง มันจัดการกับการดำเนินงานบนเซิร์ฟเวอร์ระยะไกลค่อนข้างดี นี่คือการเขียนมัน: http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/


4

ตลอดระยะเวลา 4.5 ปีที่ผ่านมาฉันได้ทำงานกับแพลตฟอร์มการทำงานอัตโนมัติของเซิร์ฟเวอร์ (nee Opsware) ของ HP และส่วนที่เหลือของชุดการเพิ่มประสิทธิภาพเทคโนโลยีทางธุรกิจ (การทำงานอัตโนมัติบนเครือข่าย

สำหรับสภาพแวดล้อมที่มีขนาดใหญ่เพียงพอการจัดการงานผ่าน SA เป็นเครื่องมือที่มีศักยภาพสูง ร่วมกับ OO สามารถควบคุมงานผ่านการจัดการการควบคุมการเปลี่ยนแปลงการจองตั๋ว ฯลฯ

นี่คือส่วนที่ไม่ให้สนุก: มันแพง (แพงมาก) คุณอาจตรวจสอบบางส่วนของข้อเสนอแนะในคำถามที่คล้ายกันผมถามกลับในขณะที่: ขัดเซิร์ฟเวอร์การจัดการและการตรวจสอบเครื่องมือ

ฉันยังบอกด้วยว่า Torque / Maui / Moab (จากAdaptive Computing ) นั้นเจ๋งมาก : ไม่แน่ใจเรื่องราคา แต่เป็นเครื่องมือที่มีความยืดหยุ่นสูงเช่นกัน


ข้อจำกัดความรับผิดชอบ - ฉันทำงานให้กับพันธมิตรของ HP BTO และ Adaptive


2

หมายเหตุปัญหาที่แตกต่างอย่างสิ้นเชิง!

cron คือเก่าและ clunky ในแง่บางอย่าง

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

การพึ่งพาระหว่างโฮสต์สามารถแก้ไขได้ด้วย "คิวการแจ้งเตือน"

เหตุการณ์ "ตามเวลาจริง" นั้นเป็นเรื่องเล็กน้อยที่จริงแล้ว cron นั้นมีไว้สำหรับ (และค่อนข้างดีที่เกี่ยวกับสภาพแวดล้อมขนาดเล็ก) จุดที่มันยากที่จะถือความคิดคือการป้องกันไม่ให้ hickups ชอบใน: ทุกคืนที่ 0100h ทำภาพรวม คุณอาจเห็นการเพิ่มขึ้นของโหลดสูงหรือการเข้าสู่ระบบล้มเหลวจำนวนมากในขณะนั้นผ่านโครงสร้างพื้นฐานทั้งหมดของคุณ หากคุณมีคิวตามวิธีการคุณจะได้รับค่าเบี่ยงเบนอย่างน้อยฟรี (แม้ว่าจะไม่ได้รับการประกัน - ยกเว้นบางตรรกะจะดำเนินการนั้น)

สิ่งที่จะหลีกเลี่ยงได้คือหากไม่มีงานตามเวลาจริงคุณไม่สามารถพึ่งพาสิ่งต่าง ๆ เช่น: การสำรองข้อมูลของฉันจะเริ่มต้นที่ 0200h และหากพวกเขายังคงทำงานในเวลา 0400h มีบางอย่างผิดปกติ สิ่งที่ง่ายกว่าคือการทำให้แน่ใจว่าไม่มีงาน 2 งานที่รบกวนในเวลาเดียวกัน เพียงแค่ทำการบล็อกเอเจนต์ที่จะใช้งานครั้งละหนึ่งงานเท่านั้น

ส่วนการจัดการน่าจะเป็นเว็บอินเตอร์เฟสที่ดีซึ่งสามารถส่งงานได้ตามต้องการหรือตอนนี้มันกลับมาที่ "cron" หรือการใช้งานที่คุณชื่นชอบของมัน java quartz scheduler มีความละเอียดในเวลาไม่กี่วินาที AFAIK - สำหรับ ส่วนตามเวลาเพียงแค่ใช้ cron เก่าดี :)

โปรดอย่าลงคะแนนให้ฉันเพราะเป็น OT - มันเป็นแนวคิดที่ค่อนข้างหยาบ แต่เนื่องจากคำถามไม่ได้ออกกฎเงินเราอาจใช้เงินเพื่อแก้ปัญหาความต้องการภายในบ้านด้วยการสร้างบางอย่างแทนที่จะใช้จ่าย เงินโดยการซื้อสิ่งที่ผู้ขายคิดว่ามันเติมเต็มความต้องการบางอย่าง :)


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

1

ฉันใช้ Espresso (Cybermation) จาก CA ไม่แน่ใจว่าพวกเขากำลังโทรหาอะไรตอนนี้ ฉันใช้ UC4 ด้วย พวกเขาทั้งสองทำงานใช้เงินเป็นจำนวนมาก (เพื่อความเข้าใจของฉัน) และสามารถเป็นหมีที่จะดูแล แต่พวกเขาทำสิ่งที่มันพูดบนกระป๋อง / แก้ไข - พลาดที่คุณบอกว่าแอพเพื่อการค้าแพงเกินไป ฉันเห็นด้วยอย่างแน่นอน แต่สำหรับบาง บริษัท มันคุ้มค่าโดยเฉพาะอย่างยิ่งเมื่อมันเหมาะสำหรับการใช้งานทางธุรกิจที่ทำเงิน


1

ฉันได้ทำงานกับOpen Source Job Schedulerเป็นตัวเลือกในการแทนที่ crontab กลางบรรทัด 2000+ ในสภาพแวดล้อมการผลิต สิ่งต่าง ๆ มีความซับซ้อนมากด้วย cron ซึ่งเราไม่สามารถระบุได้ว่าหน้าต่างดาวน์ไทม์คืออะไรหรือจะจัดการกับการพึ่งพาระหว่างเซิร์ฟเวอร์ได้อย่างไร ผลิตภัณฑ์นี้ช่วย แต่ติดตั้งได้ค่อนข้างซับซ้อน

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