Cron outgrowing: qual è il prossimo scheduler?

Abbiamo usato cron per circa fino a quando posso ricordare di gestire tutte le nostre esigenze di pianificazione del lavoro. Tutto da cloni di archiviazione / snapshot ai rapporti sui database per i report di sistema quotidiani ai controlli di controllo sono pianificati in poche centinaia di server tramite cron.

Gli inconvenienti sono abbastanza evidenti: difficoltà a gestire i lavori, non è un modo semplice per creare dependencies (soprattutto tra diversi server) e, naturalmente, è inevitabile che qualcuno "temporaneamente" salta un lavoro ma poi dimentica di rimuovere il commento.

  • È male per modificare manualmente il file cron?
  • Riavviare se il servizio tomcat7 non risponde
  • CronTab: Non eseguire i miei script PHP?
  • Perché il mio lavoro cron eseguito questo mese?
  • Limitare l'utilizzo di cron
  • Cron lavoro per aprire una pagina web?
  • Abbiamo provato un'offerta commerciale, ma alla fine è stato considerato troppo costoso come un passo da cron.

    Vedo altre opzioni là fuori, come SLURM, Oracle Grid Engine, Torque / Maui, Quarzo, DIET, Condor che sembrano essere orientati verso ambienti di cluster più grandi e omogenei con lavori che potrebbero funzionare su qualsiasi numero di nodes simili: grid computing e simili. Il nostro ambiente è abbastanza misto (vari Linux, AIX e FreeBSD) e abbiamo bisogno di creare dependencies in diversi tipi di sisthemes (ad esempio un lavoro in una casella Linux potrebbe essere necessario determinare se un lavoro in una casella AIX dovrebbe essere eseguito.)

    Qualcuno ha alcuna esperienza passando da cron ad un'offerta più centralizzata? Qualsiasi suggerimento per scegliere il software o se è meglio andare a fonte aperta o commerciale?

    6 Solutions collect form web for “Cron outgrowing: qual è il prossimo scheduler?”

    Condor, OGE e Torque possono farti arrivare, ma solo Condor ha la gestione dipendenza integrata con lo strumento DAGMan . DAGMan consente di impostare un grafico aloopsco diretto che descrive il stream di lavoro e il gestore prende cura di passare attraverso i lavori nel stream di lavoro e di valutare i risultati di pass / fail in each fase del stream. Condor è relativamente piattaforma agnostica, il che significa che DAGMan è troppo, e si può sicuramente avere un passo per bambini su AIX quando il genitore ha eseguito su Linux o Windows. DAGMan non è interessato a where i posti di lavoro vengono eseguiti, solo i codici di output sono passati o non riusciti.

    Qualsiasi suggerimento per scegliere il software o se è meglio andare a fonte aperta o commerciale?

    Con alcune previsioni credo che le comunità libere in questo spazio vale la pena di guardare.

    OGE è ora in uno spazio strano. Non è più libero di eseguire la variante GE prodotta da Oracle e Oracle non è più il codice di contribuzione che scrive al GE SCC, ma esistono parecchie forche del codice esistenti che stanno cercando di soldati come progetti gratuiti open source. Univa in particolare ha guidato la carica , assumendo ex-Sun GE devs per continuare a lavorare su una variante GE open source liberamente disponibile. Il Grid Engine ha due cose: è facile da configurare, è in grado di gestire corse brevi (<2 minuti), senza dare un sacco di pianificazione overhead sui lavori che rallenta il throughput. È un grande problema negativo è che non esiste un ottimo supporto per Windows. Alcuni di noi hanno messo alcuni sforzi per portrlo a correre su Cygwin molti anni fa, ma non è così buono come nativo che è di sicuro.

    Ora Condor è la mia preferita delle tre tecnologie che hai citato. C'è una comunità forte intorno a Condor e il software è molto maturo (> 20 anni adesso). Il supporto nativo di Windows e POSIX significa che funziona in tutto il luogo molto bene. Il suddetto DAGMan è solo uno dei tanti pezzi grandi che vengono con Condor. Può essere un touch complicato da installare, ma una volta che è in esecuzione è una roccia solida. Ha un linguaggio incredibilmente flessibile per fare la corrispondenza delle macchine <-> e build le tue regole di utilizzo per le vostre risorse. Support anche il provisioning dinamico sulle macchine, consentendo ai lavori di select la quantità di risorse di macchine necessarie e di riesaminare la differenza come ancora disponibile. Support contatori di risorse globali in modo da poter limitare le cose come licenze software. E ovviamente, ha DAGMan, uno strumento incredibilmente potente per la gestione dei flussi di lavoro. L'aspetto negativo di Condor è che l'overhead di pianificazione per i lavori a corto raggio può essere gravoso. Desideri i lavori che funzionano più a 2 minuti in modo ideale, altrimenti la pianificazione comincia a diventare una grande parte del tempo del lavoro nel sistema.

    La coppia è un po 'più di nicchia. Lo so di less, temo. Si confronta più con il Motore Griglia di Condor. Ci sono addebiti addizionali che @warren ha menzionato che può espandere ciò che la coppia di base e libera può fare.

    Se si desidera provare le tre tecnologie e vedere come funzionano con i vostri carichi di lavoro specifici, CycleCloud può creare centri protetti e virtualizzati, preconfigurati con Condor, GridEngine o Torque – per cui non c'è tempo trascorso a calcolare quei materiali da parte tua. Sarebbe un paio di dollari per lanciare piccole piscine di each tecnologia e provarle con carichi di lavoro rappresentativi. (Disclaimer: lavoro per Cycle Computing, facciamo CycleCloud)

    Chronos sembra molto promettente.

    Chronos è la sostituzione di Airbnb per cron. Si tratta di uno scheduler distribuito e fault-tolerant che funziona in cima a Apache Mesos. Puoi utilizzarlo per organizzare i lavori. Support gli esecutori personalizzati di Mesos così come l'esecutore di command predefinito. Di conseguenza, per impostazione predefinita, Chronos esegue sh (nella maggior parte dei bash bash) script. Chronos può essere utilizzato per interagire con sisthemes come Hadoop (incluso EMR), anche se gli slavi Mesos su cui si verifica l'esecuzione non hanno installato Hadoop. Gli script di wrapper inclusi consentono il trasferimento dei file e l'esecuzione di tali file su una macchina remota in background e l'utilizzo di richiamamenti asincroni per informare Chronos dei compiti o dei guasti.

    Ho anche capito grande successo personale utilizzando Jenkins come sostituzione cron. Maneggia l'esecuzione dei lavori sui server remoti abbastanza bene. Ecco un commento su di esso: http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/

    Negli ultimi 4.5 anni ho lavorato con la piattaforma di automazione server HP (nee Opsware) e con il resto della suite Business Technology Optimization (Network Automation, Orchestration Operations, ecc.).

    Per un ambiente abbastanza grande, la gestione del lavoro tramite SA è un attrezzo molto efficace (e desiderabile). In collaborazione con OO, i lavori possono essere controllati tramite la gestione del controllo delle modifiche, la biglietteria, ecc.

    Ecco la parte non così divertente: è caro (molto costoso). Potresti controllare alcuni suggerimenti in una domanda simile che ho richiesto un po 'di tempo: strumenti di gestione e controllo di FLOSS Server .

    Direi anche che Torque / Maui / Moab (da Adaptive Computing ) sono molto cool: non sono sicuri sul prezzo, ma sono anche strumenti altamente flessibili.


    Disclaimer – Lavoro per un partner di HP BTO e Adaptive

    NOTA Un problema completamente diverso!

    cron è vecchio e agitato in certi termini.

    Se stai cercando nuovi modi per fare una pianificazione, provo qualcosa di evento basato su un middleware di messaggistica. Pensate a RabbitMQ con i client su ciascun server.

    Le dependencies di Inter Host possono essere risolte con "code di notifica".

    Gli events "Real" basati sul tempo sono un po 'più complicati, in realtà ciò che è per cron (ed è abbastanza buono, alless per quanto riguarda piccoli ambienti). Dove è difficile get l'idea è quello di impedire hickups. Come in: each sera alle 01:00 fanno un'istantanea. Potresti vedere alcuni picchi di carico o un sacco di errori di accesso in quel momento in cui si è svolta tutta la tua infrastruttura. Se si dispone di una coda basata su un approccio si otterrà alless una deviazione per libero (anche se non è garantito – a less che alcuni logica implementa quello).

    La cosa da fare è che senza lavori in tempo reale non si può fare affidamento su cose come: yeah i miei backup inizieranno alle 0200h e se corrono ancora a 0400h qualcosa è sbagliato. Quello che è più facile da fare è assicurarsi che nessun lavoro che interferisca sia eseguito contemporaneamente. Basta fare un agente di block che consumerà solo un lavoro alla volta.

    La parte di gestione sarebbe una bella interface web in cui i lavori possono essere presentati sia su richiesta, sia – ora si torna a "cron" o la tua implementazione preferita di esso lo scheduler di quarto java ha una granularità in secondi AFAIK – per il parte del tempo usa solo buon vecchio cron 🙂

    Non fathemes scoraggiare per essere OT – è un concetto piuttosto ruvido, ma poiché la questione non esclude il denaro uno potrebbe anche spendere i soldi per get la soluzione per i requisiti in-house proprio creando qualcosa piuttosto che spendere il denaro comprando qualcosa in cui un venditore pensa che abbia completato alcuni requisiti 🙂

    Ho usato Espresso (Cybermation) da CA. Non sono sicuro di cosa lo stanno chiamando adesso. Ho anche usato UC4. Entrambi lavorano, costano un sacco di soldi (alla mia comprensione) e possono essere un orso per mantenere, ma fanno quello che dice sulla latta. / Edit – hai perso quello che dici che le applicazioni commerciali sono troppo costose. Sono sicuramente d'accordo, ma per alcune aziende ne vale la pena, specialmente quando si tratta di applicazioni aziendali che fanno soldi.

    Ho lavorato con l' Open Source Job Scheduler come opzione per sostituire un crontab centrale di 2000+ linee in un ambiente di produzione. Le cose sono così complicate con cron, che non abbiamo potuto determinare quali windows di inattività o come gestire le dependencies inter-server. Questo prodotto ha aiutato, ma era un po 'complicato da configurare.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.