Wie richten Sie eine Umgebung ein, die die kontinuierliche Bereitstellung von Java-Unternehmensanwendungen unterstützt? Wie verwalten Sie die große Anzahl von Rechnern, die daran beteiligt sind? Wie ermöglichen Sie die kontinuierliche Bereitstellung von Anwendungen auf der Plattform per Selbstbedienung? In diesem Blog-Beitrag beschreiben wir eine Open Source Java Application Platform as a Service, die wir für unseren Kunden mit VMware, Redhat Enterprise Linux, Apache WebServer, JBoss Enterprise Application Platform, JBoss Operations Network, Puppet, Deployit, F5 Load Balancer und einem Layer7 SecureSpan-Gateway erstellt haben.
Plattform für Rechenzentrumsqualität
Der Kunde wollte eine Java-Anwendungsplattform in Rechenzentrumsqualität mit den folgenden Funktionen:
- Standard-Konfiguration
- Standardisierte Provisionierung
- Standardisierter Einsatz
- Zentralisierte Überwachung
- Zentralisierte Zugangskontrolle
- Virtuelle Umgebung
- Erprobte Technologie
Aktuelle Situation
Da die derzeitige Java-Anwendungsplattform auf HP-UX auf Itanium basierte, hatte der Kunde mit hohen Kosten für Hardware, Softwarelizenzen und schwindendem Support von Softwareanbietern zu kämpfen. Da alle Anwendungen auf einem HP Superdome liefen, war es sehr schwierig, Ressourcen für einzelne Anwendungen hinzuzufügen. Außerdem verbrachten die Entwicklungsteams zu viel Zeit damit, ihre Software durch die Entwicklungs-, Test- und Abnahmeumgebungen zu bringen, was zu einer langsamen Bereitstellung der Software in der Produktion führte. Schließlich war es schwierig, eine 24x7-Verfügbarkeit zu gewährleisten, da alle Anwendungen auf einem einzigen Rechner laufen.
Java Anwendungsplattform
Die folgende Abbildung veranschaulicht die Lösungsarchitektur der Java-Anwendungsplattform.
In den folgenden Abschnitten werden wir den Zweck der wichtigsten Komponenten beschreiben.
Duales Rechenzentrum - HP
In der Abbildung nicht dargestellt ist die Hardware-Einrichtung der Plattform. Sie besteht aus
VMware ESX
VMware ESX wird auf der Hardware im dualen Rechenzentrum eingesetzt. Dadurch können wir virtuelle Maschinen erstellen und eine hohe Verfügbarkeit bei Ausfällen eines einzelnen Servers oder eines einzelnen Standorts gewährleisten. Außerdem können wir so virtuelle Maschinen schnell skalieren und die den einzelnen virtuellen Maschinen zugewiesenen Ressourcen erhöhen.
Marionette
Puppet automatisiert die Systemverwaltung vollständig. Es wird für die Installation von Softwarepaketen, Konformitätstests und alltägliche Aufgaben der Systemverwaltung verwendet. Für jede Art von Knoten haben wir einen Puppet-Plan. Wenn die Rechner hochgefahren werden, stattet der Puppet-Agent den Rechner mit der gesamten erforderlichen Software und Konfiguration gemäß dem Plan für diesen Rechner aus. Die Verwendung von Puppet automatisiert und standardisiert die Konfiguration vollständig, gewährleistet eine 100%ige Reproduzierbarkeit der Konfiguration und ist schnell. Die Bereitstellung eines neuen Rechners von der Vorlage bis zum voll funktionsfähigen Modus erfolgt in wenigen Minuten.
JBoss EAP
JBoss Enterprise Application Platform ist der Enterprise Java Application Server für alle Java-Anwendungen. Die Installation und Konfiguration wird von Puppet durchgeführt und verwendet die offiziellen RedHat RPMs. Puppet konfiguriert JBoss, um sicherzustellen, dass :
- JBoss Verwaltungsanwendungen authentifizieren Benutzer anhand von Active Directory und bieten so eine zentrale Autorisierungsstelle für Operationen.
- Ein JBoss Oracle-Datenbankschema wird automatisch für diese spezielle Instanz von JBoss bereitgestellt und sorgt für die Persistenz des JBoss Server-Systemstatus.
- Alle Geschäftsanwendungen können Benutzer mit SAML gegenüber dem Layer7 Identity Provider authentifizieren und so einen zentralen Punkt für die Authentifizierung und Autorisierung ihrer Kunden schaffen.
- Die JBoss-Instanz wird dem Pool im F5 Load Balancer hinzugefügt
- Der Anwendungsserver wird dem Deployit-Infrastrukturinventar hinzugefügt und bietet den Mietern der Plattform die Möglichkeit, Anwendungen auf dem Server bereitzustellen.
JBoss-Anwendungsserver werden immer in Zweiergruppen bereitgestellt, wobei jeder Server eines Paares von VMware einem physisch unterschiedlichen Rechenzentrumsstandort zugewiesen wird. Die Verwendung von Puppet bietet uns eine schnelle und reproduzierbare Möglichkeit zur Bereitstellung von JBoss-Anwendungsservern und ermöglicht einen schnellen und zuverlässigen Scale-Out-Mechanismus für die Anwendungen.
JBoss Operations Netzwerk
JBoss Operations Network (JON) wird für die Überwachung aller Ressourcen der Plattform verwendet. Puppet installiert standardmäßig einen JON-Agenten auf jedem Rechner. Dieser Agent scannt das Inventar des Rechners und meldet es an den JON-Server.
JON bietet eine sehr gute Unterstützung für Hochverfügbarkeit und Failover. Durch einfaches Hinzufügen eines JON-Server-Rechners verteilen sich die Agenten automatisch auf die Server und übernehmen bei Bedarf die Ausfallsicherung. Auf jedem JON-Server läuft auch ein JON-Agent, so dass auch die Nichtverfügbarkeit eines JON-Servers abgedeckt ist.
Deployit
Deployit wird für die automatische Bereitstellung von Anwendungen auf der Plattform verwendet. Es verteilt alle Anwendungskomponenten eines Stapels automatisch auf die entsprechenden Container. Deployit :
- stellt statische Inhalte und die Proxy-Konfiguration auf den Apache-Webservern bereit,
- installiert Komponenten von Unternehmens-Java-Anwendungen auf allen einzelnen JBoss-Servern in der Farm,
- führt SQL-Skripte für die Datenbank aus,
- konfiguriert die F5 Loadbalancer, um dem Pool Server oder Anwendungen hinzuzufügen oder zu entfernen,
- wendet umgebungsspezifische Änderungen an der Anwendungskonfiguration an.
Der Bereitstellungsplan für eine bestimmte Anwendung wird in enger Zusammenarbeit zwischen dem Anwendungsentwickler und den Mitarbeitern des Plattformmanagements erstellt. Wenn der Bereitstellungsplan fertig ist, können die Entwickler neue Versionen der Anwendung selbst bereitstellen, und zwar direkt aus einem Build-Tool oder manuell. Dadurch wird sichergestellt, dass die Lösung von Installations- oder Konfigurationsproblemen nicht aufgeschoben wird, bis die Anwendung für die Produktion installiert ist, sondern bereits in einem frühen Stadium der Entwicklung gelöst wird. Für alle Umgebungen wird derselbe Bereitstellungsplan verwendet. Die Autorisierung kann pro Umgebung und pro Anwendung konfiguriert werden. LDAP wird verwendet, um Softwareentwicklern die Berechtigung zu erteilen, eine Anwendung für Entwicklungs- und Testzwecke bereitzustellen und zu konfigurieren, während Integrationsspezialisten die Anwendung in der Produktion bereitstellen können. Durch den Einsatz von Deployit verfügt die Plattform über einen vollständig automatisierten und standardisierten Bereitstellungsmechanismus, der die Geschwindigkeit der Bereitstellung von Anwendungen in den Entwicklungs-, Test- und Abnahmeumgebungen erhöht und gleichzeitig die Zahl der beteiligten Mitarbeiter und die Zahl der Konfigurationsfehler verringert.
F5 Lastausgleicher
Der F5 Load Balancer wird verwendet, um die Skalierbarkeit und Ausfallsicherheit der JBoss Application Server-Farm zu unterstützen. Die Pools sind so konfiguriert, dass sie ein sticky session protocol verwenden, das auf dem JSESSIONID session cookie basiert. Wenn das Cookie nicht vorhanden ist, wird ein Round-Robin-Lastausgleich der HTTP-Anfragen durchgeführt. Puppet fügt die JBoss-Server dem Pool im F5 Load Balancer hinzu. Wenn ein Server für einen Neustart vorgesehen ist, wird der Server aus dem Pool genommen. Dadurch wird sichergestellt, dass dieser Server keine neuen Anfragen erhält, aber immer noch die bestehenden Sitzungen bedient. Wenn die Anzahl der Sitzungen in JBoss auf Null sinkt, wird der Server neu gestartet und wieder in den Pool aufgenommen. Der Einsatz des F5 Load Balancer bietet uns die Möglichkeit, die Anzahl der Server in der Farm zu erhöhen und zu verringern, Lastausgleich, Failover und die ordnungsgemäße Außerbetriebnahme von Servern in der Farm zu gewährleisten.
Layer7 XML-Gateway / Identitätsanbieter
Das Layer7 SecureSpan Gateway wird als zentraler Punkt zur Durchsetzung von Sicherheitsrichtlinien und als SAML-Identitätsanbieter verwendet. Layer7 unterstützt mehrere Authentifizierungsmethoden, Kerberos, digitale Zertifikate, Benutzername+Passwort und kann mehrere Identitätsspeicher verwenden. Puppet konfiguriert alle JBoss Anwendungsserver mit SAML-Unterstützung und konfiguriert Layer7 als Identitätsanbieter: JBoss empfängt Authentifizierungs- (Identität) und Autorisierungsinformationen (Rollen) als SAML-Token. Die im Token enthaltenen Informationen werden in einen standardmäßigen JEE-Principal-Benutzer übersetzt (unter Verwendung einer winzigen Schicht von benutzerdefiniertem Code), so dass alle JEE-Anwendungen auf die Authentifizierungs- und Autorisierungsinformationen auf standardmäßige Weise zugreifen können. Unabhängig davon, ob es sich bei der JEE-Anwendung um eine Webanwendung handelt oder ob sie Webservices bereitstellt, gibt es aus Sicht der Sicherheit keinen Unterschied. Die Anwendungsentwickler müssen lediglich die Sicherheitsrollen der Anwendung gemäß dem JEE-Standard deklarieren. Die Verwendung von Layer7 standardisiert die Authentifizierung und Autorisierung für alle Geschäftsanwendungen und zentralisiert die Zugriffskontrolle.
Fazit
Der Kunde wollte eine moderne Java-Anwendungsplattform in Rechenzentrumsqualität, um sicherzustellen, dass Java-Anwendungen zu geringeren Kosten, mit hoher Verfügbarkeit und einfacher Skalierbarkeit bereitgestellt werden können. VMware, das duale Rechenzentrum, Layer7, der F5 Load Balancer und JBoss bieten die Infrastruktur für eine hohe Verfügbarkeit und Skalierbarkeit für jede Java-Anwendung. Die Kombination von VMware, Puppet und Deployit bildet die Grundlage für die kontinuierliche Bereitstellung von Java-Anwendungen für Unternehmen. Durch Virtualisierung und automatisierte Bereitstellung ist es möglich geworden, einem Cluster innerhalb weniger Minuten eine völlig neue, korrekt konfigurierte Maschine hinzuzufügen, und zwar völlig sicher und unter vollständiger Überwachung.
Verfasst von

Mark van Holsteijn
Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.
Unsere Ideen
Weitere Blogs
Contact



