Dynamic Icegrid and application updates

nathanbnlnathanbnl Member Nathan DeveloperOrganization: IPerityProject: telephony services

Hello,

We're using a "dynamic icegrid", in which various servers can register themselves and become part of the grid.
We have an XML application descriptor, consisting of several server templates. A new server is deployed by running icebox and instantiating the server templates using the administrative icegrid interface.

This all works really well, until we try to perform an "application update descriptor.xml" on the icegrid. It seems that all our services are stopped and removed (destroyed). My guess is that this happens because only the templates are in the XML descriptor, not the instantiated services?

  1. Is this expected behavior?
  2. What would be a better approach for our setup? Stopping all services momentarily is not acceptable due to availability of the service.

Thanks,
Nathan

Answers

  • benoitbenoit Rennes, FranceAdministrators, ZeroC Staff Benoit FoucherOrganization: ZeroC, Inc.Project: Ice ZeroC Staff

    Hi,

    Yes, this is the expected behavior. Updating an application from an XML descriptor will re-synchronize the application with the content of the deployment described in the XML descriptor. If the XML descriptor contains no server instances, all currently deployed instances are removed.

    I'm afraid at this point there's no trivial solution for your use-case. We could consider improving IceGrid to handle this (perhaps by allowing application inheritance or simply have an option to tell "application update" to not remove deployed servers).

    In the meantime, you can probably find a way to implement this yourself however since you already managed your application dynamically through the IceGrid administrative interface.

    You could for example do the following:

    • create an application whose purpose is just to store the templates
    • use application update to update this application templates
    • add feature to your deployment facility to re-synchronize templates from existing applications with the ones from this particular application.

    For this last point, your program would basically need to read the template descriptors from one IceGrid application and update all the applications which are using them.

    Note that updating templates might still cause a stop and start of your deployed servers if the changes require a server restart. If you're just updating Ice properties, it's possible however to prevent the restart by using the updateApplicationWithoutRestart method on the IceGrid::Admin interface.

    Cheers,
    Benoit.

Sign In or Register to comment.