Introduction

  • Relocating a Controller instance refers to moving the Controller instance either to a new server or to a new location on the same server. Relocating a Controller instance will not stop the execution of workflows with Agents. However, if a workflow includes jobs that are executed with different Agents then the workflow will not be completed and will be put on hold as switching of Agents during workflow execution is performed by the Controller.
  • As the Agent passes workflow execution results to the Controller and as the Controller instance is stopped during relocation, job execution results will not be forwarded to the JOC Cockpit. Once the Controller instance has started again (after relocation) then job execution results will updated to the JOC Cockpit History and become visible with the GUI.
  • To relocate a Controller instance it is necessary to install a new Controller instance and copy the contents of the ./state folder to that Controller.
  • Before copying folder contents you should first stop the service for the Controller instance as otherwise it will continue to update its journals.
  • After the new Controller instance has started modify the Controller settings in the JOC Cockpit GUI to point to the new location.

Relocating a Controller

  • Relocating a Controller requires installation of a new Controller instance and copying the ./state directory of the previous Controller instance to the new Controller instance location. Then change the URL from the JOC Cockpit "Manage Controller/Agents" dialog.
  • The ./config folder for the Controller contains the truststore and keystore. Therefore, if the Controller instance is operated for HTTPS connections and the new Controller should also use HTTPS, then the new instance might require an individual server authentication certificate that reflects its hostname.

Relocating a Controller Instance's Journal

If ControllerInstance1 is facing an outage then follow the below steps to relocate the Controller instance's journal from ControllerInstance1 to a new ControllerInstance2:

  1. Be assured that ControllerInstance1 is not running.
  2. Install ControllerInstance2.
  3. Copy the files from the ./state folder of ControllerInstance1 to the respective folder of ControllerInstance2.
  4. Start ControllerInstance2.
  5. Note that the Controller URL for ControllerInstance1 is not the same as for ControllerInstance2. Therefore the URL has to be updated in the JOC Cockpit.
  6. To change the Controller URL, log in to the JOC Cockpit.
  7. From the main menu select the item "Manage Controllers/Agents".
  8. Make sure you edit the existing Controller instance that is not in service.
  9. Modify the "URL for JOC Cockpit" from the "Register Controller" dialog box for the Controller instance that is not in service to point to the ControllerInstance2 URL
  10. When workflows are confirmed to work with ControllerInstance2 then drop the contents of the ./state directory of ControllerInstance1. This an important step as otherwise, when ControllerInstance1 is started it will forward past orders from its journal to available Agents. This would result in double job execution that might be harmful depending on the nature of your jobs.



Notes:

  • If you use HTTPS connections for Controller instances then consider that ControlerInstance2 might need its own server authentication certificate. 
    • If ControllerInstance1 is operated with HTTPS you can modify the protocol to HTTP and point to a different host provided that this is in line with your security requirements.
    • The same applies vice versa if ControllerInstance1 is operated for HTTP and ControllerInstance2 is operated for HTTPS.
  • If you intend to roll back from ControllerInstance2 to ControllerInstance1 then repeat the procedure described above, changing the controller instances appropriately.