Archived

This forum has been archived. Please start a new discussion on GitHub.

How to configure execution of server/node on host remote from registry?

Hello,

I am running the IceGrid Registry on host 'A', but want to deploy nodes of an application in response to an incoming client connection onto host 'B'. I don't believe Glacier2 is required here as there are no firewalls, and I have verified the ability to telnet back and forth from 'B' to 'A'. The registry is on the 'head' node of a grid system, and I need to access nodes (either manually or automatically placed) on the 'compute nodes' of that system.

From the encoder example in the manual, I gather that I may be able to set the endpoints of the 'Server' to a remote host within one or more 'Node'(s) in the config files.

Can you direct me to an explicit demo or section covering this, or explain how I get the registry to allow a client to connect to servers/(nodes) that are remote from the registry?

Thanks,
Jon Schmid, NPS MOVES

Comments

  • Promising direction..

    Hello,

    I found the section 'Ice.Admin.AdapterProperty' in the help, where the Ice.Admin object adapter is described. I see a line in the Server config file of my Application ('IceGrid, simple') that defines:
    'Ice.Admin.Endpoints=tcp -h 127.0.0.1'

    I am wondering if this is the proper place to inform the Ice.Admin object how to instantiate my Application's server executable on a different host, using a different host address. If so, does the server executable need to be already running when the Registry triggers Ice.Admin to connect?


    Thanks,
    Jon
  • benoit
    benoit Rennes, France
    Hi John,

    In order to run Ice servers on different machines with IceGrid, you need to have the IceGrid registry on one machine and run IceGrid nodes on each of the machines you want to use for your application. So the first step is to setup the IceGrid registry and the IceGrid nodes.

    You can use the configuration files from IceGrid demos as a basis for configuring the IceGrid node on each machine. The main difference will be the configuration of the Ice.Default.Locator property which should include the IP address or hostname of the machine running the IceGrid registry. For example, if your IceGrid registry is running on a host named "foo", you could use the following configuration for your registry:
    // Registry configuration file
    IceGrid.InstanceName=DemoIceGrid
    IceGrid.Registry.Client.Endpoints=tcp -h foo -p 4601 -t 10000
    IceGrid.Registry.Server.Endpoints=tcp -h foo -t 10000
    IceGrid.Registry.Internal.Endpoints=tcp -h foo -t 10000
    IceGrid.Registry.Data=db
    IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
    IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
    IceGrid.Registry.Trace.Node=2
    IceGrid.Registry.Trace.Replica=2
    

    For the IceGrid node running on each machine, you'd use the following configuration:
    // Node configuration file for each node
    Ice.Default.Locator=DemoIceGrid/tcp -h foo -p 4061 -t 10000
    IceGrid.Node.Name=node1
    IceGrid.Node.Endpoints=tcp -t 10000
    IceGrid.Node.Data=db
    IceGrid.Node.Trace.Replica=2
    

    Each node will need to have a unique name, so you will need to update the IceGrid.Node.Name property for each node. Once you have installed and configured the IceGrid nodes, you can use the IceGridGUI or icegridadmin command line tool to verify that the IceGrid nodes and registry and correctly setup.

    Next, you will need to create an application descriptor and install the binaries of your servers on each machine.

    The best to familiarize yourself with IceGrid is to try the IceGrid demos and use the IceGrid administrative tools. You could try to modify the simple demo to run the server on each of your machines for example.

    Let us know if you need further assistance with this!

    Cheers,
    Benoit.
  • Config settings for launching IceGrid Server on remote host

    Hello,

    Thank you for your explanation of the process of configuring my IceGrid Nodes and Servers. My client program can still connect to the IceGridRegistry service on the head node, but I don't follow from the suggested settings you gave how I configure where (as in which host) I would like my Server nodes to be started on.

    I know that the Nodes must have a unique name in their Config files, a unique copy of the application bundle, and be able to reach the Registry service (set in the line): "Ice.Default.Locator=DemoIceGrid/tcp -h foo -p 4061 -t 10000.

    I just don't understand if one of these config lines allows the Registry Service to launch a server for each Node on specific hosts, or whether I need to have the Servers already running and waiting for the Registry Service to connect over 'tcp'. Another possible mechanism would be to make the Registry Service launch a local executable that must launch the remote hosts and then connect to them?

    Thanks for your help with this issue. I really haven't found the right part of the IceGrid demos that demonstrate the desired use.

    - Jon Schmid
    benoit wrote: »
    Hi John,

    In order to run Ice servers on different machines with IceGrid, you need to have the IceGrid registry on one machine and run IceGrid nodes on each of the machines you want to use for your application. So the first step is to setup the IceGrid registry and the IceGrid nodes.

    You can use the configuration files from IceGrid demos as a basis for configuring the IceGrid node on each machine. The main difference will be the configuration of the Ice.Default.Locator property which should include the IP address or hostname of the machine running the IceGrid registry. For example, if your IceGrid registry is running on a host named "foo", you could use the following configuration for your registry:
    // Registry configuration file
    IceGrid.InstanceName=DemoIceGrid
    IceGrid.Registry.Client.Endpoints=tcp -h foo -p 4601 -t 10000
    IceGrid.Registry.Server.Endpoints=tcp -h foo -t 10000
    IceGrid.Registry.Internal.Endpoints=tcp -h foo -t 10000
    IceGrid.Registry.Data=db
    IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
    IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
    IceGrid.Registry.Trace.Node=2
    IceGrid.Registry.Trace.Replica=2
    

    For the IceGrid node running on each machine, you'd use the following configuration:
    // Node configuration file for each node
    Ice.Default.Locator=DemoIceGrid/tcp -h foo -p 4061 -t 10000
    IceGrid.Node.Name=node1
    IceGrid.Node.Endpoints=tcp -t 10000
    IceGrid.Node.Data=db
    IceGrid.Node.Trace.Replica=2
    

    Each node will need to have a unique name, so you will need to update the IceGrid.Node.Name property for each node. Once you have installed and configured the IceGrid nodes, you can use the IceGridGUI or icegridadmin command line tool to verify that the IceGrid nodes and registry and correctly setup.

    Next, you will need to create an application descriptor and install the binaries of your servers on each machine.

    The best to familiarize yourself with IceGrid is to try the IceGrid demos and use the IceGrid administrative tools. You could try to modify the simple demo to run the server on each of your machines for example.

    Let us know if you need further assistance with this!

    Cheers,
    Benoit.
  • benoit
    benoit Rennes, France
    Hi,

    You need to run the IceGrid node process on each host, the IceGrid registry won't start the IceGrid node processes remotely. Typically, the IceGrid registry and node processes are started on boot of the machine with Linux init.d scripts or as Windows services. Which operating system do you use?

    Once you have setup each machine to deploy and run the IceGrid registry and nodes, the IceGrid nodes can take care of running your Ice servers. For this, you need to write an application deployment descriptor which describes the different servers, how to start them where to locate the executables, etc. and register this application descriptor with one of the IceGrid administrative tools (the IceGridGUI or the icegridadmin command line tool).

    Cheers,
    Benoit.