Geavanceerde load balancing en clustering in Amazon Web Services

GEPOST DOOR Zevenet | 24 juli 2020

Introductie

Het volgende artikel beschrijft hoe u geavanceerde load balancing-services kunt instellen met ZEVENET Load Balancer voor hoge beschikbaarheid in Amazon Web Services EC2-infrastructuur. We zullen de procedure beschrijven om een ZEVENET-cluster en configureer een TCP load balance-profiel voor load balance HTTP-services met 3 webbackend-servers.

AWS en ZEVENET Infrastructuur

Het volgende diagram beschrijft de architectuur die we web load balancing willen implementeren met ZEVENET Application Delivery Controller in AWS.

Het is vereist om twee ZEVENET Application Delivery Controllers te implementeren, deze sjabloon is beschikbaar op de Amazon Web Services-marktplaats en elke ZEVENET Application Delivery Controller is geconfigureerd in dezelfde VPC dan de webbackend-servers zoals weergegeven in het diagram hierboven met het subnet 17.32.16.0./20.

Elke ZEVENET ADC-instantie is geconfigureerd met één interface eth0en elke instantie wordt aan één toegewezen Elastisch IP, wordt ook een extra elastische IP toegewezen aan een extra IP via eth0 functie in het ZLB1-prod instantie die wordt gebruikt voor load balancing-doeleinden, zoals hieronder beschreven:

ZLB1-prod is toegewezen aan 172.31.20.89 in eth0 is deze instantie rechtstreeks toegankelijk voor één Elastisch IP 34.225.30.206
ZLB2-prod is toegewezen aan 172.31.26.237 in eth0 is deze instantie rechtstreeks toegankelijk voor één Elastisch IP 54.161.240.226

Er wordt een extra IP toegewezen ZLB1-prod en geconfigureerd in de load balancer met naam eth0: vip1 en IP 172.31.26.47, wordt dit IP-adres gebruikt om hier één Load Balancing-service te configureren en deel uit te maken van de clusterdienst, dus dit IP-adres werkt slechts in een van de ZEVENET-instanties tegelijk, die de ACTIEF rol in het cluster. Dit interne IP-adres is toegewezen aan één Elastic IP-adres, dat door klanten wordt gebruikt om verbinding te maken met de gepubliceerde echte webservice.

Tot slot back-end01, back-end02 en back-end03 zijn de EC2-instanties met op Linux gebaseerde webservers, die instanties maken deel uit van de load-balanced service waarbij de client verbinding maakt wanneer daarom wordt gevraagd http://54.144.190.17/ .

Twee ZEVENET-instanties implementeren in AWS Marketplace

Laten we twee ZEVENET Load Balancers inzetten en ze configureren zoals eerder beschreven.

Ga naar de sectie EC2-instanties en druk op Start instantie.

1. Zoek naar de vereiste ZEVENET Load Balancer Enterprise Edition AMI. Dit AMI is gebaseerd op een BYOL-licentie model. De evaluatiefase is gratis en assistentie gedurende een maand is inbegrepen, na deze periode is een definitieve licentie vereist om te werken.

2. Kies een Instantietype. Selecteer hier de benodigde instantie op basis van de bronnen die u wilt laden. Een t2. klein instantie is goed om mee te werken L4 profielen, maar als je wilt gebruiken HTTP-profielen dan raden we ten minste een aan t2.medium voorbeeld. Maar een t2.micro instantie is goed genoeg voor testdoeleinden.

3. Configure Instantiedetails. Selecteer hier de VPC waar de nieuwe ZEVENET-instanties worden uitgevoerd, in dit configuratievoorbeeld introduceren we de ZEVENET EC2-instanties in dezelfde VPC dan de echte webbackends-servers die al zijn geconfigureerd.

4. Voeg Storage. Standaard vereist ZEVENET EC2-instantie ten minste 12 Gb aan opslagruimte. Als u logboeken standaard wilt activeren, raden we aan deze grootte te vergroten tot ten minste 20 Gb. ZEVENET heeft geen toegang tot Disk nodig, alleen om logs op te slaan, dus de Volumetype voor algemene doeleinden is een goede keuze.

