Vlákno názorů k článku Jak přidělit virtuálnímu počítači vlastní IP adresu od Vasek - Zdravím, VirtualBox to opravdu umí. Jelikož, ale na server...

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 6. 2010 9:58

    Vasek (neregistrovaný)

    Zdravím,
    VirtualBox to opravdu umí. Jelikož, ale na server to není stále ono tak bych také raději uvítal jak virtualizovat více strojů pomocí KVMtak aby každý virtuální systém mohl mít vlastní veřejnou IP. Nějak se toho nemůžu dobrat. Na serveru mám jednu síťovou kartu.
    Pár postupů jsem odzkoušel, ale moc nezadařilo. Proto bych uvítal článek v češtině o KVM a síťování.
    Vašek

  • 10. 6. 2010 11:16

    Petr (neregistrovaný)

    Toto je výsek ze startovacího skriptu, co používám.
    Předpokládá existující bridge br0:

    # vytvoříme tap rozhraní pro jednotlivé stroje a přidáme je do bridge br0
    tunctl -p -t vm0
    brctl addif br0 vm0
    ifconfig vm0 up
    tunctl -p -t vm1
    brctl addif br0 vm1
    ifconfig vm1 up
    ...
    # spustíme KVM mašiny
    kvm \
      -name vm0 -pidfile /kvm/vm0/kvm.pid -daemonize \
      -m 768 -mem-path /mnt/hugetlb \
      -drive file=/dev/mapper/vm0,format=raw,index=0,if=ide,boot=on \
      -net nic,vlan=0,model=virtio,macaddr=a0:00:00:00:00:01 -net tap,vlan=0,ifname=vm0,script=no \
      -serial none -parallel none \
      -monitor telnet:127.0.0.1:4000,server,nowait \
      -vnc 127.0.0.1:0
    kvm \
      -name vm1 -pidfile /kvm/vm1/kvm.pid -daemonize \
      -m 1024 -mem-path /mnt/hugetlb \
      -drive file=/dev/mapper/vm1,format=raw,index=0,if=ide,boot=on \
      -net nic,vlan=1,model=virtio,macaddr=a0:00:00:00:01:01 -net tap,vlan=1,ifname=vm1,script=no \
      -serial none -parallel none \
      -monitor telnet:127.0.0.1:4001,server,nowait \
      -vnc 127.0.0.1:1
    ...

    Popis:
    Spustíme KVM a udáním jméne (vm0…), zadám si cestu k PID souboru v daemon režimu. Přidělil jsem paměť (768/1024 MiB) v HugeTLB. Následně jsou tam cesty k diskům emulovaným jako IDE rozhraní. Virtuálové budou bez sériových a paralelních portů, monitor strojů běží v telnet režimu na portech 4000… a VNC rozhraní je definováno jako poslední 0…
    No a nyní k síti: ze zde nepodstatných důvodů si pakety značkuji do VLAN, používá se virtio s definovanou mac adresou (pro každý stroj jinou, pozor, aby bit 0 v bytu 0 mac nebyl 1, ty se užívají pro multicast (http://www.cisco.com/warp/public/cc/techno/tity/prodlit/ipmlt_wp/ipmlt_w2.jpg), používá se TAP, zadáno jméno a určeno, že se nemají používat skripty pro ovládání rozhraní (to jsme již udělali manuálně – osvědčilo se mi to více).
    Jednoduché, snad to pomůže. Pak je samozřejmě potřeba zkonfigurovat iptables, forwardování packetů, pokud není aktivní… ale to je již síťařina mimo KVM.
    Petr

  • 10. 6. 2010 12:13

    HH (neregistrovaný)

    Pokud nemáte nějaký zásadní důvod proč nepoužít libvirt, tak to jde i bez toho zběsilého skriptování. Bridge pouze mezi hostitelem a virtuály se nadefinují přímo v libvirt (virsh net-define), bridge ve kterých má být i nějaká fyzická síťovka hostitele se nadefinují v startup skriptech způsobem vlastním dané distribuci (/etc/sysconfig/net­work-scripts v rh-like, /etc/network/in­terfaces v debian-like atp.) a ve definici virtuálu se pak jen uvede do jakého existujícího bridge se má virtuální síťovka připojit.

  • 10. 6. 2010 12:46

    Petr (neregistrovaný)

    Díky, HH, mrknu na to. Já se vydal cestou skriptování, protože to bylo přehlednější vzhledem k ostatním okolnostem (cryptsetup disků, úpravy konfigurace pro monitoring apod…), které jsem z ukázky vypustil, protože to bylo irelevantní…

  • 10. 6. 2010 16:05

    HH (neregistrovaný)

    Jasně, nic proti, já speciální startovací/ini­cializační skripty nemám rád kvůli lidové tvořivosti, zkuste něco takového opravovat po kolegovi který je zrovna v Antarktidě, nebo po sobě po x letech. YMMV. Relativně snesitelné to je v OpenBSD, kde řešení přes skripty má tradici, které pokud se správce drží, tak mají ty skriptíky určitou pevnou strukturu a hlavně jsou extrémně přehledné.

    Já mám na serverech většinou RHEL (na pár vývojových Fedoru) a úplně v pohodě jsou všechny vypečenosti nastavené standardním způsobem v konfigurácích typu „klíč=hodnota“, občas xml. Včetně šifrování disků, RAID a LVM, iSCSI a FC iniciátorů s multipathingem, komplexní konfigurace sítě (IPv4 i IPv6, vícero routovacích tabulek, iptables, iptables6, bonding, vlany, brigde, OpenVPN a IPsec tunely), KVM a Xen hypervizory ovládané přes libvirt. Je fakt, že občas jsem musel ty distribuční skripty skripty luštit abych zjistil, jak co nastavit (dokumentace ke speciálnějším věcem moc není), ale mnohokrát se to vyplatilo. Upravit řádek „klíč=hodnota“ zvládne i moje sekretářka, správně zasáhnout do custom skriptu aniž by něco neposr^H^Hkazil většinou nesvede ani „certifikovaný“ specialista …