FailOver IP auf einem Hetzner Dedicated Server in eine VM einrichten

Um das FailOver IP vom Hetzner in eine VM benutzen zu können, muss man erstmal das FailOver IP bridgen, d.h. in die /etc/network/interfaces Datei die route eintragen, das ganze sieht dann auf dem Host Server so aus:

### Hetzner Online GmbH - installimage
# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   xxx.xxx.xxx.xxx
  netmask   255.255.255.192
  gateway   xxx.xxx.xxx.xxx
  pointopoint xxx.xxx.xxx.xxx


auto br0 
iface br0 inet static
 address   xxx.xxx.xxx.xxx
 netmask   255.255.255.255
 bridge_ports none
 bridge_stp off 
 bridge_fd 0
 bridge_maxwait 0
 # Einzlne IPs/Subnetz einfuegen
 up route add -host xxx.xxx.xxx.xxx dev br0
 # Fail Over IP
 up route add -host yyy.yyy.yyy.yyy dev br0

Danach muss man in die VM in /etc/network/interfaces noch das FailOver IP eintragen, das ganze sieht dann so aus:

auto eth0
iface eth0 inet static
 address xxx.xxx.xxx.xxx
 netmask 255.255.255.255
 gateway xxx.xxx.xxx.xxx
 pointopoint xxx.xxx.xxx.xxx

# FailOver IP
auto eth0:0
iface eth0:0 inet static
 address yyy.yyy.yyy.yyy
 netmask 255.255.255.255

natürlich nicht vergessen den Host einmal neu zu starten, damit die neu Konfiguration wirksam werden. That’s it.

Docker NGINX Reverse Proxy mit LetsEncrypt – Mixed Content Problem

Ich wollte letztens WordPress auf Docker testen! Der Datenverkehr soll auch mit Letsencrypt verschlüsselt sein. Dafür habe ich einen Github Projekt gefunden, der das ganze verfahren automatisiert. Alles lief gut bis ich auf das “Mixed-Content” Problem gestoßen bin, wo die WordPress Seite über einen verschlüsselten Adresse abrufbar war, aber die ganzen Bilder/CSS/scripts unverschlüsselt übertragen worden. Nach einem Tag Recherche habe ich gefunden, dass der einfachsten weg das Problem zu lösen ist einfach in die Datei wp-config.php diese Zeile einzufügen:

$_SERVER['HTTPS'] = 'on';

 

VM – Root LVM vergrößern

Um einen Root Partition auf einem VM zu vergrößern, müssen wir erstmal den Logical Volume auf dem Host vergrößern. Man kann den Befehl ausführen während der VM Läuft bzw. Logical Volume eingehängt ist.

lvextend -L +10G /dev/vgroup/VM2

somit erhöhen wir den Logical Volume VM2 um 10GB mehr, nach dem wir den LV auf dem Host vergrößert haben, müssen wir die Partition Table innerhalb die VM neu lesen oder die VM runterfahren dann nochmal neu starten.

jetzt innerhalb der VM kann man mit Hilfe von fdsik die partition vergrößern oder bzw. mit VNC und gparted.

hier werden wir die Partition mit fdisk innerhalb der VM vergrößern:

root@gitlab ~ # fdisk /dev/vda 

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Partition number (1,2,5, default 5): 

Partition 5 has been deleted.

Command (m for help): d
Partition number (1,2, default 2): 

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c2678



Command (m for help): n
Partition type
 p primary (0 primary, 0 extended, 4 free)
 e extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-62914559, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914559, default 62914559): +29,1G

Created a new partition 1 of type 'Linux' and of size 29,1 GiB.

Command (m for help): p
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c2678

Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 61024255 61022208 29,1G 83 Linux


Command (m for help): n
Partition type
 p primary (1 primary, 0 extended, 3 free)
 e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2): 
First sector (61024256-62914559, default 61024256): 
Last sector, +sectors or +size{K,M,G,T,P} (61024256-62914559, default 62914559): 

Created a new partition 2 of type 'Extended' and of size 923 MiB.

Command (m for help): p
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c2678

Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 61024255 61022208 29,1G 83 Linux
/dev/vda2 61024256 62914559 1890304 923M 5 Extended


Command (m for help): n
Partition type
 p primary (1 primary, 1 extended, 2 free)
 l logical (numbered from 5)
Select (default p): l

