VMware ESX mit Public IP verliert die Verbindung zum vCenter mir Private IP

Ich habe lokal ein vCenter Server und bei Hetzner einen Rootserver gemietet auf dem ich ESXI installiert habe. Dieser muss eine Public IP haben, da es ja dort im Datacenter kein „Lokales Netzwerk“ gibt. Das ist zwar nicht so optimal, aber immerhin kann man mit der hetzner Software Firewall den Traffic zu diesen IPs einschränken.

Innerhalb der VM Umgebung gibt es eine pfSense Router VM mit der ich ein IPsec VPN zum Heimnetzwerk mache.

Nun stellte ich fest, dass sich der ESX Server bei Hetzner alle paar Sekunde vom vCenter trennt. Ich musste dann vor jeder Aktion die Verbindung wiederherstellen, oder mich direkt mit dem ESX Host Client verbinden. Also ging ich diesem Problem nach um es zu lösen.

Continue reading VMware ESX mit Public IP verliert die Verbindung zum vCenter mir Private IP

ESXi verschwundenen Datastore wieder mounten

Als ich kürzlich von ESXi 6.5 auf 8.0 wechselte (mittels einer frischen Neuinstallation), da ein upgrade nicht möglich war), wurden alle Datastores, bis auf einen nicht eingebdunden.

Dieser Datastore lag auf einer Disk, die früher an einem RAID Controller war, den ich jedoch herausnehmen.- und stattdessen die Disk direkt an den SATA Port hängen musste, weil der defekt war.

Im ESXi Webinterface war dieser nirgendwo sichtbar, obwohl man das Gerät sah.

Continue reading ESXi verschwundenen Datastore wieder mounten

check_aacraid.py: „No output from arcconf!“

Mittels des icinga/nagios check-plugins: check_aacraid.py lässt sich der Zustand eines Adaptec RAID Controllers, wie beispielsweise den Adaptec RAID 5405 in einem ESX-Server überwachen.
Continue reading check_aacraid.py: „No output from arcconf!“

redhat/CentOS: vmware-tools mit yum installieren

Das installieren der vmware-tools auf Linux Rechnern, kann manchmal lästig sein. Was viele nicht wissen:
Anstelle der manuellen Installation kann man das Packet: open-vm-tools
installieren (via: yum install open-vm-tools).

Das wird von vmware fully supported.

Bei CentOS6 ist es im EPEL repository drin, ab CentOS7 sogar im core repository.

Ein ansible-playbook dafür könnte so aussheen:

---
- hosts: vmware-servers
  tasks:
    # PREREQUISITES: For RHEL < 7 we need the EPEL repository
  - name: install the EPEL repo
    yum: pkg=epel-release state=latest
    when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "6")
 
    name: install the EPEL repo
    yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
    when: (ansible_os_family == "RedHat" and ansible_distribution_major_version == "5")
 
 
    # install open-vm-tools
  - name: install open-vm-tools
    yum: pkg=open-vm-tools state=latest
    when: ansible_os_family == "RedHat"
 
  - name: install open-vm-tools
    apt: pkg=open-vm-tools state=latest
    when: ansible_os_family == "Debian"
 
 
 
  # startup
  - name: ensure vmware-tools are running and started automatically
    service: name=vmtoolsd state=started enabled=yes
    when: ansible_os_family == "RedHat"
 
  - name: ensure vmware-tools are running and started automatically
    service: name=open-vm-tools state=started enabled=yes
    when: ansible_os_family == "Debian"

ESX: Keine Netzwerkverbindung bei einem ESX Server innerhalb einer VM

In einem VMware ESX System kann man auch ein ESX innerhalb einer VM ertsellen, was zum testen sehr gut sein kann. 😉

Man wird aber merken, dass die VMs in der "nested VM", keine Netzwerk-Verbindung haben.
Dieses kommt daher, weil beim ESX Standardmässig der sog. "Promiscuous Mode" beim vSwitch nicht aktiviert ist.

Am besten legt man deshalb ein neues Netzwerk (Portgruppe oder vSwitch) an aktiviert dort den Promiscuous Mode und Verbindet das Netzwerk mit der "ESX VM".

Weitere Informationen dazu in der vcritical.com: [http://www.vcritical.com/2011/07/vmware-vsphere-can-virtualize-itself/|VMware vSphere can virtualize itself + 64-bit nested guests]

vSphere CLI: Verbindung zum ESX schlägt fehl

Wenn man sich mit den vSphere CLI’s zum Server verbinden will erhält man die Meldung:

Server version unavailable at '<a href="https://esx-server:443/sdk/vimService.wsdl'" target="blank">https://esx-server:443/sdk/vimService.wsdl'</a> at /usr/share/perl5/VMware/VICommon.pm line 545, <STDIN> line 2.

Dies ist kein bug in der vSphere CLI, sondern eine restriktion in den neueren perl Versionen, die ein https connect ohne gültiges SSL Zertifikat verweigern. – Und da fast niemand auf dem ESX ein meist kostenpflichtiges "gültiges" SSL Zertifikat installieren will, dürfte dieser mag einige Administratoren betreffen.

Die Lösung ist ganz einfach mittels einer shell-Variable, die man jeweils vor dem Aufruf setzen muss:

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

Damit dürfte dann die verbindung klappen.

Related Links

vmware communities: openSSL certificate verification

ESX: Backup

Hat man einen ESX Server aufgesetzt und am laufen kommt bald die Frage auf, wie sichern.

Hier sind einige Szenarien erwähnt:

ESX-Konfiguration

Es ist zwar nicht unbedingt nötig, die ESX Konfiguration zu sichern, kann aber trotzdem nützlich sein und mit den vmware-vcli scripts [http://www.vm-help.com/esx/esx3i/esx_3i_rcli/vicfg-cfgbackup.php|vicfg-cfgbackup] gemacht werden:

[root@linux-server ~]# vicfg-cfgbackup --server esx-server -s /backup/esx-server.tgz

Virtuelle Maschinen (Full Backup)

Oft wäre es z.B. in Desaster Szenarien gut, wenn man ein volles Backup seiner Virtuellen Maschinen hätte.

Dies ist zwar mit dem "VMware Consolidated Backup" möglich, doch diese Software ist sehr teuer.
Günstiger und einfacher(!) gehts mit dem kostenlosen Community-Script [http://communities.vmware.com/docs/DOC-8760|ghettoVCB].

Dieses script muss auf dem ESX-Server in der SSH shell gestartet werden und kann sogar Online-Backups im laufenden Betrieb mittels snapshots erzeugen! 😉

Virtuelle Maschinen (Konfiguration)

Diesen Fall musss man nur dann beachten, wenn man kein Hardware-RAID hat und stattdessen einfach zwei oder mehrere physische Disks hat mit denen man je einen Datastore macht und diese dann mittels eines Software RAIDs zusammenführt.

In diesem Fall werden die Konfigurationen der virtuellen Maschine nämlich nur auf dem "Haupt"-Datastore gespeichert. Fällt nun genau diese Disk aus, verliert man zumindest die Konfiguration der VM und muss diese neu erstellen.
Um dem vorzubeucgen kann man sich mittels dem folgenden Script, dass man per cronjob auf dem ESXi laufen lassen kann zumindest die Konfiguration sichern:

#!/bin/sh
 
MAIN_DS="/vmfs/volumes/local-disk1"
BACKUP_DS="/vmfs/volumes/local-disk2"
 
cd $MAIN_DS
for vmDir in `ls -d *`; do
  if [ ! -d $BACKUP_DS/$vmDir ]; then
    echo "$BACKUP_DS/$vmDir does not exist, creating it"
    mkdir $BACKUP_DS/$vmDir
  fi
  cp $vmDir/<em>.nvram $vmDir/</em>.vmsd $vmDir/<em>.vmx $vmDir/</em>.vmxf $BACKUP_DS/$vmDir/ 2> /dev/null
done

[stextbox id=“warning“ caption=“Achtung“]Generell ist bei ESX ein Setup ohne Hardware-RAID eine "Bastelei"; im privaten Bereich leider oft die einzige Möglichkeit um eine Virtualisierung zu betreiben.

Falls nun die primäre Festplatte ausfällt, wird die VM darauf nicht mehr weiterlaufen, insofern ist die Verfügbarkeit im Sinne des RAIDs nicht mehr vollständig gegeben.
Man kann aber mittels dieser Lösung die VM vom zweiten Datastore wieder starten und so relativ schnell wieder verfügbar machen.[/stextbox]

Related Links

What Files Make Up a Virtual Machine?
HLOG files.. Do I need to keep them?
Hetzner-Forum: ESX mit Soft-RAID betreiben

ESX: Cronjobs permanent machen

Beim ESX Server wird der Grossteil des Filesystems bei jedem neustart neu initialisiert und alle (manuellen) Änderungen gehen verloren.

Dies trifft leider auch für das crontabs file (/var/spool/cron/crontabs/root) zu.

Das einzige file, welches nicht neu erstellt wird ist: /etc/rc.local. – Dabei darf man sich, wenn man dieses file anschaut, nicht vom erwähnten Verzeichnis: "/etc/rc.local.d" verwirren lassenn! – Dieses (nicht-existente) Verzeichnis sieht zwar so aus, wie wenn es dazu gedacht wäre lokale init-scripts abzulegen, es wird aber, wenn man es erstellt ebenfalls bei jeden neustart gelöscht.

Will man nun z.B. sein eigenes crontab file erstellen, bei dem Änderungen nicht verloren gehen, ist folgende Vorgensweise möglich:

Ein Verzeichnis auf einem Datastore- (z.B. /vmfs/volumes/myDatastore/), und darin ein crontabs Verzeichnis erstellen.

Danach fügt man noch einen Eintrag in /etc/rc.local hinzu, der das cronfile bei jedem start an das schon vorhande anhängt:

mkdir /vmfs/volumes/myDatastore/crons
cp /var/spool/cron/crontabs/root /vmfs/volumes/myDatastore/crons/
echo "cat /vmfs/volumes/myDatastore/crons/root >> /var/spool/cron/crontabs/root" >> /etc/rc.local