Cron outgrowing: apa penjadwal berikutnya? [Tutup]

30

Kami telah menggunakan cron selama sekitar yang saya ingat untuk menangani semua kebutuhan penjadwalan pekerjaan kami. Semuanya, mulai dari klon / snapshot penyimpanan hingga laporan terhadap basis data, laporan sistem harian, hingga pemeriksaan pengawasan dijadwalkan di beberapa ratus server melalui cron.

Kekurangannya cukup jelas: sulit untuk mengelola pekerjaan, tidak ada cara mudah untuk membuat dependensi (terutama di berbagai server), dan, tentu saja, tidak dapat dihindari bahwa seseorang "sementara" melewatkan pekerjaan tetapi kemudian lupa untuk menghapus komentar.

Kami mencoba penawaran komersial, tetapi pada akhirnya itu dianggap terlalu mahal sebagai langkah maju dari cron.

Saya melihat opsi lain di luar sana, seperti SLURM, Oracle Grid Engine, Torque / Maui, Quartz, DIET, Condor yang tampaknya diarahkan pada lingkungan cluster yang lebih besar dan lebih homogen dengan pekerjaan yang akan berjalan pada sejumlah node yang sama: komputasi grid dan sejenisnya. Lingkungan kita cukup campuran (berbagai Linux, AIX, dan FreeBSD), dan kita perlu membuat dependensi di berbagai jenis sistem (misalnya pekerjaan pada kotak Linux mungkin perlu menentukan apakah pekerjaan pada kotak AIX harus dijalankan.)

Adakah yang punya pengalaman pindah dari cron ke penawaran yang lebih terpusat? Adakah tip untuk memilih perangkat lunak atau apakah lebih baik menjadi open source atau komersial?

Cakemox
sumber

Jawaban:

11

Condor, OGE, dan Torque semua dapat membawa Anda ke sana, tetapi hanya Condor yang memiliki manajemen ketergantungan bawaan dengan alat DAGMan - nya . DAGMan memungkinkan Anda mengatur grafik asiklik langsung yang menggambarkan alur kerja Anda dan manajer menangani perpindahan pekerjaan dalam alur kerja Anda dan mengevaluasi hasil lulus / gagal pada setiap langkah dalam alur. Condor adalah platform agnostik yang relatif, yang berarti DAGMan juga, dan Anda tentu dapat menjalankan satu langkah anak di AIX ketika induknya berjalan di Linux atau Windows. DAGMan tidak peduli dengan di mana pekerjaan dijalankan, hanya bahwa kode keluar lulus atau gagal.

Adakah tip untuk memilih perangkat lunak atau apakah lebih baik menjadi open source atau komersial?

Dengan beberapa peringatan saya pikir komunitas gratis di ruang ini layak untuk dilihat.

OGE berada di ruang yang aneh sekarang. Tidak lagi bebas untuk menjalankan varian GE yang diproduksi Oracle dan Oracle tidak lagi menyumbang kode yang ditulisnya kembali ke GE SCC, tetapi ada beberapa percabangan dari kode yang ada yang mencoba menjadi tentara sebagai proyek sumber terbuka yang gratis. Univa pada khususnya telah memimpin tuntutan , mempekerjakan mantan GE GE devs untuk terus bekerja pada open source, varian GE yang tersedia secara bebas. Grid Engine memiliki dua hal untuk itu: ia mudah diatur, dapat menangani pekerjaan yang berjalan singkat (<2 menit) tanpa memberikan banyak penjadwalan overhead pada pekerjaan yang memperlambat throughput. Kerugian besar adalah tidak ada dukungan yang sangat baik untuk Windows. Beberapa dari kita berupaya untuk porting agar bisa berjalan di Cygwin bertahun-tahun yang lalu, tapi itu pasti tidak sebagus yang asli.