Adding logical partition 5
First sector (81997824-83886079, default 81997824): 
Last sector, +sectors or +size{K,M,G,T,P} (81997824-83886079, default 83886079): 

Created a new partition 5 of type 'Linux' and of size 922 MiB.

Command (m for help): p
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c2678

Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 61024255 61022208 29,1G 83 Linux
/dev/vda2 61024256 62914559 1890304 923M 5 Extended
/dev/vda5 61026304 62869503 1843200 900M 83 Linux

Command (m for help): t
Partition number (1,2,5, default 5): 
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000c2678

Device Boot Start End Sectors Size Id Type
/dev/vda1 2048 61024255 61022208 29,1G 83 Linux
/dev/vda2 61024256 62914559 1890304 923M 5 Extended
/dev/vda5 61026304 62869503 1843200 900M 82 Linux swap / Solaris

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Das Gerät oder die Ressource ist belegt

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

VM neu starten. Jetzt müssen wir noch das Filesystem Ändern:

resize2fs /dev/vda1 

und [nochmals VM neu starten,] fertig.

KVM Console für VMs auf debian Jessie aktivieren.

Um auf die Guest VM direkt vom Host per console zuzugreifen

virsh console VM

muss man erstmal folgendes auf die Guest VM ausführen:

systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service

Dann muss man noch die Datei /etc/default/grub anpassen, damit folgendes :

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"
GRUB_TERMINAL="serial console"

drin steht und letztlich

update-grub

und jetzt wenn man auf dem Host folgendes ausführt

virsh console VM

Dann sollte es klappen.

KVM VM LVM innerhalb LVM verkleinern

WARNUNG: IMMER BACKUP VORHER MACHEN, und das ganze ist auf eigene Gefahr!

folgendes Szenario, ich habe einen KVM Host Server darauf laufen ein paar VMs. Für fast alle VMs habe ich eine Festplatten große von 20GB angelegt, mit der Zeit musste ich feststellen das 20GB war einfach zu viel und 10GB wurden vollkommen ausreichen, vor allem das ganze kostet zu viel Backup Speicher.

  LV           VG    Attr       LSize  Pool Origin Data%  Meta%  Move Log   Cpy%Sync Convert
  VM1          sunny -wi-ao---- 10.00g                                                   
  VM2          sunny -wi-a----- 20.00g                                                   
  backup-VM1   sunny -wi-a----- 20.00g                                                   
  backup-VM2   sunny -wi-a----- 20.00g                                                   
  home         sunny -wi-ao---- 20.00g                                                   
  root         sunny -wi-ao---- 10.00g                                                   
  swap         sunny -wi-ao----  4.00g                                                   
  tmp          sunny -wi-ao----  5.00g   

Vorbereitung

auf VM2 ist einen debian linux System mit LVM2 Partition installiert, bevor wir die VM verkleinern müssen wir die Machine runter fahren.

virsh shutdown VM2

Backup

wir erstellen erstmal eine neue LV für den Backup, die genau so groß wie die VM2

lvcreate -L 20G sunny -n backup-VM2                                                  

Jetzt machen wir einfach eine 1:1 Copy von die VM, mit dem dd Befehl

dd if=/dev/sunny/VM2 of=/dev/sunny/backup-VM2                                                 

Verkleinern

Jetzt müssen wir die VM2 auf dem Host mounten, da VM2 selber LVM ist benötigen wir das Tool kpartx, falls nicht vorhanden einfach mit apt installieren.

apt install kpartx

nun um die Logical Volumes, die Innerhalb unseren VM2 anzuzeigen, müssen wir folgendes Befehl ausführen:

kpartx -av /dev/sunny/VM2                                          

add map sunny-VM21 (253:9): 0 497664 linear /dev/sunny/VM2 2048
add map sunny-VM22 (253:10): 0 2 linear /dev/sunny/VM2 501758
add map sunny-VM25 : 0 41439232 linear /dev/sunny/VM2 501760

und nun aktivieren wir die LVMs, die innerhalb VM2 sind

vgchange -ay
lvscan

Nun müssen wir, die LVM, die wir verkleinern wollen erstmal auf Fehlern überprüfen

e2fsck -f /dev/VM2-vg/root

Jetzt verkleinern wir die Root Partition

resize2fs /dev/VM2-vg/root 8G

danach verkleinern wir die Root LV

lvreduce -L 8.5G /dev/VM2-vg/root

Jetzt nochmal die Root Partition ändern

