Currently I’m using something like a master-cron server, which starts the tasks on the slave-worker servers.
But there are so many tasks, that the timing gets lost entirely.
Is there a an algorithm, which eliminates the single master?
You might think about using a framework to run your cron
tasks in this fashion. What immediately comes to mind is Capistrano. It is a ruby framework for doing deployments, but the general principal is that you can connect to remote machine via SSH and run arbitrary commands in a transactional way.
So, you could have a master box that has capistrano installed and from there you could setup a cron-task to run your capistrano script which will SSH into the other machines and then execute the command that you would like to run as cron. You could even configure things like pulling the latest copy of the script from a Git repo and then running so that deploying script-updates would be super simple.
You can also write your own extensions for Capistrano to do various things. The only downside is that you have to become familiar with the framework and learn/know Ruby to really be effective with it.
Update
I just realized what you were asking and my answer does not solve that particular problem. However, you can still use the technology to solve your problem by managing multi-server deployments with Capistrano. Rather than have a mastser-slave relationship, just have each server run their own tasks. Capistrano should take care of deploying new or updated scripts and should make the maintenance problem of having all the servers run their tasks dissapear.