Search code examples
openstackopenstack-nova

How to send data to cloud instance in opestack


Context: I have setup a demo cloud in my laptop using VirtualBox and have two virtual machines - one has the client and other as server. Create a small instance using the server and running instance is TinyLinux.

Problem: How shall I send data to that instances and stores in that instance.

Some pointers would be very helpful.


Solution

  • Well, with libvirt, you have several options how to do the networking. The default is to use NATing. In that case libvirt creates a bridge and virtual nics for every so configured virtual nic:

    $ brctl show    
    bridge name bridge  id      STP enabled interfaces
    virbr0      8000.525400512fc8   yes virbr0-nic
                            vnet0
    

    Then sets-up iptables rules to NAT (masquerade) the packets on such bridge.

    Chain POSTROUTING (policy ACCEPT 19309 packets, 1272K bytes)
     pkts bytes target     prot opt in     out     source               destination         
        8   416 MASQUERADE  tcp  --  any    any     192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
      216 22030 MASQUERADE  udp  --  any    any     192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
       11   460 MASQUERADE  all  --  any    any     192.168.122.0/24    !192.168.122.0/24    
    

    enables forwarding

    # cat /proc/sys/net/ipv4/ip_forward 
    1
    

    and spawns DHCP server (dnsmasq is both DHCP and DNS in one)

    ps aux | grep dnsmasq
    nobody    1334  0.0  0.0  13144   568 ?        S    Feb06   0:00 \
         /sbin/dnsmasq --strict-order --local=// --domain-needed \
         --pid-file=... --conf-file= --except-interface lo --bind-dynamic \
         --interface virbr0 --dhcp-range 192.168.122.2,192.168.122.254 \
         --dhcp-leasefile=.../default.leases --dhcp-lease-max=253 --dhcp-no-override
    

    If I had two virtual network interfaces (two machines with one NIC on same network, there would be two nics in that bridge. The machines gets the address from the range 192.168.122.2-254 from the dnsmasq DHCP server. So if you know that addresses, you should be able to connect from one to the other VM as both are on same broadcast domain (connected by the bridge). To the outside of your computer the machines all appear as "one IP address".

    The more "advanced" option is to use Bridged networking, which again puts the virtual interfaces into one bridge, but it puts some physical device there as well, so the machines appears as if there were several machines connected to some switch...