Netzwerk:VM

Aus Hochschule Darmstadt - Fachschaft Informatik Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K (vgData 1GB -> 5GB)
(Hardware)
 
(Eine dazwischenliegende Version von einem Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
 
== Hardware ==
 
== Hardware ==
* 2 x Dell R510 Server mit folgender Konfiguration:
+
 
 +
=== Node 1 & Node 2===
 +
jeweils
 +
Dell PowerEdge R510 Server mit folgender Konfiguration:
 +
 
 +
* 2x CPU Intel Xeon X5660 2.80 - 3.20 GHz
 +
* 32 GB DDR 1333 ECC RAM (8x4 GB)
 
* Festplatten
 
* Festplatten
 
** 2x300 GB 15k  RPM SAS          (RAID1, vgSystem (/dev/sda), 64 KB Stripes)
 
** 2x300 GB 15k  RPM SAS          (RAID1, vgSystem (/dev/sda), 64 KB Stripes)
Zeile 6: Zeile 12:
 
* "IP": '''node1.fbihome.de'''
 
* "IP": '''node1.fbihome.de'''
 
* "IP": '''node2.fbihome.de'''
 
* "IP": '''node2.fbihome.de'''
 +
 +
=== Node 3===
 +
Dell PowerEdge R515
 +
* 1x CPU AMD Opteron(tm) Processor 4334 3.10 - 3.50 GHz
 +
* 32 GB DDR 1600 ECC RAM (2x16 GB)
 +
* Festplatten
 +
** 2x300 GB 15k  RPM SAS
 +
** 8x2  TB 7,2k RPM Nearline-SAS
 +
* "IP": '''node3.fbihome.de'''
 +
=== Siehe auch===
 
* siehe auch: [[Netzwerk:IP-Adressen]]
 
* siehe auch: [[Netzwerk:IP-Adressen]]
  

Aktuelle Version vom 24. Oktober 2019, 13:07 Uhr

Inhaltsverzeichnis

[Bearbeiten] Hardware

[Bearbeiten] Node 1 & Node 2

jeweils Dell PowerEdge R510 Server mit folgender Konfiguration:

  • 2x CPU Intel Xeon X5660 2.80 - 3.20 GHz
  • 32 GB DDR 1333 ECC RAM (8x4 GB)
  • Festplatten
    • 2x300 GB 15k RPM SAS (RAID1, vgSystem (/dev/sda), 64 KB Stripes)
    • 5x2 TB 7,2k RPM Nearline-SAS (RAID5, vgData (/dev/sdb), 128 KB Stripes)
  • "IP": node1.fbihome.de
  • "IP": node2.fbihome.de

[Bearbeiten] Node 3

Dell PowerEdge R515

  • 1x CPU AMD Opteron(tm) Processor 4334 3.10 - 3.50 GHz
  • 32 GB DDR 1600 ECC RAM (2x16 GB)
  • Festplatten
    • 2x300 GB 15k RPM SAS
    • 8x2 TB 7,2k RPM Nearline-SAS
  • "IP": node3.fbihome.de

[Bearbeiten] Siehe auch

[Bearbeiten] Administration

[Bearbeiten] ganeti

[Bearbeiten] Neue VM anlegen

Achtung: vorher: im gateway1 neuen DNS-Recordeintrag für neue IP hinzufügen. Edit unter /etc/bind/zones/db.fbihome.de und auch die Serial am Anfang der Datei verändern, um den Sync der Konfigurationsdateien mit gateway2 zu erreichen. Anschließend /etc/init.d/bind9 reload ausführen. nachher:

  • Unter backup.fbihome.de in /root/Backup/backup-servers die Adresse des Servers eintragen. Achtung: von backup aus auf jeden eingetragenen einmal connecten (known-hosts damit updaten)
  • dpkg-reconfigure locales (en_US.utf8 wählen)
  • dpkg-reconfigure tzdata (Europe, Berlin wählen)

[Bearbeiten] Default (Debian)

gnt-instance add \
  -H xen-pvm \
  -o debootstrap+default \
  -n node1.fbihome.de:node2.fbihome.de \
  --no-wait-for-sync -t drbd \
  --disk 0:size=1g,vg=vgSystem \
  --disk 1:size=1g,vg=vgData \
  --net 0:mac=generate,ip=141.100.40.X,mode=bridged,link=brServer \
  -B memory=512,vcpus=2,auto_balance=true \
  <instance>.fbihome.de
Ist veraltet !

[Bearbeiten] Ubuntu lucid

gnt-instance add \
  -H xen-pvm:kernel_path=/boot/xen/ubuntu-lucid-vmlinuz,initrd_path=/boot/xen/ubuntu-lucid-initrd,root_path=/dev/sda1 \
  -o debootstrap+lucid \
  ...
Ist veraltet !

[Bearbeiten] Ubuntu Xenial Xerus

#-o : Operating System
#-n : Auf welchem Node soll die VM laufen
#-B : Backend Parameters
#> memory : RAM-Speicher
#> vcpu : Anzahl der Virtuellen Kerne
#> auto_balance : bei Ausfall, automatisch auf den anderen Node ausweichen
#
#--disk : Virtuelle Festplatte
#> Size : Größe
#> vg : Physische Festplatte (default vgSystem)
#
#--net: Network Interface
#> mac : MAC-Adresse
#> IP : IP-Adresse
#> mode : Art der Netzwerk übergabe vom Node an die VM
#> link : ?
#
#--no-wait-for-sync : nicht warten, bis die VM gespiegelt wurde
#
#--no-name-check : VM anlegen ohne DNS-Eintrag zu überprüfen
#--no-ip-check : VM anlegen ohne IP-Adresse zu überprüfen
 
 
 
 
gnt-instance add \
  -o debootstrap+xenial \
  -n node1.fbihome.de:node2.fbihome.de \
  --no-wait-for-sync -t drbd \ 
  --disk 0:size=1g,vg=vgSystem \ 
  --disk 1:size=5g,vg=vgData \
  --net 0:mac=generate,ip=141.100.40.X,mode=bridged,link=brServer \
  -B memory=512,vcpus=2,auto_balance=true \
  --no-name-check \
  --no-ip-check \
  <instance>.fbihome.de
 
 
gnt-instance start <instance>.fbihome.de
 
 
gnt-instance console <instance>.fbihome.de 
 
 
ENTER drücken #sonst erscheint keine Ausgabe
# evtl. mehrfach wiederholen
 
root@(<instance>): vim /etc/network/interfaces
# Gateway und DNS ggf anpassen (141.100.40.126 beide!!!)
# unbedingt den Namen des Interfaces auf ens5 ändern!
auto ens5
iface ens5 inet static
        address <IP-Adresse>
        netmask 255.255.255.192
        gateway 141.100.40.126
        dns-nameservers 141.100.40.126
        dns-search fbihome.de
 
 
 
root@(<instance>): vim /etc/hosts 
# alles auskommentieren und danach ip der VM eintragen mit DNS-Namen z.B. 1.1.1.1 cups.fbihome.de cups
    127.0.0.1       localhost
    <IP-Adresse>   <instance>.fbihome.de <instance>
 
exit mit "STRG + 5"
 
gnt-instance reboot --shutdown-timeout=30 <instance>.fbihome.de 
 
 
## Auf Service.fbihome.de wechseln
 
    ssh root@service.fbihome.de
 
    vim /etc/bind/zones/db.fbihome.de
 
    # DNS und IP-Adresse eintragen
 
    rndc reload fbihome.de
 
    exit
 
exit

[Bearbeiten] Mini Ganeti FAQ

  • Wenn die Partition auf "vgSystem" liegen soll muss dies nicht extra angegeben werden.
  • Wenn man die "/etc/default/ganeti-*" ändert muss dannach die "/var/cache/ganeti-*" gelöscht werden.

[Bearbeiten] Instance Konfiguration anzeigen

gnt-instance info <instance>

[Bearbeiten] NIC hinzufügen

gnt-instance modify --net add:mac=generate,ip=141.100.40.X,mode=bridged,link=brServer <instance>

[Bearbeiten] In die VM Wechseln zur Administration

Info: Login erfolgt als root ohne Passwort:

gnt-instance console <vmname>

Info: Das VM-System wird mit Strg + 5 verlassen.

[Bearbeiten] Festplatte hinzufügen

# add a new X GB disk with
gnt-instance modify --disk add:size=Xg,vg=vgData/vgSystem <instance>


Innerhalb der VM:

# for small (< 2 TB) filesystems create a MSDOS partion table spanning the entire disk:
# Ignore any errors about rereading the partition table, partition block devices will be created by using kpartx
sfdisk -H 255 -S 63 --quiet --force --Linux /dev/xvdX <<EOF
0,,L,*
EOF
 
# for big (>= 2 TB) filesystems create a GPT partition table:
# "Error: Failed to add partition 1 (Invalid argument)" is normal and can be ignored
# Ignore any errors about rereading the partition table, partition block devices will be created by using kpartx
parted /dev/drbdX -s -- mklabel gpt
parted /dev/drbdX -s -- mkpart primary 0 -1
parted /dev/drbdX -s -- print
 
# reboot if the new partition doesn't show up
 
# format partition with raid optimized settings:
# vgSystem:
mkfs.ext4 -b 4096 -E stride=16,stripe-width=16 /dev/xvdX
# vgData:
mkfs.ext4 -b 4096 -E stride=32,stripe-width=128 /dev/xvdX

[Bearbeiten] Festplatte vergrößern

# add X GB to an instances disk
gnt-instance grow-disk <instance> <DiskID> Xg


Innerhalb der VM:

# recreate (resized) partion table
 
# for small (< 2 TB) filesystems create a MSDOS partion table spanning the entire disk:
# Ignore any errors about rereading the partition table, partition block devices will be created by using kpartx
sfdisk -H 255 -S 63 --quiet --force --Linux /dev/xvdX <<EOF
0,,L,*
EOF
 
# for big (>= 2 TB) filesystems create a GPT partition table:
# "Error: Failed to add partition 1 (Invalid argument)" is normal and can be ignored
# Ignore any errors about rereading the partition table, partition block devices will be created by using kpartx
parted /dev/xvdX -s -- mklabel gpt
parted /dev/xvdX -s -- mkpart primary 0 -1
parted /dev/xvdX -s -- print
 
 
X = Laufwerksname
KEINE PARTITIONSNUMMER!!!
 
 
# resize the filesystem
resize2fs /dev/xvdXY

[Bearbeiten] Bestehendes System in VM migrieren

# add instance without checking if the IP is already in use and installing the system
gnt-instance add --no-ip-check --no-install ...
 
# make sure the instance isn't running
gnt-instance shutdown <instance>
 
# make blockdevices available (to Dom0), the output will show the corresponding drbd devices (/dev/drbdX)
gnt-instance activate-disks <instance>
 
# create partitions on the drbd disk devices listed by the activate-disk commands
sfdisk ... /dev/drbdX
 
# activate block devices (read partition table and create partition block devices)
kpartx -av /dev/drbdX
 
# create filesystems on the partitions
mkfs.ext4 -E ... /dev/mapper/drbdXpY
 
# mount the root partition to /mnt/tmp
mount /dev/mapper/drbdXpY /mnt/tmp
 
# create mountpoint directories and mount any additional (non root) partition relative to /mnt/tmp
 
# copy the filesystem from the old to the new server:
rsync -avzHAX --numeric-ids -e "ssh" --exclude="/dev/*" --exclude="/proc/*" --exclude="/sys/*" oldserver.fbihome.de:/ /mnt/tmp
 
# shutdown services and/or remount read only (mount -o remount,ro /dev/...) the old server and sync again
 
# mount special filesystems
mount -o bind /proc /mnt/tmp/proc
mount -o bind /sys /mnt/tmp/sys
mount -o bind /dev /mnt/tmp/dev
 
# generate /etc/iftab
gnt-instance info <instance> | grep "nic/" | awk '{gsub(/,$/,"",$4); gsub(/^br/,"eth",$10); print $10 "\tmac " $4 }' > /mnt/tmp/etc/iftab
 
# enter the new servers environment (chroot)
chroot /mnt/tmp
 
# make sure /etc/inittab contains the hvc0 console (special xen console):
#hvc0:2345:respawn:/sbin/getty 38400 hvc0
# disable the other gettys
 
# install ifrename
aptitude install ifrename
 
# purge any old installed kernel/module packages
aptitude purge linux-modules-... linux-image-...
 
# install correct xen kernel modules
aptitude install linux-modules-2.6.32-5-xen-amd64
 
# purge any grub bootloader packages
 
# make sure the interface names in /etc/network/interfaces match the interfaces in /etc/iftab
 
# update /etc/fstab to use the xen block devices (/dev/xvdXY)
 
# disable root password
passwd -d root
 
# exit the chroot
exit
 
# optional: umount any additional (non root) partition
 
# umount all other directories/root partition
umount /mnt/tmp/proc 
umount /mnt/tmp/dev 
umount /mnt/tmp/sys
umount /mnt/tmp
 
# remove all previously created partition block devices
kpartx -dv /dev/drbdX
 
# deactivate the instances disks
gnt-instance deactivate-disks <instance>
 
# stop/take offline the old server or change the IPs to avoid IP conflicts
 
# start the new server (only if deactivate-disks was successful, otherwise starting the Vm will result in data loss!)
gnt-instance startup <instance>
 
# check the console for any errors
gnt-instance console <instance>


[Bearbeiten] VM Kopieren

[Bearbeiten] Ganeti Export

[Bearbeiten] Ganeti Import

[Bearbeiten] Installation

aptitude install firmware-bnx2 ifenslave vlan bridge-utils \
xen-linux-system-2.6.32-5-xen-amd64 xen-hypervisor-4.0-amd64 \
linux-image-xen-amd64 xen-utils-4.0 ganeti2 drbd8-utils \
ganeti-instance-debootstrap lvm2 iproute iputils-arping \
python python-pyopenssl openssl python-pyparsing \
python-simplejson python-pyinotify socat xen-qemu-dm-4.0

/ets/hostname must contain the full hostname (including domain)

[Bearbeiten] grub

# put xen at the first position (default)
mv /etc/grub.d/10_linux /etc/grub.d/25_linux
 
# configure grub
sed -i /etc/default/grub -e "s/\(GRUB_CMDLINE_LINUX\)=\(.*\)/\1=\"rootdelay=20 maxcpus=1 3\"/g"
sed -i /etc/default/grub -e "s/\(GRUB_CMDLINE_LINUX_DEFAULT\)=\(.*\)/\1=\"\"/g"
cat >> /etc/default/grub <<EOF
 
GRUB_CMDLINE_XEN="dom0_mem=1024M"
GRUB_CMDLINE_XEN_DEFAULT=""
GRUB_DISABLE_OS_PROBER=true
EOF
update-grub2

[Bearbeiten] Dell OM

# smbios von Debian Squezze ist zu alt, daher wird das Ubuntu Paket benutzt.
wget http://linux.dell.com/repo/community/deb/latest/amd64/libsmbios2_2.2.13-0ubuntu4_amd64.deb
wget http://linux.dell.com/repo/community/deb/latest/amd64/smbios-utils_2.2.13-0ubuntu4_amd64.deb
dpkg -i libsmbios2_2.2.13-0ubuntu4_amd64.deb smbios-utils_2.2.13-0ubuntu4_amd64.deb
echo "deb http://linux.dell.com/repo/community/deb/latest /" > /etc/apt/sources.list.d/linux.dell.com.sources.list
aptitude update
aptitude install srvadmin-base srvadmin-idrac srvadmin-storageservices

[Bearbeiten] ganeti

# We need at least version 2.4 to support multiple volume groups
aptitude install ganeti2/unstable ganeti-htools/unstable
# drbd options
echo "options drbd minor_count=255 usermode_helper=/bin/true" > /etc/modprobe.d/drbd.conf
echo "drbd" >> /etc/modules
# domU default kernel/initrd
cd /boot
ln -s vmlinuz-2.6.32-5-xen-amd64 vmlinuz-2.6-xenU 
ln -s initrd.img-2.6.32-5-xen-amd64 initrd-2.6-xenU
# prevent xen from saving instances on shutdown
sed -i /etc/default/xendomains -e "s/\(XENDOMAINS_SAVE\)=\(.*\)/\1=/g"

/etc/xen/xend-config.sxp:

 (xend-relocation-server yes)
 (xend-relocation-port 8002)
 (xend-relocation-address '169.254.1.X')
 (dom0-min-mem 0)
 (enable-dom0-ballooning no)


[Bearbeiten] SSH Hacks to Support DSS-Keys in Ubuntu >14.04

Prior to Ganeti 2.16 DSS-Keys are used to communicate between nodes. Ubuntu dropped Support of DSS-Keys in 14.04, so we need to enable it again. Put the following in all Ubuntu-Nodes:

/etc/ssh/sshd_config add:
 
PubkeyAcceptedKeyTypes +ssh-dss 
 
~.ssh/config create new/add:
PubkeyAcceptedKeyTypes +ssh-dss

Test SSH connection to other nodes with:

ssh -i .ssh/id_dsa root@nodeN

[Bearbeiten] init the cluster (only on the master node)

gnt-cluster init --nic-parameters link=brServer --master-netdev brServer --vg-name vgSystem --enabled-hypervisors=xen-hvm,xen-pvm -s 169.254.1.1 -d cluster1.fbihome.de -m 00:16:3e
gnt-node add -d -s 169.254.1.2 node2.fbihome.de
# fix ganeti default settings
gnt-cluster modify -H xen-hvm:device_model=/usr/lib/xen-4.0/bin/qemu-dm
gnt-cluster modify -H xen-hvm:kernel_path=/usr/lib/xen-4.0/boot/hvmloader
gnt-cluster modify -H xen-pvm:blockdev_prefix=xvd
gnt-cluster modify -H xen-pvm:root_path=/dev/xvda1
gnt-cluster modify -H xen-pvm:initrd_path=/boot/initrd-2.6-xenU
gnt-cluster modify --reserved-lvs=vgSystem/root # don't complain about orphan Dom0 root LVs

[Bearbeiten] ganeti-instance-debootstrap

  • /etc/default/ganeti-instance-debootstrap:
    • MIRROR="http://ftp.fbihome.de/debian"
    • SUITE="squeeze"
    • EXTRA_PKGS="linux-image-xen-amd64 ..." (siehe Serverrichtlinien)
  • /etc/ganeti/instance-debootstrap/hooks/ enthält diverse extra Scripte zum anlegen der DomUs (siehe Serverrichtlinien)
    • Die scripte müssen manuel synchronisiert werden: /usr/local/sbin/syncconfig

[Bearbeiten] ganeti-pygrub

 gnt-cluster modify --hypervisor-parameters \
 xen-pvm:bootloader_path=/usr/bin/pygrub,use_bootloader=False
 gnt-instance modify -H use_bootloader=True instance1.example.com

[Bearbeiten] Update

  • In case grub is updated make sure the xen kernel is still booted first:
    • mv /etc/grub.d/10_linux.dpkg-dist /etc/grub.d/25_linux && update-grub2

[Bearbeiten] Troubleshooting

[Bearbeiten] xend läuf auf nicht auf den slave node(s)

  • Ursache: gnt-cluster redist-conf überschreibt /etc/xen/xend-config.sxp, allerdings unterscheiden sich die IPs des bond1 interfaces.
  • Lösung: xend-relocation-address in der jeweiligen /etc/xen/xend-config.sxp wieder auf die IP des jeweiligen bond1 interfaces setzten und xend neustarten (/etc/init.d/xend restart)

[Bearbeiten] Can't create block device <LogicalVolume(..., not visible, size=2048m)> on node node1.fbihome.de for instance pm.fbihome.de: Can't create block device: Can't compute PV info for vg vgSystem

  • /var/log/ganeti/node-daemon.log contains a line like this one:
    • ERROR Can't get PV information: Can't parse pvs output: line ' /dev/sda2|vgSystem|174628.00|a--v/sdb/dev/sda2|vgSystem|174628.00|'
  • Problem: pvs lvm output is broken
  • workaround:
cat > /usr/local/sbin/pvs <<EOF
#!/bin/sh
# fix pvs output for ganeti
# lvm pvs --noheadings --nosuffix --units=m --unbuffered --separator=\| -o pv_name,vg_name,pv_free,pv_attr
# output creates some garbage with pv_attr as last field
lvm pvs $@ | sed 's/a--.*$/a--/g'
EOF
 
# replace pvs symlink
rm /sbin/pvs
ln -s /usr/local/sbin/pvs /sbin/pvs
Nach einem Update von drbd wird der Symlink wieder auf die alte Datei zurückgesetzt.
/sbin/pvs -> lvm
und muss deswegen neu verlinkt werden

[Bearbeiten] Installation und Einbindung neuer VM-Images

Zunächst muss die aktuelle debootstrap Version upgedated werden. Danach können damit neue Basesysteme installiert werden. Diese gibt es z.B. mit Fokus auf Ubuntu unter http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/ Diese mit dpkg -i installieren.

 debootstrap --arch amd64 precise /temp/minibuntu http://archive.ubuntu.com/ubuntu

Debootstrap installiert wie oben angegeben z.B. das Basesystem von ubuntu 12.04LTS "Precise Penguin" 64bit in einen Temp Ordner. Dies bietet die Grundlage für ein zu erstellendes Basisimage.

Als nächster Schritt muss die Konfiguration vorgenommen werden. Als Grundlage kann ein bestehendes Image einer veralteten Distribution dienen.

Meine Werkzeuge