Service Virtualization

multi-system deployment design using Docker

  • 1.  multi-system deployment design using Docker

    Posted May 20, 2015 10:50 AM

    we (I) are trying to build a docker deployable solution for Devtest V8.

     

    this would let us create (provision) a VSE on the fly as part of automated testing, use it, and then put it away (deprovision).

    the design here is one VSE for each service (mar file).. so that we don't get VSE interference between teams (or running the same service at different levels), and don't have to figure out how many services will fit in a VSE, etc..

    spin one up, add the service , use it, shut it down.  easy, can also do as part of the VSE startup, using the VSE autodeploy capability

     

    I have this all working if all the parts are running on the same host.   but thats not real life.. I need to separate dashboard/registry and VSE's  like this

    the orange boxes are host machines.  the block outlines are docker containers.

     

    the center box (192.168.2.33) works.. (all on the same host)

    if I do NOT use a docker container, and start a registry on 10.30.137.5 (right most) using hte same tar bundle, and point to the dashboard on 192.168.2.33, all is good.

    however, if I start a registry docker container on 10.30.137.5 and do the same configuration,

     

    network design-no tunneling.png

     

    I get a startup error


    The database has not been initialized correctly There is at least one missing table.

     

    someplace after com.itko.lisa.coordinator.TestRegistryImpl.doEnterpriseDashboardaHandshake(TestRegistryImpl:2586)

     

    the Dashboard is running in a container on on 192.168.2.33, and has the container port 2003 exposed as 49251

    the registry is running on 10.30.137.5 and has 2010 exposed as 38324

     

    the container internal addresses are in the 172.17.0.x range.   but are not addressable over the intranet.


    so the code is running on a (docker) host with 172.17.0.14, but is trying to use a foreign address (10.30.137.5) as its network config -n tcp://10.30.137.5:38324


    the Devtest product code  was installed on 192.168.2.33, then the install location was tar'd up, and it used to deploy into each container before starting the appropriate pgm for the role (db, reg, vse)


    QuestionL: is there some setup process I can do to fix the database image (using derby for this test) to resolve this problem?


    I am using the regis server/client  to record addresses/ports of components so that the scripts can locate the Devtest components by name (even tho their name doesn't match DNS name).


    I'm hoping that a tunneling design will not be required due to the return communication requirements.. a tunneling design might look like this

    where s are the tunneling systems


    network design.png