Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/cluster mode unique server for job schedules #396

Conversation

gschueler
Copy link
Member

Add very simple support for multi-server rundeck configuration pointing at the same DB backend, allowing scheduled (quartz) jobs to execute only on a single node in the "cluster".

  • Requires the feature to be explicitly enabled with rundeck.clusterMode.enabled=true in rundeck-config file
  • Requires a rundeck.server.uuid to be set for each node in the framework.properties

With this enabled, Scheduled (quartz) jobs will not attempt to run on every server node, but will only be scheduled on the server they were last modified on. In the case where a job is scheduled on server A, but modified and saved on server B, the quartz job when run will detect the changed serverNodeUUID for the job, and unscheduled itself on node A, while server B will run the job correctly.

This supports a basic failover mode, using multiple Rundeck servers pointing at a single DB.

gschueler added 7 commits May 14, 2013 15:02
* support using only one unique server node for a quartz scheduled job
* require a server uuid for cluster mode
* set serverNodeUUID when saving scheduled jobs
* unschedule from quartz if uuid does not match
* store the UUID of cluster node in executions
* show correct schedule time if running on a different cluster node
* indicate the job is expected to run
@buildhive
Copy link

DTO Labs » rundeck #4 SUCCESS
This pull request looks good
(what's this?)

@gschueler
Copy link
Member Author

Need a way to tell one server to adopt schedule of jobs from another UUID. e.g. if server A fails, need to tell server B to take over scheduling.

gschueler added 3 commits May 14, 2013 19:23
* path /incubator/jobs/takeoverSchedule
* PUT content identifies server UUID to takeover
* response indicates how many jobs were successfully taken over or not
* response includes job identifiers
* supports json/xml
* requires 'admin' authorization for resource kind 'job' at the
  application context
@buildhive
Copy link

DTO Labs » rundeck #5 SUCCESS
This pull request looks good
(what's this?)

@buildhive
Copy link

DTO Labs » rundeck #6 SUCCESS
This pull request looks good
(what's this?)

gschueler added a commit that referenced this pull request May 15, 2013
…rver-for-job-schedules

Feature/cluster mode unique server for job schedules
@gschueler gschueler merged commit 2756e1c into rundeck:development May 15, 2013
@gschueler gschueler deleted the feature/cluster-mode-unique-server-for-job-schedules branch May 15, 2013 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants