Lange haben wir darauf gewartet, nun kommt es Schritt für Schritt. Statische IPs für Microsoft Azure virtuelle Maschinen.

Um eines vorweg zu nehmen: wirkliche statische IPs erhalten die VMs durch diesen Blog Eintrag nicht. Das Problem, dass der DNS-Server keine statische IP hat und der Best Practice Analyzer dadurch Fehler wirft, ist deswegen weiterhin vorhanden. Auch können Infrastrukturdienste, die auf eine statische IP angewiesen sind (wie der Windows DHCP-Dienst) weiterhin nicht auf Azure Maschinen sinnvoll ausgeführt werden.

Es gibt jedoch noch ein weiteres Problem mit den dynamischen IP-Adressen. Microsoft Azure kennt zwei Stop Modi. Einen bei dem die Maschine heruntergefahren und gestoppt wird und dadurch zumindest geringere weitere Kosten für die Allokierung von Ressourcen anfallen.
Diesen Kosten kann man nur entgehen, wenn man die Maschine z.B. über das Azure Management Portal herunterfährt. Die Maschine wird dann deallokiert und es entstehen keine weiteren Kosten mehr.

Wer sich nun schon etwas mit der Funktionsweise der Infrastrukturkomponenten auseinander gesetzt hat, weiß, dass Microsoft Azure die IP-Adressen für die virtuellen Maschinen basierend auf einem festgelegten Pool an Adressen vergibt. Dieser Pool wird in den Netzwerken und Subnetzen festgelegt, in die die Maschinen dann hineinkommen. Die erste IP-Adresse, die für eine Maschine vergeben wird, ist im Netz 192.168.10.0/24 dann z.B. die 192.168.10.4 . Sobald eine zweite Maschine dazukommt, erhält diese die Adresse 192.168.10.5.

Gehen wir nun von folgendem Szenario aus. Andere Dienste auf Maschinen außerhalb oder sogar in Windows Azure haben als Ziel IP-Adresse die der ersten Maschine also 192.168.10.4 hinterlegt. Da es sich jedoch zunächst um eine Entwicklungsumgebung handelt, wird die Maschine aus Kostengründen gestoppt und damit deallokiert. Die Bindung der beiden IP-Adressen (die interne und virtuelle externe) verliert damit ihre Gültigkeit und wird in den Pool zurückgegeben.

Als nächsten Schritt wird eine weitere Test VM auf Microsoft Azure bereitgestellt. Die nächste freie IP-Adresse ist die 192.168.10.4, welche der Maschine zugewiesen wird. Sollte nun die erste Entwicklungsmaschine wieder benötigt werden, wird diese die nächste freie IP-Adresse und nicht mehr die ursprüngliche 192.168.10.4 erhalten. Die Dienste können dadurch nicht mehr zugreifen.

Dieses Verhalten gilt es nun zu verhindern. Wir möchten, dass gleichen Maschinen jederzeit bei Wiederallokierung die gleiche IP-Adresse zugewiesen wird.

Hierfür gibt es nun eine großartige neue Möglichkeit in Microsoft Azure!

Dem Microsoft Azure DHCP-Dienst kann nun mitgeteilt werden, dass er einer Maschine jederzeit die gleiche IP zuteilen soll. Dies bedeutet jedoch nicht, dass die Maschine selbst eine statische IP eingetragen bekommt. Dies wird weiterhin nicht unterstützt, siehe oben.

Wie funktioniert nun die Zuweisung von statischen IP-Adressen in Azure?

Die Vorgehensweise wird in diesem kurzem HowTo beschrieben. Die Beschreibungen beziehen sich jeweils auf den Cloud Dienst vm-adac01-test mit gleichnamiger VM und virtuellem Netzwerk wm-muc-vpn-test .

Ein Hinweis vorweg: innerhalb eines Azure Subnetzes sollten statische und dynamische IP-Adressen nicht vermischt werden. Erstellen Sie deswegen für Tests zunächst ein neues Subnetz. Die Zuweisung statischer IP-Adressen kann nur per PowerShell erfolgen.

  1. Verbinden Sie sich zunächst zu Ihrer Azure Subsription über die Azure PowerShell und verbinden Sie sich mit Ihrer Subscription.Die einfachste Methode funktioniert über Add-AzureAccount . Azure fragt Sie nach einem Unternehmensaccount und speichert ihn ab. Im Anschluss verbindet es sich automatisch zu einer Subscription auf Microsoft Azure.az-statip-sc1Anmelden am Azure Account in PowerShellFalls Sie mehrere Subscriptions in Azure haben und herausfinden möchten, zu welcher sich Azure gerade verbindet, verwenden Sie Get-AzureSubscription –Current. Wenn es sich nun nicht um die richtige Subscription handelt, können Sie sich eine Auswahl aller verfügbaren Subscriptions anzeigen lassen mit Get-AzureSubscription .Mit Select-AzureSubscription –SubscriptionName <subscription> können Sie nun zur richtigen Subscription wechseln.
az-statip-sc2

Überblick über die verwalteten Subscriptions

  1. Bevor wir eine statische IP-Adresse zuweisen, sollten wir überprüfen, ob diese bereits verwendet wird. Dies passiert mit Test-AzureStaticVNetIP -VNetName wm-muc-vpn-test -IPAddress 192.168.10.8 , wobei die IP-Adresse natürlich eine gültige Adresse aus dem Subnetz darstellen muss. Wenn die Adresse bereits vergeben ist zeigt Azure unter IsAvailable den Wert False an und schlägt darunter mögliche Adressen vor. Wenn die Adresse noch verfügbar ist, erscheint als Wert True und wir können ihn verwenden.
az-statip-sc3

Überprüfen, ob die IP-Adresse im Subnetz vorhanden ist

Da einige Commands den VM Namen als Paramenter noch nicht automatisch in den benötigten Typ umwandeln können, können wir den entsprechenden Befehl und Typ zunächst einer Variable zuweisen, die wir später wieder verwenden oder wir verwenden als Parameter beim Setzen der statischen IP für eine VM gleich in einer verschachtelte Abfrage.

  1.  Mit dem Befehl Set-AzureStaticVNetIP -VM (Get-AzureVM -ServiceName vm-adac01-test -Name vm-adac01-test) -IPAddress 192.168.10.8| Update-AzureVM setzen wir die IP fest
    Falls die Maschine vorher eine andere Adresse hatte, startet sie jetzt neu.
az-statip-sc4

Setzen der statischen IP

  1. Zum überprüfen, ob die Festsetzung geklappt hat, können wir Get-AzureStaticVNetIP -VM (Get-AzureVM -ServiceName vm-adac01-test -Name vm-adac01-test) ausführen. Hier sollte die Maschine nun die neue IP-Adresse erhalten haben.
az-statip-sc5

Die neue IP-Adresse der virtuellen Maschine im Microsoft Azure Management Portal

Auch wenn die Maschine nun über Herunterfahren im Portal deallokiert wird, erhält sie beim nächsten Hochfahren wieder die gleiche statische IP.

Wie oben erwähnt, könnte zur Vereinfachung z.B. auch die Variable $vmName = (Get-AzureVM -ServiceName vm-adac01-test -Name vm-adac01-test) zugewiesen und verwendet werden.

Falls die statische IP-Adresse wieder entfernt werden soll, geschieht dies in diesem Beispiel über Remove-AzureStaticVNetIP -VM (Get-AzureVM -ServiceName vm-adac01-test -Name vm-adac01-test) -IPAddress 192.168.10.8| Update-AzureVM

Hinweis: Die für statische IP-Adressen verwendeten Commands sind nur in den neuesten Azure PowerShell cmdlets enthalten. Diese können ab sofort über den Microsoft Web Platform Installer bezogen werden.

Fragen, Anmerkungen oder Informationen? Hier geht’s zum Kontaktformular.