Für den heutigen Beitrag werden wir den kostenlosen Load Balancer verwenden, den Kemp für die Evaluierung von Produkten und Funktionen anbietet. Heute werden wir sicherstellen, dass unsere Webanwendung hochverfügbar ist und hinter zwei LoadMastern in einer Hochverfügbarkeitskonfiguration liegt, so dass wir alle Serverknoten bei Bedarf leicht verwalten, die Gesamtzahl der Verbindungen auf alle verteilen, den Datenverkehr überwachen können usw. Wir werden dies erreichen, indem wir den gesamten Prozess der Bereitstellung, Lizenzierung und Konfiguration mithilfe von PowerShell automatisieren.
Ein kleiner Hinweis zur HA-Konfiguration (von der Webseite)
Die Hochverfügbarkeitsfunktion (HA) des LoadMaster garantiert die Verfügbarkeit Ihrer Serverfarm. HA wird durch einen Hot-Standby- und Failover-Mechanismus erreicht. Zwei identische LoadMaster werden als Cluster in das Netzwerk eingebunden. Eine Maschine dient als aktiver LoadMaster, die zweite verbleibt in einem Standby-Zustand - immer bereit, die Aktivitäten des aktiven Servers zu übernehmen. Dieser Cluster erscheint als eine einzige logische Einheit zur Internet-Seite und zu den Serverfarm-seitigen Verbindungen.
Bei einem HA-Cluster hat jede Netzwerkschnittstelle eine individuelle IP-Adresse und eine gemeinsame IP-Adresse, die mit dem Partnergerät geteilt wird. Die gemeinsame IP-Adresse ist für beide LoadMaster Appliances identisch, obwohl sie zu jedem Zeitpunkt nur dem aktiven LoadMaster zugeordnet ist.
Das
Ziel von redundanten LoadMastern ist es, ein zuverlässiges Datenverkehrsmanagement zu gewährleisten, auch wenn
wenn ein LoadMaster nicht mehr verfügbar ist. Die Vorteile von HA sind wie folgt:
Eliminiert einen Single Point of Failure.
Die zweite (Standby-)Einheit überwacht die aktive
Einheit, um zu erkennen, ob ein Fehler aufgetreten ist.
Die Persistenz kann mit den HA-Parametern beibehalten werden:
Inter HA L4 TCP-Verbindungsaktualisierungen
Inter HA L7-Persistenzaktualisierungen
Haftungsausschluss:
Der Code und die Techniken, die im Folgenden erläutert werden, können frei verwendet und weitergegeben werden, allerdings ohne besondere Fehlerbehandlung. Der Grund dafür ist, zusätzliche Komplexität in der Logik, die wir implementieren werden, zu vermeiden und direkt auf den Punkt zu kommen. Die gesamte Validierung und Fehlerbehandlung kann in einer zweiten Phase implementiert werden, sobald der Hauptfluss und die Konzepte verstanden sind.
Das Bild unten zeigt die Startumgebung, die wir für die Konvertierung in das verwenden werden, was wir im zweiten Bild sehen können.
Voraussetzungen:
vSphere-Zugriff und -Anmeldeinformationen
Ein Computer, auf dem PowerShell ausgeführt werden kann
Eine Kemp 360 Central MELA-Testversion wird bereitgestellt und läuft – Alle Informationen zur Bereitstellung von Central finden Sie hier. Wir gehen davon aus, dass die Central MELA-Testversion bereits bereitgestellt wurde und ausgeführt wird (Informationen unten, wo Sie herunterladen können).
LoadMaster VLM-Bereitstellungsdateien (ovf und vmdk).
Kemp LoadMaster Powershell API-Wrapper.
Kemp 360 Central Powershell API-Wrapper (Beta).
Kemp Application Template (basierend auf Ihren Bedürfnissen, in unserem Beispiel verwenden wir Apache und IIS)
Beginnen wir mit dem Herunterladen aller erforderlichen Tools und Bibliotheken: Laden Sie Central und die LoadMaster VLM Deployment-Dateien herunter
1 – Erstellen Sie bei Bedarf ein kostenloses Kemp-Konto und laden Sie Kemp360Central für VMware und den LoadMaster VLM von hier herunter. Extrahieren Sie den gesamten Inhalt in einen Ordner, der für die Tests verwendet wird, z.B. C:\PowershellAutomationTest\VLM_Images. Bitte beachten Sie, dass die Zip-Datei, die für Central heruntergeladen wird, sowohl Central als auch die LoadMaster Deployment-Dateien enthält. Behalten Sie die LoadMaster-Bereitstellungsdatei vorerst beiseite, da sie in diesen Beispielen nicht verwendet wird.
2 – Laden Sie den Kemp LoadMaster Powershell API-Wrapper von hier herunter
Extrahieren Sie den Inhalt in einen Ordner, der leicht zugänglich ist, z. B. C:\PowershellAutomationTest\PowerShellWrapper
3 – Laden Sie den Kemp 360 Central Powershell API-Wrapper von hier herunter
4 – Laden Sie VMware PowerCLI herunter und installieren Sie es: Sobald wir alles auf dem lokalen Computer eingerichtet und konfiguriert haben, öffnen wir Microsoft Powershell ISE. Navigieren Sie in der Konsole zu dem Ordner, in den wir alle Materialien extrahiert haben, z. B. C:\PowershellAutomationTest\
Zu diesem Zeitpunkt sollten in diesem Ordner vorzufinden sein
PowerShell LoadMaster-APIs-Wrapperordner
Wrapperordner für PowerShell Central-APIs
VLM-Ordner in Central- und LoadMaster-Bereitstellungsdateien (siehe Abbildung unten)
Das Skript, das ich Ihnen zeigen werde,folgt diesen drei Schritten (Ansatz 1)
Importieren Sie alle notwendigen Module für die Ausführung
Authentifizierung beim Hypervisor
Suchen Sie die OVF-Images und importieren Sie sie in unseren Hypervisor
Nachdem dies erledigt ist, müssen die Maschinen aktiviert und dann konfiguriert werden, diese Schritte bestehen aus:
Starten der Maschine und warten, bis sie erreichbar ist
Akzeptieren der EULA
Lizenz für die Kemp-Webdienste
Akzeptieren Sie die kemp-Analyseberichte (sonst sind wir nicht in der Lage, unsere renomierten Produkte zu verbessern)
Festlegen des Administratorkennworts
Starten Sie die HA-Konfiguration
Ändern Sie die Werte der Variablen nach Ihren Bedürfnissen und führen Sie das Skript aus
Restart-VMGuest -VM $LoadMasterHa 1
Restart-VMGuest -VM $LoadMasterHa 2
Start-Schlaf 40
Write-Output "Maschinen bereit"
###
### Deploy-Machine-Funktion
###
Funktion deploy-machine() {
Param(
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$ImagePath,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$VLMName,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$VMhost,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$VMport,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$ResourcePool,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$KempIDAccount,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$KempIDPassword,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$KempAdminPassword
)
write-output "Bereitstellender Computer [$VLMName]"
Import-VApp -Source $ImagePath -Name $VLMName -VMHost $VMhost
Write-Output "Verschieben des Geräts in die Zielressource [$($ResourcePool)]"
move-VM -VM $VLMName -Destination $ResourcePool
Start-VM -VM $VLMName
###
### Zu diesem Zeitpunkt startet die Maschine, wir müssen ca. 20 Sekunden warten
###
$VMDetails = Get-VM -Name $VLMName
while (!$VMDetails.Guest.IPAddress)
{
Write-Output "-"
Start-Schlaf -s 5
$VMDetails = Get-VM -Name $VLMName
}
$VMIPDetials = $VMDetails.Guest.IPAddress
$VMIP = $VMIPDetials[0]
###
### Akzeptieren der EULA
###
Write-Output "Akzeptieren der EULA"
$LMResponse = Read-LicenseEULA -LoadBalancer $VMIP -LBPort $VMport
$MagicString = $LMResponse.Data.Eula.MagicString
$LMResponse = Confirm-LicenseEULA -LoadBalancer $VMIP -LBPort $VMport -Magic $MagicString
$MagicString = $LMResponse.Data.Eula2.MagicString
###
### Lizenzierung des Geräts Gegen die Kemp-Webdienste
###
Write-Output "Lizenzierung"
$LMResponse = Request-LicenseOnline -LoadBalancer $VMIP -LBPort $VMport -KempId $KempIDAccount -Password $KempIDPassword
###
### Akzeptieren der Kemp-Analyseberichte (sonst werden wir nie in der Lage sein, unsere erstaunlichen Produkte zu verbessern:) )
###
Write-Output "Analytics"
$LMResponse = Confirm-LicenseEULA2 -LoadBalancer $VMIP -LBPort $VMport -Magic $MagicString -Accept yes
###
### Legen Sie das Initialpasswort fest
###
Write-Output "Initialpasswort"
$LMResponse = Set-LicenseInitialPassword -LoadBalancer $VMIP -LBPort $VMport -Passwd $KempAdminPassword
}
Funktion Configure-HA() {
Param(
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$KempAdmin,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$KempAdminPassword,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$VMIP,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$VMport,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$HAMode,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$SharedIP,
[Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
[Zeichenfolge]$PartnerIP
)
$SecureString = ConvertTo-SecureString -String $KempAdminPassword -AsPlainText -Force
$LMCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $KempAdmin, $SecureString
Write-Output "Verbindung zum Gerät herstellen [$LMIP]:$LMPort"
Write-Output "------------------------------"
Initialize-LmConnectionParameters -Address $VMIP -LBPort $VMport -Credential $LMCredentials
Write-Output "Einstellen des HA-Modus [$HAMode]"
Write-Output "------------------------------"
Set-LmHAMode -HaMode $HAMode
Set-NetworkInterface -InterfaceID 0 -Shared $SharedIP
# Waith 15 Sekunden
Write-Output "Warten Sie nach dem Setzen der Shared IP auf [$LMIP] -> $($SharedIP)"
Write-Output "------------------------------"
Start-Schlaf -s 15
# Konfigurieren der Partner-IP
write-output "Setzen der Partner-IP auf [$LMIP] -> $PartnerIP"
Write-Output "------------------------------"
Set-NetworkInterface -InterfaceID 0 -Partner $PartnerIP
Write-Output "Partner auf Gerät 2 konfiguriert" + $PartnerIP
Write-Output "------------------------------"
#Write-Ausgabe "=================================================================================================================================================================================================
Start-Schlaf -s 10
#Set-LMHAConfiguration -havhid $HAID
Write-Output "Gerät konfiguriert"
}
Am Ende der Ausführung dieses Skripts sollten wir die beiden LoadMaster in HA konfiguriert haben. Wie wir auf dem Bild unten sehen können, ist der obere der aktive Master, der mittlere die Standby-Einheit und der letzte die Shared IP-Benutzeroberfläche.
Was in dieser Phase übrig bleibt, ist das WebAnwendungsverbindungsteil mit den folgenden Schritten:
Hochladen einer Vorlage
Erstellen eines VS
Verknüpfen Sie meine Webanwendung real
Server(s) an den erstellten VS
Test?
Das Hochladen einer Vorlage kann mithilfe dieses Befehls ausgeführt werden
In unserem Skript werden wir diesen Teil des Codes haben, der sich damit befasst, und ich persönlich bevorzuge es, eine Funktion zu verwenden, die später wiederverwendet werden kann. Anstatt diese Funktion gegen das SharedIP-Gerät aufzurufen, können wir die LoadMaster HA-Funktionalität nutzen und eine kleine Änderung an unserem Ablauf vornehmen. Was wir tun können, ist den Ablauf in zwei Teile aufzuteilen, wobei der erste Teil das erste Gerät mit allem konfiguriert, was wir brauchen (Template für die Webanwendung, Erstellen der VirtualServices und Hinzufügen eines oder mehrerer Real Server). Der zweite Schritt besteht darin, die zweite Maschine zu erstellen und die HA-Konfiguration zu starten, so dass die gesamte VS-Konfiguration repliziert wird, sobald die beiden Maschinen synchronisiert sind.
Der neue Ablauf sieht dann wie folgt aus:
Setzen Sie Maschine 1 wie in den vorherigen Schritten ein
Maschine 1 konfigurieren
Laden Sie die Vorlage hoch (eine
Funktion)
Erstellen der VS-Konfiguration
(eine Funktion)
Fügen Sie die echten Server hinzu
Bereitstellen von Computer 2
HA konfigurieren
Test
Dazu mussten wir das vorherige Skript leicht abändern, so dass es nun wie folgt aussieht:
Am Ende dieser Skriptausführung werden wir Folgendes haben
Wenn wir versuchen, die VS-IP 10.35.34.12 zu erreichen, sehen wir unsere Web-App
Zu Testzwecken können Sie dies manuell tun, um zu prüfen, ob alles wie erwartet funktioniert. Sie können aber auch Apache Bench verwenden, um zu prüfen, wie sich das System unter Stress verhält. Machen wir einen kurzen Testlauf
Ich habe Apache Bench mit diesen Parametern ausgeführt
-n 10000 -c 500 beim Ausführen der RS-Seite sah so aus:
Virtuelle Service-Statistiken
Wie Sie von oben sehen können, im Bild 8 waren alle Anschlüsse auf die 2 RSs verteilt
In diesem Stadium haben wir unsere Anwendung in einer HA-Umgebung in VMware mit PowerShell zur Automatisierung der gesamten Bereitstellung eingerichtet und in Betrieb genommen.
Nun, da wir verstehen, was wirklich in einer solchen Bereitstellung involviert ist, gibt es noch eine andere Methode für diese Bereitstellung, die tatsächlich aus weniger Schritten besteht und uns in einigen Fällen mehr Kontrolle vor der Bereitstellung der Maschine ermöglicht, z. B. die Zuweisung einer IP-Adresse im Voraus, damit es keine Konflikte gibt, die Zuweisung eines Gateways usw.
Bei dieser Methode wird die Funktionalität von Kemp360 Central für die automatische Lizenzierung und Bereitstellung von Maschinen in VMware, KVM und XEN verwendet. Unter der Annahme, dass Ihr Central bereits in Betrieb ist und mit der MELA Trial-Lizenz aktiviert wurde, werden wir die folgenden Schritte etwas anders gestalten. Was wir erreichen wollen, ist die gleiche Konfiguration wie in unserem vorherigen Beispiel, aber diesmal mit Kemp360 Central. Das bedeutet weniger Schritte und weniger Komplexität, da Central sich um den Import, die Instanziierung und die Aktivierung des VLM-Images kümmert, d.h. die ganze "Komplexität" wird aus unseren Skripten entfernt, da Central das für uns erledigt. Die Schritte werden also sein:
Erstellen des HA-LoadMasters
Konfiguration aus der Zentrale
Bereitstellen für eine bestimmte Ziel
Umgebung (In unserem ersten Fall wird beides auf VMWare sein)
Anwenden der VS-Konfiguration
Test
Die Funktion, die wir nutzen werden, ist das LoadMaster Deployment. Wenn Sie möchten, können Sie zunächst die Schritte mit Hilfe der Benutzeroberfläche durchgehen, die Sie durch den Prozess der Erstellung eines oder mehrerer Geräte führt, und entscheiden, wie die Bereitstellung erfolgen soll (manueller Ansatz - Herunterladen und Instanziieren, automatisch - Central erledigt alles für uns), dies wird Ihnen helfen, sich mit dem Geschehen vertraut zu machen. Es gibt nur eine Voraussetzung, die für diesen Ablauf erfüllt sein muss: Wir sollten uns bei Central anmelden und mindestens eine Zielumgebung erstellen. Melden Sie sich dazu bei Central an, navigieren Sie zum Abschnitt Zielumgebungen (siehe Abbildung 10 unten), klicken Sie auf die Schaltfläche Neu erstellen und geben Sie die erforderlichen Parameter ein (siehe Abbildung 11). Die Schaltfläche Speichern wird erst verfügbar, wenn die Überprüfung der Anmeldeinformationen erfolgreich abgeschlossen wurde. Sobald die Zielumgebung korrekt erstellt wurde, können wir zurück zur PowerShell wechseln.
Unser Powershell-Skript wird zunächst aus drei Funktionen bestehen
Erstellen der HA-Konfiguration
Bereitstellen für VMWare
Konfigurieren der VSs (wir haben diesen Teil bereits aus dem vorherigen Ansatz)
Test
Um dies tun zu können, müssen wir vor dem Einsatz einige Details wissen. Diese sind:
Der gewünschte Netzwerkname
zur Zuweisung an die VM, die in VMWare definiert ist
Der Name des Ressourcenpools
Der Name des Datenspeichers
Kemp360 Central will map to the correct VMWare IDs and schedule the VMs for deployment with the right parameters.
Das folgende Skript ist ein Schnelltest, um zu überprüfen, ob alles wie erwartet mit einem einzelnen Rechner funktioniert. Der anfängliche Importabschnitt und die Variablendeklaration sind die gleichen wie in unseren vorherigen Beispielen, unten finden Sie nur den Aufruf der Funktion, die für die Erstellung des Profils und die Bereitstellung verantwortlich ist. Bitte beachten Sie, dass die Erstellung des Profils und die Bereitstellung zwei getrennte Schritte sind, so dass Sie z. B. zunächst 10 Profile erstellen und sich dann später für eine Bereitstellung in Ruhe entscheiden können.
#####
# Herstellen und Authentifizieren bei central
###Initialize-K360Central -Address $CentralIP -User $CentralAdmin -Password $CentralPassword -Port 443
###
# Erstellen einer LoadMaster-Bereitstellungsinstanz in Central
### Zuweisen von Netzwerkparametern
im Voraus###
$LMDeploymentParams = @{
'HAMode' = "SA"'DeploymentName' = "TestDeploymentFromPWS6"'DeploymentDescription' = "Test"
'Gateway' = "10.35.34.1"'Eth0Device1IP' = "
10.35.34.120/24"
'WUIPort' = "443"'Nameserver' = ""
}$obj = Create-LoadMaster-Deployment @LMDeploymentParams
$DeviceProfileID = $obj.Data.id
######
Bereitstellen des erstellten Profils
###
$params = @{
'TargetEnvironmentName' = 'vCenterPWS''ResourcePool'='afabiano''NetworkName'='Antonio_34''DataStore'='THEALLSPARK''AutoPowerOn'='no''DeviceProfileId'
= $DeviceProfileID
}
$InstanceID = LMInstance-Prepare @params
LMInstance-Deploy -InstanceID $InstanceID -verbose
Nach einigen Minuten befindet sich das Gerät in Ihrer Umgebung, wird je nach Ihren Präferenzen ein- und ausgeschaltet und automatisch mit Central verbunden, wie in der Abbildung unten dargestellt
Jetzt ist es an der Zeit, die Dinge spannender zu machen. Lassen Sie uns unsere vorherige LoadMaster HA-Konfiguration mit der Template-Instanziierung automatisieren, uns mit Central verbinden und mit der Überwachung der Traffic-Spitzen beginnen. Unser Skript wird so simpel sein:
Schritt 1: Bereitstellen mit Central
Schritt 2: Konfigurieren der VS-Vorlage
Schritt 3: Kein Schritt 3
Am Ende der Ausführung dieses Skripts (in wenigen Minuten) ist unsere gesamte Umgebung betriebsbereit und fehlertolerant. Alles, was ich tun musste, war, unsere beiden Skripte zusammenzuführen und einige kleinere Anpassungen vorzunehmen. Insbesondere musste ich eine Funktion hinzufügen, die darauf achtet, dass die virtuellen Maschinen in Betrieb sind und die IP zugänglich ist. Das liegt daran, dass die Bereitstellung des virtuellen Geräts von der Zentrale aus asynchron erfolgt, um zu vermeiden, dass der Benutzer einige Minuten lang auf der Bereitstellungsseite hängen bleibt. Die andere kleine Anpassung bezieht sich auf die Namen der virtuellen Geräte. Wenn wir HA-Paare mit Central in einem beliebigen Hypervisor bereitstellen, werden automatisch die Bezeichnungen "-1" und "-2" an das Ende des Gerätenamens angehängt, damit dieser im Hypervisor unterschieden werden kann. Wenn ich mich zum Beispiel entscheide, meinen Einsatz als "superTest" zu bezeichnen und es sich um eine HA-Konfiguration handelt, erstellt Central im Hypervisor superTest-1 und superTest-2. Ich musste dies für die Funktion berücksichtigen, die darauf wartet, dass die Maschinen bereitgestellt werden und bereit sind. Dies ist dann das Endergebnis (ich lasse die IP der Schnittstellen und Geräte, alles andere sollte durch Ihre Konfiguration ersetzt werden):
Nach ein paar Minuten sehen wir dies in Kemp360 Central
Unten sehen Sie stattdessen die LoadMaster-Benutzeroberfläche nach dem Zugriff auf die gemeinsam genutzte IP (10.35.34.143)
Jetzt ist es an der Zeit, den Apache-Bench erneut auszuführen, allerdings mit einem etwas höheren Wert, da wir eine Art stetigen Datenverkehr benötigen. Nachfolgend sehen Sie, wie das Kemp360 Central Dashboard während der Testausführung aussah