5. Tags toevoegen. Configureer hier desgewenst enkele beschrijvingstags.

6. Configure Beveiligingsgroep. ZEVENET gebruikt standaard de TCP-poort 444 voor HTTPS-web-GUI-beheer en de TCP-poort 22 in SSH voor opdrachtregelbeheer en clusterdoeleinden. Bovendien elk Virtuele poort gebruikt in de load balancer, moeten virtuele services worden opgenomen in uw beveiligingsgroep. We hebben een beveiligingsgroep geconfigureerd die als volgt wordt gebruikt voor die ZEVENET EC2-instanties in een minder beperkende modus:

TYPE = All traffic
Protocol = ALL 
Port Range = All
Source = 0.0.0.0/0
Description = Allow all from all to all

Deze beveiligingsgroep is gemaakt voor testdoeleinden, u kunt ervoor kiezen om alle poorten te blokkeren en alleen het gebruik voor load balancing en beheer toe te staan.

Zodra de configuratie-assistent terugkomt op de EC2-instantieslijst, wordt het nieuwe apparaat ingezet en wordt de initiëren staat wordt weergegeven. Configureer dan nu een beschrijvende naam in het veld Naam, in ons geval worden onze ingezette load balancers in EC2 genoemd ZLB1-prod en ZLB2-prod.

Het netwerk configureren voor de ZEVENET EC2-instanties

Zodra de virtuele ZEVENET-apparaten zijn geïmplementeerd en de Instantiestaten worden weergegeven Hardlopen modus kunnen we doorgaan met het configureren van het netwerk.

Klik met de rechtermuisknop op de ZLB1-prod apparaat en kies Netwerken> IP-adressen beheren, in de Beheer IP-adressen pop-upvenster indrukken Wijs een nieuw IP toe en druk op de knop Ja, updaten, zal het systeem een ​​nieuw IP toewijzen voor eth0 in dezelfde VPC. Onthoud dit nieuwe IP, in ons voorbeeld zal dit nieuwe IP zijn 172.31.26.47. Het systeem heeft een nieuw IP-adres toegewezen dat zal worden gebruikt voor load balancing-doeleinden in de toekomstige clusterdienst.

Ga naar sectie Elastische IP's en wijs aan elke ZEVENET-instantie een nieuwe toe Elastisch IP. Deze worden gebruikt voor managementdoeleinden, niet voor taakverdeling.

In hetzelfde Elastisch IP sectie, wijs een nieuw IP toe aan ZLB1-prod, maar kies in dit geval de Privé IP adres 172.31.26.47. Na deze configuratie ZLB1-prod zal toegankelijk zijn via het web en ssh met het IP 34.225.30.206, Maar ZLB2-prod is toegankelijk via dezelfde diensten met het IP 54.161.240.226 en Elastisch IP 54.144.190.17 toegewezen aan het IP 172.31.26.47.

ZEVENET EC2-instanties inschakelen met tijdelijke licenties

Zodra de Elastic IP's zijn geconfigureerd, zijn de virtuele Load Balancers als volgt toegankelijk:

ZLB1-prod is toegankelijk via https://34.225.30.206:444 gebruiker root en wachtwoord van de instantie-ID.
ZLB1-prod zal toegankelijk zijn via ssh in IP 34.225.30.226 met gebruikersadministratie en privécertificaatbestand, dit is geconfigureerd op EC2-implementatietijd.
ZLB2-prod is toegankelijk via https://54.161.240.226:444 gebruiker root en wachtwoord van de instantie-ID.
ZLB2-prod zal toegankelijk zijn via ssh in IP 54.161.240.226 met gebruikersadministratie en privécertificaatbestand, dit is geconfigureerd op EC2-implementatietijd.

Als u overweegt de hostnaam te wijzigen voordat u doorgaat, start dan het EC2-exemplaar opnieuw op om de wijzigingen toe te passen.