Sekarang Condor adalah favorit saya dari tiga teknologi yang Anda sebutkan. Ada komunitas yang kuat di sekitar Condor dan perangkat lunaknya sangat matang (sekarang> 20 tahun). Dukungan Windows asli dan POSIX OS berarti berjalan di semua tempat dengan sangat baik. DAGMan yang disebutkan di atas hanyalah salah satu dari sekian banyak karya hebat yang datang bersama Condor. Ini bisa menjadi sentuhan yang rumit untuk diatur, tetapi begitu itu dan berjalan itu sangat solid. Ini memiliki bahasa yang sangat fleksibel untuk melakukan pekerjaan <-> pencocokan mesin dan membangun aturan penggunaan Anda untuk sumber daya Anda. Ini juga mendukung penyediaan dinamis pada mesin, membiarkan pekerjaan memilih berapa banyak sumber daya mesin yang mereka butuhkan dan kemudian mengiklankan kembali perbedaan yang masih tersedia. Ini mendukung penghitung sumber daya global sehingga Anda dapat membatasi hal-hal seperti lisensi perangkat lunak. Dan tentu saja, memiliki DAGMan, yang merupakan alat yang sangat kuat untuk manajemen alur kerja. Kelemahan dari Condor adalah penjadwalan overhead untuk pekerjaan jangka pendek bisa memberatkan. Anda menginginkan pekerjaan yang berjalan lebih dari 2 menit idealnya, jika tidak penjadwalan mulai menjadi bagian besar dari waktu pekerjaan dalam sistem.

Torsi sedikit lebih khusus. Aku tahu sedikit tentang itu, aku takut. Ini lebih dibandingkan dengan Grid Engine daripada Condor. Ada add-on berbayar yang disebutkan @warren yang dapat memperluas apa yang dapat dilakukan Torsi dasar, gratis.

Jika Anda ingin mencoba ketiga teknologi dan melihat bagaimana mereka bekerja dengan beban kerja spesifik Anda, CycleCloud dapat mem -spin kolam yang aman, tervirtualisasi, yang telah dikonfigurasikan sebelumnya dengan Condor, GridEngine atau Torque - jadi tidak ada waktu yang dihabiskan untuk mencari tahu hal-hal itu di pihak Anda. Akan butuh beberapa dolar untuk mengumpulkan kumpulan kecil masing-masing teknologi dan mencobanya dengan beban kerja yang representatif. (Penafian: Saya bekerja untuk Cycle Computing, kami membuat CycleCloud)

Ian C.
sumber
Terima kasih untuk informasi. Condor tampaknya benar-benar diarahkan pada koleksi mesin yang lebih besar yang semuanya mampu menjalankan pekerjaan tertentu. Masalah yang saya miliki adalah lebih banyak memiliki banyak pekerjaan yang berjalan di lokasi yang sangat spesifik, tetapi saya perlu menghubungkan pekerjaan bersama untuk berjalan dalam urutan tertentu. Apakah ini sesuatu yang bisa dilakukan Condor juga, atau akan sangat menyakitkan untuk membuatnya bekerja seperti ini?
Cakemox
1
Condor dapat menangani situasi Anda. Anda dapat membatasi pekerjaan dari DAG dengan segala cara sehingga mereka menargetkan mesin atau perangkat keras yang sangat spesifik di kumpulan Anda.
Ian C.
6

Chronos terlihat sangat menjanjikan.

Chronos adalah pengganti Airbnb untuk cron. Ini adalah penjadwal yang terdistribusi dan toleran terhadap kesalahan yang berjalan di atas Apache Mesos. Anda dapat menggunakannya untuk mengatur pekerjaan. Ini mendukung eksekutor Mesos kustom serta pelaksana perintah default. Jadi secara default, Chronos mengeksekusi skrip sh (pada kebanyakan sistem bash). Chronos dapat digunakan untuk berinteraksi dengan sistem seperti Hadoop (termasuk EMR), bahkan jika para budak Mesos yang menjalankan eksekusi tidak memiliki Hadoop yang diinstal. Skrip pembungkus yang disertakan memungkinkan mentransfer file dan mengeksekusinya pada mesin jarak jauh di latar belakang dan menggunakan panggilan balik tidak sinkron untuk memberi tahu Chronos tentang penyelesaian atau kegagalan pekerjaan.

Saya juga memimpin kesuksesan pribadi yang hebat menggunakan Jenkins sebagai pengganti cron. Ia menangani mengeksekusi pekerjaan pada server jauh dengan cukup baik. Berikut ini langganannya: http://www.22ideastreet.com/blog/2014/05/02/replace-local-cron-with-jenkins/

Greg Sheremeta
sumber
4

Selama 4,5 tahun terakhir, saya telah bekerja dengan platform Otomasi Server HP (nee Opsware), dan seluruh rangkaian Optimalisasi Teknologi Bisnis (Otomasi Jaringan, Operasi Penyatuan, dll).

Untuk lingkungan yang cukup besar, manajemen pekerjaan melalui SA adalah alat yang sangat layak (dan diinginkan). Dalam hubungannya dengan OO, pekerjaan dapat dikontrol melalui manajemen kontrol perubahan, tiket, dll.

