Dkron is a distributed cron service, easy to setup and fault tolerant with focus in:
- Easy: Easy to use with a great UI
- Reliable: Completely fault tolerant
- High scalable: Able to handle high volumes of scheduled jobs and thousands of nodes
Dkron is written in Go and leverage the power of the Raft protocol and Serf for providing fault tolerance, reliability and scalability while keeping simple and easily installable.
Dkron is inspired by the google whitepaper Reliable Cron across the Planet and by Airbnb Chronos borrowing the same features from it.
Dkron runs on Linux, OSX and Windows. It can be used to run scheduled commands on a server cluster using any combination of servers for each job. It has no single points of failure due to the use of the Gossip protocol and fault tolerant distributed databases.
You can use Dkron to run the most important part of your company, scheduled jobs.
Dkron v1.x is legacy, not supported.
Dkron v2.x is the previous version, stable and still used in production by some users.
Dkron v3.x current stable version, if you are going to start a new deployment, use this.
Full, comprehensive documentation is viewable on the Dkron website
Development Quick start
The best way to test and develop dkron is using docker, you will need Docker installed before proceding.
Clone the repository.
Next, run the included Docker Compose config:
This will start Dkron instances. To add more Dkron instances to the clusters:
docker-compose up --scale dkron-server=4 docker-compose up --scale dkron-agent=10
Check the port mapping using
docker-compose ps and use the browser to navigate to the Dkron dashboard using one of the ports mapped by compose.
To add jobs to the system read the API docs.
Dkron dashboard is built using a combinations of golang templates and AngularJS code.
To start developing the dashboard enter the
static directory and run
npm install to get the frontend dependencies.
Change code in JS files or in templates, then run
make gen to generate assets files. This is a method of embedding resources in Go applications.
Chef cookbook https://supermarket.chef.io/cookbooks/dkron
Python Client Library https://github.com/oldmantaiter/pydkron
Ruby client https://github.com/jobandtalent/dkron-rb
PHP client https://github.com/gromo/dkron-php-adapter
Terraform provider https://github.com/peertransfer/terraform-provider-dkron
Get in touch
This project is possible thanks to the Support of Jobandtalent