Loadbalancer In Web-basierten Anwendungen

Transcription

Loadbalancer in Web-basierten AnwendungenMichael HopfDresden, 18.5.2017München/HQBambergBerlinĐà ragWashingtonZug

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.20172

Michael HopfFrankfurt M.HannoverErfurtFrankfurt 9.05.20173

MGM Softwarelösungshaus 500 Mitarbeiter 13 Standorte Hochskalierbare, integrierbare und sichere Online-AnwendungenMünchenBambergBerlinĐà ragWashington19.05.2017Zug4

MGM19.05.20175

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.20176

Motivation, ZieleLB 1-2 gbarkeitSicherheit(SSL, TLS, Response Header, )LB 1-1Host1NVM1N3Host12 AppserverHost11VM1N3VM1N2 ppserverwebapp1webapp1Appserverwebapp2VM1N2VM1N1 pp2webapp3VM1N1 webapp3webapp2webapp3ConfigserverDB (Master)DB(Slave)webapp3sample.deExtIP1LB 2-1Brandabschnitt2LB 2-2Host1NVM1N3Host12 AppserverHost11VM1N3VM1N2 ppserverwebapp1webapp1Appserverwebapp2VM112VM1N1 pp2webapp3VM111 B(Slave)19.05.20177

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.20178

Loadbalancer Konzepte – Real Server (IP Ports Protocols)VM111LB 1-2LB 1-1AppserverIP:10.1.16.111 erIP:10.1.16.112 erIP:10.1.16.113 webapp1Port:8080webapp2Prot:tcpwebapp319.05.20179

Loadbalancer Konzepte – Real Server (IP Ports Protocols)vThunder(config)# slb server rs111 10.1.16.111vThunder(config-real server)# port 8080 tcp19.05.201710

Loadbalancer Konzepte – Virtual Server (VIP Ports)VIP: 192.168.4.4Port: 443Port: 80VM111LB 1-2sample.deLB 1-1AppserverIP:10.1.16.111 webapp3VM113AppserverIP:10.1.16.113 1

Loadbalancer Konzepte – Virtual Server (VIP Ports)vThunder(config)# slb virtual-server vs1 192.168.4.4vThunder(config-real vserver)# port 443 httpsvThunder(config-real vserver-port)#19.05.201712

Loadbalancer Konzepte – Service Groups (Pools)VIP: 192.168.4.4Port: 443Port: 80LB 1-2sample.deLB pp2webapp1IP:10.1.16.111Port:8080Prot:http :httpwebapp3SG (RealServer Port) SG:(RealServer Port) .16.113AppserverIP:10.1.16.112Port:8080 ttp webapp2webapp3Port:8080Prot:http sds 1Port:8080Prot:http :httpwebapp319.05.201713

Loadbalancer Konzepte – Service Groups (Pools)vThunder(config)# slb service-group SG1vThunder(config-real svc group)# methodvThunder(config-real svc group)# membervThunder(config-real svc group)# membertcpround robinrs111 8080rs112 808019.05.201714

Loadbalancer Konzepte – Health Monitors Überwachung der Verfügbarkeit von Real ServernPing, Http, FTP, Pop, Zuordnung zu Real Servern (viele Real Server, viel Konfigurationsarbeit)Zuordnung Service Groups Health Monitor gilt für alle Real Server der Service Group (spart Konfigurationsarbeit) Bestimmt, ob Real Server in der Service Group verfügbar ist19.05.201715

Loadbalancer Konzepte – Health MonitorsSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB v webapp2IP:10.1.16.111Port:8080Prot:http pp3Prot:httpwebapp3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: bapp3Health Motiorhttp test19.05.201716

Loadbalancer Konzepte – Health Monitors19.05.201717

Loadbalancer Konzepte – Health Monitors Webapps stellen Health Page bereit Mögliche Status: active, maintenance, inactive, testlbstatus active19.05.201718

Loadbalancer Konzepte – Regel (aFlex)SG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB v webapp2IP:10.1.16.111Port:8080Prot:http pp3Prot:httpwebapp3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201719

Loadbalancer Konzepte – aFlexRegeln zur Request Verarbeitungwhen HTTP REQUEST {if { [HTTP::uri] contains „lbstatus.jsp“ } {HTTP::respond 403event HTTP REQUEST disable}}19.05.201720

Loadbalancer Konzepte – aFlexRegeln zur Response Verarbeitungwhen HTTP RESPONSE {if { [HTTP::cookie exists JSESSIONID] } {if { ([HTTP::cookie exists "AddHttpOnly"]) } {HTTP::cookie value JSESSIONID "[HTTP::cookie value JSESSIONID];HttpOnly"}HTTP::cookie secure JSESSIONID enable}HTTP::cookie remove "AddHttpOnly"HTTP::header remove "Server"HTTP::header remove "Content-Location"}19.05.201721

Loadbalancer Konzepte – aFlexClient Attribute abfragen, z.B. IPif { [CLASS::match [IP::client addr] testerips ip] } {# Aufruf kommt von der IP eines Testers# Prüfen, ob der Test-Pool verfügbar ist, dann selektierenif { [active members testpool] 0 } {pool testpool}}19.05.201722

Session Persistence Problem: Ein Nutzer hat eine Session auf einem Real Server. Wie kannsichergestellt werden, dass er seine Session nicht verliert, wenn der nächsteRequest auf einem anderen Real Server landet ? Lösung1: Sticky Session IP basiert Cookie basiertVM111 Cookie vom Real Server (Probleme mit A10) Cookie vom LoadbalancerLB 1-2 Lösung2: Session Replication (zwischen den Appservern)AppserverIP:10.1.16.111 webapp1Port:8080webapp2Prot:tcpwebapp3VM112LB 1-1AppserverIP:10.1.16.112 erIP:10.1.16.113 webapp1Port:8080webapp2Prot:tcpwebapp319.05.201723

Loadbalancer Konzepte - ZusammenfassungService GroupVirtual Server-IP-Port-ProtocolTemplatesaFlex Scipts (Rules)SNatReal Server- IP- Port- ProtocolHA/VRRPHealth MonitorPersistenceClient SSLServer SSLCaching19.05.201724

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.201725

5. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ? A0 HTTPS, SSL, TLS, CIPHER Suites A1 Response Location Header von HTTP auf HTTPS umschreiben (Redirects) A2 Client-IP-Adresse an den Servlet-Container weiterleiten A3 Sticky Sessions basierend auf JSessionId Cookie A4 Sonderbehandlungen für Login mit mobilen Endgeräten A5 Secure- und HttpOnly-Cookie A7 Redirect bei unbekanntem Context (https://www.sample.de/gibtsjagarnicht/. A8 Schutz von bestimmten URLs (403) A9 Testzugang A10 Wartungsseite A11 Weiterleitung von Requests an bestimmte webapps an eigene ServiceGroups A12 Unterstützung der Deployment Prozesse (Maintenance Mode) 19.05.201726

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.201727

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB v webapp2IP:10.1.16.111Port:8080Prot:http pp3Prot:httpwebapp3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201728

Deployment Szenarien – Einen Real Server aktualisierenlbstatus activelbstatus maintenance19.05.201729

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB 1-2VM113AppserverVM112AppserverIP:10.1.16.113 ot:httpwebapp3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201730

Deployment Szenarien – Einen Real Server aktualisierenhttps://sample.de/form3.jspAchtung, auf diesem Server werden um 15:00 Wartungsarbeiten durchgeführt.Um auf einem anderen Server weiterarbeiten zu können, speichern Sie bitte Ihr Formular, loggen sich aus und schließen alle offenenBrowser-Fenster. Starten Sie danach den Browser neu und melden Sie sich wieder an.Real Server IDGut zu haben!VM11119.05.201731

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB 1-2VM113AppserverVM112AppserverIP:10.1.16.113 ot:httpwebapp3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201732

Deployment Szenarien – Einen Real Server aktualisierenlbstatus maintenancelbstatus inaktiv19.05.201733

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB 1-2VM113AppserverVM112AppserverIP:10.1.16.113 ot:httpwebapp3Health Motiorhttp activeSG: .1.16.111Port:8080IP:10.1.16.111sds 3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201734

Deployment Szenarien – Einen Real Server aktualisierenlbstatus inaktivlbstatus test19.05.201735

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB 1-2VM113AppserverVM112AppserverIP:10.1.16.113 ot:httpwebapp3Health Motiorhttp activeSG: bapp1IP:10.1.16.111VM111webapp1Port:8080 s 080webapp2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln webapp2Prot:httpPort:8080 080webapp3webapp2Prot:httpwebapp3Health Motiorhttp test19.05.201736

Deployment Szenarien – Einen Real Server aktualisierenlbstatus testlbstatus aktiv19.05.201737

Deployment Szenarien – Einen Real Server aktualisierenSG: ActiveVIP: 192.168.4.4Port: 443Port: 80LB :8080Aktiv 0Prot:http 3Health Motiorhttp activeSG: 2webapp3Prot:httpwebapp3LB 1-1Health Motiorhttp maintenanceSG: TestRegeln pwebapp3Health Motiorhttp test19.05.201738

Übersicht1. Michael Hopf, MGM2. Loadbalancer, Motivation, Ziele3. Loadbalancer Konzepte4. Welche Anforderungen lassen sich mit Loadbalancermitteln erfüllen ?5. Deployment Szenarien6. Erfolgsfaktoren19.05.201739

Erfolgsfaktor - Zusammenarbeit mit dem Betrieb Es geht nur gemeinsam! Bewährt hat sich beim Thema Loadbalancer folgendeAufgabenteilung. Betrieb ist verantwortlich für die Grundkonfiguration (Verkabelung, Ips, SNat,SSL Einrichtung und Zertifikatsverwaltung, Real Server, ) Anwendungsentwicklung steuert VMs, Pools, Regelwerk (aFlex), bei Installationsanleitungen: Skripte sind kompakter als Anweisung für Bedienungder Loadbalancer Admin Gui Änderungen am Loadbalancer können gravierende Auswirkungen auf dieVerfügbarkeit der Anwendung haben. Deshalb sollten einmal eingerichteteLoadbalancer bei regulären Deployments der Anwedungen nicht angefasstwerden! Das Maintenance Mode Feature ermöglicht das.19.05.201740

Erfolgsfaktor - Entwicklungs- und Staging Umgebungen Die Entwicklung verfügt über Loadbalancer (VMs) in mindestens einemEntwicklungssystem. Im Integrationssystem (des Kunden) sind idealerweise dieselben Loadbalancer imEinsatz, wie im Produktivsystem. Aktualisierungen immer erst in Entwicklungs- und Staging-System testen, danachin Produktion bringen19.05.201741

Erfolgsfaktor - Virtualisierung Komplette VMs als Liefergegenstand der Anwendungsentwicklung VMs (darauf installierte Anwendungen) sind frei von umgebungsspezifischer Konfiguration(Hostnamen, Ports, Nutzer, Passworte, Leistungsparameter, ) Konfiguration wird erst bei Einspielung der VM in einer konkreten Zielumgebung zugesteuert Verteilung der Konfiguration über einen sog. Konfigurationsserver, VMs ziehen sich dieKonfiguration vom Konfigurationsserver Konfiguration ist neu ladbar (ohne Neustart) Log- und Datenpartitionen auf separaten VM Images, die einen VM Tausch überdauern Einheitliche DNS Namen (mail, dbserver, logserver, configserver, ) vereinfachen dieKonfiguration Subdomains zur Unterscheidung der Umgebungen (dbserver.dev.sample.de,dbserver.test.sample.de, dbserver.production.sample.de, ) Portschemata verwenden, um Trennung der Umgebungen sicherzustellen (20xyz-dev, 30xyztest, 40xyz-integration, 50xyz-production) 19.05.201742

Erfolgsfaktor – schnelle, automatisierte Builds und Deployments Zeit für das Bauen einer Auslieferung und Deployment optimieren automatisierte Deployments19.05.201743

Erfolgsfaktor – Trainings und Support Trainings der Loadbalancer Hersteller (oder Ihrer Partner) zu besuchen ist teuer,aber dennoch gut investiertes Geld Supportverträge19.05.201744

Vielen Dank!19.05.201745

Innovation Implemented.MünchenBambergBerlinĐà ragWashingtonZugmgm technology partners GmbHFrankfurter Ring 105a80807 MünchenTel.: 49 (89) 35 86 80-0Fax: 49 (89) 35 86 80-288http://www.mgm-tp.com19.05.201746

Cookie vom Real Server (Probleme mit A10) Cookie vom Loadbalancer Lösung2: Session Replication (zwischen den Appservern) LB 1-2 LB 1-1 VM111 Appserver webapp3 webapp2 IP:10.1.16.111 webapp1 Port:8080 Prot:tcp VM112 Appserver webapp3 webapp2 IP:10.1.16.112 webapp1 Port:8080 Prot:tcp VM113 Appserver webapp3 webapp2