resize2fs /dev/VM2-vg/root

auf Fehlern überprüfen

e2fsck -f /dev/VM2-vg/root

Jetzt können wir die LVMs deaktivieren und entfernen

vgchange -an
kpartx -dv /dev/sunny/VM2

Nachher, die Machine booten und folgendes Befehl innerhalb VM2 eingeben:

pvs -v --segments /dev/sda5
root@VM2 ~ # pvs -v --segments /dev/sda5
    DEGRADED MODE. Incomplete RAID LVs will be processed.
    Wiping cache of LVM-capable devices
    Using physical volume(s) on command line
  PV         VG      Fmt  Attr PSize  PFree  Start SSize LV     Start Type   PE Ranges          
  /dev/sda5  VM2-vg lvm2 a--  19,76g 10,41g     0  2176 root       0 linear /dev/sda5:0-2175   
  /dev/sda5  VM2-vg lvm2 a--  19,76g 10,41g  2176  2664            0 free                      
  /dev/sda5  VM2-vg lvm2 a--  19,76g 10,41g  4840   218 swap_1     0 linear /dev/sda5:4840-5057

root@VM2 ~ # sudo pvmove --alloc anywhere /dev/sda5:4840-5057
  /dev/sda5: Moved: 0,0%
  /dev/sda5: Moved: 50,5%
  /dev/sda5: Moved: 100,0%
sudo pvmove --alloc anywhere /dev/sda5:yyyy-end

Nachher die VM2 mit GParted booten um die physikalischen Volumen zu verkleinern.

und am Schluss die LVM selber auf dem Host verkleinern.

lvreduce -L 10G /dev/VM2

 

externe Festplatte(mit mehr Strom) an das Raspberry Pi B+ anschließen

mehr Strom an die USB-Ports

Als ich versucht habe meine externe Festplatte WD an das Raspberry Pi anzuschließen, musste ich feststellen dass die Festplatte nicht richtig starten könnte, der Grund dafür war dass die nicht über genug Strom versorgt war.

Als OS habe ich raspbian auf meinem Raspberry Pi installiert, um mehr Strom an die USB Ports zu bekommen müsste ich in die Datei /boot/config.txt folgende Zeile einfügen

max_usb_current=1

diese Zeile bewirkt dass die USB Ports bis zu 1200 mA an Strom liefern.

Links:

http://linuxundich.de/raspberry-pi/externe-festplatten-am-raspberry-pi-betreiben-openelec-und-andere-systeme/

 

Salt Minion/Master auf Debain (Jessie) installieren

Ich benutze Salt um updates auf allen VMs zu installieren, Salt kann viel mehr, hier werde ich aber nur zeigen wie man Updates auf allen VMs durchführt.

Salt-Master insallieren

apt-get install salt-master

Man installiert den salt-master auf dem Host, auf denen die Befehle ausgeführt werden sollen. Falls man den Master auch als einen Client(Minion) haben möchte, dann installiert man zusätzlich das salt-minion Package.

apt-get install salt-minion

danach muss man auf dem Master die /etc/salt/minion Datei editieren

# Set the location of the salt master server, if the master server cannot # be resolved, then the minion will fail to start.
master: localhost

und beim master localhost eintragen. Somit wird der Master auch als einen Minion in die Liste eingefügt.

Salt-Minion installieren

jetzt installiert man auf jedem VM bzw. jedem Server, den man über den salt-master updaten möchte, das salt-minion Package.

apt-get install salt-minion

Nun müssen wir unseren salt-minion zeigen wo unsere salt-master sich befindet, dafür editieren wir die /etc/hosts Datei und fügen den IP für den salt-master.

echo "192.168.10.10 salt" >> /etc/hosts

Wobei hier trägt Ihr anstatt vom 192.168.10.10 den IP von eurem Master Host. Jetzt müssen wir nur noch auf dem Master die Minion(s) akzeptieren.

dafür auf dem salt-master folgendes Befehl ausführen

salt-key -L

es wird eine Liste mit allen Minions angezeigt. damit man die einfügt führt man folgendes Befehl

salt-key -A

Jetzt können wir aus dem salt-master alle Minions updaten

salt '*' pkg.list_upgrades

dieses Befehl zeigt uns alle verfügbare Updates auf alle minions, um den update durch zu führen, benutzt man folgendes Befehl

salt '*' pkg.upgrade
Default top bar text