Zodra de toegang tot de web-GUI met succes is voltooid, ziet u twee belangrijke waarden, de hostnaam en de certificaatsleutel, beide informatie is uniek per Load Balancer en gerelateerd aan de activeringslicentie, gebruik deze informatie in de volgende URL zoals beschreven: https://www.zevenet.com/activate-enterprise-edition-cloud-evaluation/

Zodra het formulier is ingevuld, stuurt het systeem automatisch de licentie naar het aangegeven e-mailadres. Upload de ontvangen PEM-activeringslicentie via de web-GUI in elke load balancer, zodra dit is gebeurd, is de web-GUI ontgrendeld en zijn alle functies volledig ingeschakeld en operationeel.

Voer dezelfde activeringsprocedure uit in beide knooppunten ZLB1-prod en ZLB2-prod.

Het virtuele IP configureren voor load balancing

In het vorige punt hebben we al een extra IP toegewezen aan eth0 172.31.26.47 in de instantie ZLB1-pro, en dit IP is toegewezen aan één Elastic IP 54.144.190.17, nu is het in afwachting van deze configuratie in de ZBL1-pro load balancer.

Ga naar de ZLB1-pro load balancer via de webinterface met behulp van zijn Elastic IP https://34.225.30.206:444, als je eenmaal bent ingelogd ga dan naar het navigatiemenu Netwerk> Virtuele interfaces> Virtuele interface makenen voer de volgende configuratie uit:

Parent Interface = eth0 172.31.26.47

* Aangezien de EC2-instanties niets weten over Elastic IP's, moeten we hier het fysieke IP configureren van de EC2-instantie die is gekoppeld aan het openbare Elastic IP dat wordt gebruikt voor load balancing 54.144.190.17

Virtual Interface name = vip1
IP Address = 172.31.26.47

Media creëren knop om de configuratie toe te passen.

Nu een nieuw IP 172.31.26.47 met naam eth0: vip1 is geconfigureerd in de ZLB1-pro EC2 ZEVENET Load Balancer en kan vanuit elke EC2-instantie in deze VPC worden gepingd.

De ZEVENET-clusterservice configureren in Amazon Web Services

ZEVENET Load Balancer-cluster werkt in stateful actief-passief modus betekent dit dat de clusterbronnen zijn geconfigureerd in beide knooppunten, maar alleen beschikbaar zijn in de ACTIEF knooppunt. Wanneer een dergelijk knooppunt faalt en deze rol wordt gestart in het andere lid, moeten de clusterbronnen opnieuw worden gebruikt. Aangezien de virtuele IP's ook clusterbronnen zijn, moet Amazon Web Service op de een of andere manier worden aangekondigd dat de virtuele IP is geconfigureerd voor load balancing 172.31.26.47 werkt nu via ZLB2-prod.

Hiervoor gebruikt de ZEVENET Cluster-service de AWS-client die moet worden geconfigureerd met machtigingen in de EC2-module voor het beheer van interfaces, dus voordat we de ZEVENET Cluster-service starten, moeten we deze voorbereiden. Dus laten we een configureren AWS-SLEUTEL in uw account met machtigingen om IP's in EC2 te beheren voor gebruik in de AWS-opdrachtregelinterface.

Ga naar de Amazon-console https://console.aws.amazon.com/iam/ en kies vervolgens in het navigatiemenu Gebruiker. Klik op de knop Gebruiker toevoegen.

Configure a descriptive User name = aws-for-zlb

In Selecteer toegangstype AWS kiezen Programmatische toegang en druk op de knop Volgende: Machtigingen. Nu in de Stel machtigingen in sectie indrukken Groep maken en vul dan in het nieuwe venster het veld in Groepsnaam met een beschrijvende naam, bijvoorbeeld AmazonEC2, en tot slot in het veld Filterbeleid zoek en selecteer het genoemde beleid AmazonEC2Volledige toegang die machtigingen geeft om de toegewezen IP's tussen onder andere EC2-instanties te wijzigen.

indrukken Volgende: tags en Volgende: Review. Druk tenslotte in Gebruiker maken, het laatste venster toont u de Toegangssleutel-ID en Geheime toegangssleutel voor deze gebruiker, bewaar ze voor toekomstig gebruik.

Nu zijn we klaar om de ZEVENET Cluster-service te configureren, dus ga naar het webpaneel in ZLB1-pro via het toegewezen openbare IP-adres https://34.225.30.206:444, sectie Systeem> Cluster en vul het formulier in volgens het voorbeeld:

AWS-referenties: Toegangssleutel en geheime sleutel zijn de reeds gegenereerde waarden in voorgaande regels. De regio, selecteer hier de regio waar uw ZEVENET Application Delivery-controller wordt ingezet.

Configureer cluster:

Lokaal IP: selecteer de IP en NIC van eth0.
Remote IP: voer hier het IP van eth0 in knooppunt ZLB2-pro in.
Extern knooppuntwachtwoord en Bevestig wachtwoord: voer hier het root-wachtwoord in voor ssh in het andere knooppunt, standaard de instantie-ID van ZLB2-pro.

Klik op Genereer knop en wacht een paar seconden terwijl het knooppunt waar u de configuratie uitvoert de ACTIEF rol (ZLB1-pro) en de andere (ZLB2-pro) gaat de PASSIEF rol.

Op dit punt is ZEVENET Cluster geconfigureerd in AWS en is het klaar om te werken, laten we onze eerste geclusterde load-balanced service configureren.

Configureren van een eenvoudige L4 Load balancing voor webservices

Ga naar LSLB> Boerderijen> Boerderij maken met de volgende parameters.

Houd er rekening mee dat het gebruikte virtuele IP-adres 172.31.26.47 is het virtuele IP-adres dat eerder is geconfigureerd en een bron van het cluster die altijd bereikbaar is vanaf de ACTIEF knooppunt. druk op creëren en doorgaan.

Configureer nu in het nieuwe venster de Globaal gedeelte zoals hieronder aangegeven:

Configureer ten slotte de sectie Diensten zoals beschreven:

Te gebruiken IP-persistentie met een time-out van 60 seconden voor het geval u moet garanderen dat dezelfde client-IP gedurende een bepaalde periode met dezelfde backend wordt verbonden. Configureer de geavanceerde health checks met FarmGuardian. Gebruiken check_tcp als een eenvoudige statuscheck om te controleren of de TCP-backend-poort 80 in elke backend is geopend. En voeg vervolgens de interne IP's en poort van de backend-servers toe waar de echte webservices worden uitgevoerd.

Test nu de verbinding met de Elastisch IP http://54.144.190.17/ assigned to the internal IP 172.31.26.47, the connection will pass through the load balancer using the eth0: vip1 en doorgestuurd naar een van de beschikbare backends.

Nu een kracht om de ACTIEF rol in het cluster, herstart bijvoorbeeld het knooppunt met deze rol en na een paar seconden neemt de ander de virtuele service en maakt opnieuw verbinding met het openbare IP-adres. De huidige en nieuwe clientverbindingen worden tot stand gebracht tegen dezelfde backend, maar deze keer via de nieuwe ACTIEF knooppunt zonder enige clientverstoringen.

Nieuwe interfaces toevoegen aan de Load Balancer

Voor balanceringsdoeleinden of voor wat je ook nodig hebt, is het mogelijk om meer interfaces naar de load balancer te configureren. Om dit te doen, is het zo eenvoudig als het volgen van de stappen die door AWS zijn beschreven om nieuwe interfaces toe te voegen aan een EC2-instantie. Bekijk het artikel dat AWS biedt om de best practices hiervoor beter te begrijpen. https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/best-practices-for-configuring-network-interfaces.html. Bij het toevoegen van nieuwe interfaces aan de EC2-instantie, zal ZEVENET deze nieuwe interfaces automatisch detecteren, dus je kunt het nu gebruiken om het naar wens te configureren.

 

Geniet van geavanceerde load balancing en clustering in AWS met ZEVENET!

Delen op:

Documentatie onder de voorwaarden van de GNU-licentie voor vrije documentatie.

Was dit artikel behulpzaam?

Gerelateerde artikelen