If you have some kind of cluster solution to provide high availability, it is fairly straightforward to do this.
We set up all cron jobs on both (or all) nodes in a cluster. Each job starts by executing a small script which works out if this is the master node in the cluster or not (by checking for the cluster floating IP address). If this is not the master node, the check_for_master script exits with an error which causes the whole cron job to fail. If this node is the master, the check_for_master script runs the job as normal.
The contents of the check_for_master script really depend on which cluster software you are using and the OS you are running.
For example, here's a sample crontab entry:
00 04 * * * /usr/local/bin/check_for_master /usr/local/bin/program-you-want-to-run >/tmp/logfile.out 2>&1