Inilah bagian yang tidak terlalu menyenangkan: harganya mahal (sangat mahal). Anda dapat memeriksa beberapa saran dalam pertanyaan serupa yang saya ajukan beberapa waktu lalu: FLOSS Manajemen server dan alat audit .

Saya juga akan mengatakan bahwa Torque / Maui / Moab (dari Adaptive Computing ) sangat keren: tidak yakin dengan harga, tetapi mereka juga alat yang sangat fleksibel.


Penafian - Saya bekerja untuk mitra HP BTO dan Adaptive

warren
sumber
2

CATATAN Pandangan yang sama sekali berbeda tentang masalahnya!

cron sudah tua dan kikuk dalam hal tertentu.

Jika Anda memang mencari cara baru untuk melakukan penjadwalan, saya akan mencoba sesuatu berdasarkan middleware pesan. Pikirkan RabbitMQ dengan klien di setiap server.

Ketergantungan Inter Host dapat diselesaikan dengan "antrian pemberitahuan".

Peristiwa berdasarkan waktu "nyata" sedikit lebih rumit, itulah sebenarnya tujuan cron (dan cukup bagus, setidaknya mengenai lingkungan kecil). Di mana sulit mendapatkan ide adalah untuk mencegah hickup. Seperti di: setiap malam pada pukul 01.00, lakukan snapshot. Anda mungkin melihat beberapa lonjakan muatan atau banyak login gagal pada saat itu juga di seluruh infrastruktur Anda. Jika Anda memiliki pendekatan berbasis antrian, Anda akan mendapatkan setidaknya beberapa penyimpangan secara gratis (meskipun tidak dijamin - kecuali beberapa logika mengimplementasikannya).

Hal yang perlu diperhatikan adalah bahwa tanpa pekerjaan berbasis waktu nyata Anda tidak dapat bergantung pada hal-hal seperti: ya cadangan saya akan mulai pada 0200h dan jika mereka masih berjalan pada 0400h ada sesuatu yang salah. Yang lebih mudah dilakukan adalah memastikan tidak ada 2 pekerjaan yang mengganggu dijalankan pada saat yang sama. Buat saja agen penghambat yang hanya akan mengkonsumsi satu pekerjaan pada satu waktu.

Bagian pengelolanya akan berupa antarmuka web yang bagus di mana pekerjaan dapat diserahkan baik berdasarkan permintaan, atau - sekarang kembali ke "cron" atau implementasi favorit Anda, penjadwal kuarsa jawa memiliki rincian pada detik AFAIK - untuk bagian berdasarkan waktu hanya menggunakan cron lama :)

Tolong jangan downvote saya untuk menjadi PL - ini adalah konsep yang agak kasar tetapi karena pertanyaannya tidak mengesampingkan uang orang mungkin juga menghabiskan uang untuk mendapatkan solusi untuk kebutuhan in-house yang tepat dengan menciptakan sesuatu daripada menghabiskan uang dengan membeli sesuatu di mana vendor berpikir bahwa itu memenuhi beberapa persyaratan :)

serverhorror
sumber
Ini menarik untuk mendistribusikan pekerjaan besar, tetapi pekerjaan saya jauh lebih temporal. Saya memang memiliki beberapa pekerjaan yang dapat diantri seperti ini, jadi saya akan mengingatnya untuk mereka.
Cakemox
1

Saya telah menggunakan Espresso (Cybermation) dari CA. Tidak yakin apa yang mereka sebut sekarang. Saya juga menggunakan UC4. Mereka berdua bekerja, menghabiskan banyak uang (untuk pengertian saya), dan bisa tahan untuk mempertahankan, tetapi mereka melakukan apa yang tertulis di kaleng. / Sunting - tidak terjawab bahwa Anda mengatakan bahwa aplikasi komersial terlalu mahal. Saya pasti bisa setuju, tetapi untuk beberapa perusahaan, itu sepadan, terutama ketika itu untuk aplikasi bisnis yang menghasilkan uang.

mfinni
sumber
1

Saya telah bekerja dengan Penjadwal Pekerjaan Sumber Terbuka sebagai opsi untuk mengganti 2000+ pusat crontab di lingkungan produksi. Hal-hal menjadi sangat rumit dengan cron, sehingga kami tidak dapat menentukan windows downtime apa atau bagaimana menangani dependensi antar-server. Produk ini membantu, tetapi agak rumit untuk dipasang.

putih
sumber