Uploaded image for project: 'OpenShift Virtualization'
  1. OpenShift Virtualization
  2. CNV-76508

As a proxy / synchronization controller I want to properly multiplex connections between clusters

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • None
    • None

      The synchronization controller has all the necessary information in order to map the virt-handler of the cluster it is running to a proxy in another cluster. We need to design how this mapping is achieved.

      The idea is the following, once the synchronization controller has established a connection to another synchronization controller, and we know we are using a cross cluster LM network (based on the connection URL).

      Once the connection is there, the target synchronization controller will open up ports on the cross cluster LM network, since it will receive the target virt-handler port map from the VMI. It will then store the mapping between the virt-handler address/port combination and map it to the port it opened. It will do this for each port the virt-handler opened (should be 2, one for the block migration and one for the state migration).

      The target synchronization controller then modifies the VMI state information to point to its CCLM network IP address/port combinations. And informs the source synchronization controller of the new values with a normal synchronization gRPC call.

      On the source synchronization controller we can now detect that the IP addresses are on a different network than the internal LM network, and thus we need to open up ports on the synchronization controller for the modified port map. We open us the same amount of ports on the in cluster LM network as the target did. At that point the proxy part can setup connections between the source and target proxy.

      The synchronization controller will then change the values of the port map and the target virt-handler name in the VMI migration status patch to instead point to the source synchronization controller in cluster IP address and the ports that were just opened.

      We then store in the internal synchronization controller structs the mapping between those ports and the target synchronization controller address/port combination.

      Now in the source VMI, the target node will be the synchronization controller LM network address, the port map will be the ports opened on the source synchronization controller. In the target VMI, the source node will be cluster LM IP address and target synchronization controller can determine the target virt-handler to connect to.

              phoracek@redhat.com Petr Horacek
              rhn-support-awels Alexander Wels
              Yoss Segev Yoss Segev
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: