Verwenden Sie Open-Source-Middleware: Middleware in Cloud-Computing-Umgebungen übernimmt Open-Source-Frameworks, die die Entwicklungs- und Bereitstellungszeit verkürzen und die Entwicklungseffizienz und -zuverlässigkeit verbessern können.

Autor: Zen und die Kunst der Computerprogrammierung

1. Einleitung

Cloud Computing ist ein neues verteiltes Computermodell mit einzigartigen Eigenschaften. Es integriert Ressourcenvirtualisierung, elastische Skalierung und Pay-as-you-go-Funktionen. Dieses neue verteilte Rechenmodell ermöglicht es Softwareentwicklern, sich beim Schreiben von Anwendungen keine Gedanken über die Serverleistung zu machen, sondern müssen sich nur auf die Anwendung selbst konzentrieren. Gleichzeitig können die von der Cloud-Plattform bereitgestellten Rechenressourcen bei Bedarf abgerechnet werden, sodass Nutzer keine teure Hardware-Ausrüstung anschaffen müssen.

Middleware in Cloud-Computing-Umgebungen verwendet normalerweise Open-Source-Frameworks wie Apache Hadoop, Spark, Storm usw. Diese Frameworks können die Entwicklungs- und Bereitstellungszeit für Softwareentwickler und Systemadministratoren verkürzen und schwierige Probleme in bestehenden Softwarearchitekturen effektiv lösen. Durch die Verwendung von Hadoop als Computer-Engine des Clusters können beispielsweise problemlos Datenverarbeitung, Datenanalyse, maschinelles Lernen und Berechnungen der Graphentheorie durchgeführt werden. Spark bietet ein verteiltes Computer-Framework, das dabei helfen kann, das Problem der Parallelverarbeitung großer Datenmengen zu lösen. Storm ist darauf spezialisiert Wird für die Echtzeit-Stream-Verarbeitung verwendet und eignet sich für die Verarbeitung von Datenströmen im Internetmaßstab.

Um die Eigenschaften von Cloud-Computing-Plattformen besser zu nutzen, bringen Cloud-Dienstleister oft ihre eigene Open-Source-Software auf den Markt. Beispielsweise verfügt Amazon AWS über die Open-Source-Software Amazon EMR (Elastic MapReduce) zur Verwaltung von Hadoop-Clustern in der Amazon Elastic Compute Cloud (EC2); Microsoft Azure hat außerdem Azure HDInsight gestartet, um Frameworks wie Apache Spark, Storm und HBase zu unterstützen.

Bei einigen Cloud-Computing-Plattformen auf Unternehmensebene wie GCE von Google oder Azure von Microsoft ist die Open-Source-Software jedoch hauptsächlich für die Öffentlichkeit bestimmt. Daher kann die vollständige Nutzung von Open-Source-Software auf diesen Plattformen enorme Vorteile bringen. In diesem Artikel werden die Vorteile von Open-Source-Middleware in Cloud-Computing-Umgebungen und die Verwendung dieser Tools auf Cloud-Plattformen auf Unternehmensebene erläutert.

2. Vorteile von Open-Source-Middleware in Cloud-Computing-Umgebungen Erstens kann Open-Source-Middleware in Cloud-Computing-Umgebungen die Kosten senken und den Entwicklungszyklus verkürzen. An diesem Punkt können Open-Source-Tools Zeit und Geld sparen, da sie den Kauf und die Installation eines Servers überflüssig machen. Darüber hinaus stellen Cloud-Dienstanbieter im Allgemeinen kommerzielle Lizenzen für Cloud-Plattformdienste bereit, sodass Unternehmen die Software-as-a-Service- oder Software-as-a-Service-Pakete des Cloud-Dienstanbieters nutzen und so Zeit und Energie bei der Bereitstellung und dem Betrieb sparen können Wartung.

Zweitens wurde Open-Source-Software jahrelang kontinuierlich iterativ optimiert und weist eine gute Stabilität und Sicherheit auf. Mit Tools, die auf Open-Source-Software basieren, lassen sich schnellere Iterationsaktualisierungen einfacher implementieren als mit kommerzieller Software, und sie können den wachsenden Geschäftsanforderungen des Unternehmens gerecht werden.

Drittens kann Open-Source-Middleware in einer Cloud-Computing-Umgebung Cluster automatisch bereitstellen, verwalten und überwachen, was komplexe Betriebs- und Wartungsarbeiten erheblich vereinfachen kann. Da Cloud-Dienstanbieter automatisierte Bereitstellungsskripte oder APIs bereitstellen, können Benutzer die erforderlichen Komponenten mit einfacher Konfiguration automatisch bereitstellen, ohne dass Server manuell installiert oder konfiguriert werden müssen. Darüber hinaus stellen Cloud-Dienstanbieter verschiedene Tools zur Überwachung von Clustern bereit, z. B. Protokollerfassung, Indikatorüberwachung, Fehlerdiagnose usw., sodass Clusterprobleme rechtzeitig erkannt und gelöst werden können.

Viertens ist Open-Source-Middleware in Cloud-Computing-Umgebungen äußerst flexibel. Bei Open-Source-Software können Anwender frei wählen, welche Komponentenversionen, Funktionseinstellungen und Betriebsumgebung sie verwenden. Benutzer können beispielsweise das Speichersystem des Spark-Clusters über Open-Source-Software auswählen und das am besten kompatible HDFS- oder S3-System auswählen. Darüber hinaus kann Open-Source-Software auch an unterschiedliche Geschäftsszenarien angepasst und entwickelt werden. Beispielsweise kann das für Werbeklick-Vorhersageaufgaben geeignete Spark MLlib-Modul das statistische Analysemodul kommerzieller Software ersetzen.

3. Bereitstellung von Open-Source-Middleware in einer Cloud-Computing-Umgebung In diesem Kapitel wird der Bereitstellungsprozess von Open-Source-Middleware in einer Cloud-Computing-Umgebung ausführlich beschrieben. In diesem Artikel werden zunächst die grundlegenden Konzepte und die Architektur von Open-Source-Middleware erläutert. Anschließend werden die Bereitstellungsmethoden häufig verwendeter Open-Source-Software Apache Hadoop, Apache Storm und Apache Spark vorgestellt. Abschließend wird die grundlegende Verwendung von Ansible, dem automatisierten Bereitstellungstool für Open-Source-Software, vorgestellt.

3.1 Übersicht über Open-Source-Middleware

In Cloud-Computing-Umgebungen ist Open-Source-Middleware ein weit verbreitetes Technologiefeld. In diesem Abschnitt werden die zugehörigen Konzepte und Architekturen der Open-Source-Middleware kurz vorgestellt.

3.1.1 Middleware-Konzept

Middleware ist eine Softwaresystemkomponente, die sich zwischen dem Client und dem Server befindet und für die vollständige Kommunikation, Koordination und Integration zwischen beiden verantwortlich ist. Es besteht normalerweise aus einem oder mehreren Softwaremodulen, einschließlich Netzwerkschnittstellenschicht, Messaging-Schicht, Transaktionsmanager, Geschäftsregel-Engine usw. Middleware umfasst auch Funktionen in verschiedenen Aspekten wie Datenbankverbindungspool, Cache-System, Konfigurationsverwaltung, Sicherheitsverwaltung, Ressourcenzuweisung, Bereitstellungsverwaltung usw.

In einer Cloud-Computing-Umgebung besteht Middleware normalerweise aus drei Teilen: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) und Software as a Service (SaaS). Die folgende Abbildung zeigt die Architektur dieser drei Dienste.

Die IaaS-Schicht ist für die Bereitstellung von Infrastrukturdiensten wie Computerressourcen, Netzwerken und Speicher verantwortlich. Benutzer können Server selbst konfigurieren und verwalten, einschließlich Bereitstellung, Verwaltung von Betriebssystemen, Konfiguration von Hardware und Wartung von Software, Hardware, Netzwerken usw.

Die PaaS-Schicht stellt eine Softwareentwicklungsumgebung, eine Middleware-Betriebsumgebung, Datenbanken und andere Betriebsplattformdienste bereit. Benutzer können das von der Plattform bereitgestellte Middleware-Framework direkt für die Entwicklung und Bereitstellung verwenden. Die Plattform kann verschiedene Middleware-Frameworks bereitstellen, wie z. B. Nachrichtenwarteschlangen, Datenbanken, Konfigurationsmanagement, Caching-Systeme, Sicherheitsmechanismen usw.

Die SaaS-Schicht stellt Anwendungssoftwaredienste bereit. Benutzer können Dienste online abonnieren, die bereitgestellten Softwaredienste nutzen und über Browser, mobile APPs usw. darauf zugreifen. Die von Cloud-Dienstleistern bereitgestellte Software beinhaltet häufig komplexe Geschäftslogiken. Benutzer müssen sich nicht um die zugrunde liegenden Softwaredetails kümmern und können die entsprechenden Arbeiten einfach über die Schnittstelle erledigen.

3.1.2 Middleware-Architektur

Open-Source-Middleware in Cloud-Computing-Umgebungen basiert häufig auf dem verteilten Computing-Modell. Die folgende Abbildung zeigt die häufig verwendete Open-Source-Middleware-Architektur:

Datenfluss

In einem verteilten Rechenmodell fließen Daten durch die Transportschicht. In der traditionellen Middleware-Architektur wird die Nachrichtenwarteschlange zum Empfangen und Speichern von Daten vom Client verwendet. Nachdem die Anwendung sie verarbeitet hat, werden sie an andere Middleware oder das endgültige Ziel gesendet. In einer Cloud-Computing-Umgebung sind Daten jedoch normalerweise nicht direkt verbunden, sondern werden über mehrere Knoten übertragen, sodass die Nachrichtenwarteschlange diese Art von Streaming-Daten nicht gut verarbeiten kann. Daher verwendet Open-Source-Middleware in Cloud-Computing-Umgebungen normalerweise andere Methoden für den Datenfluss, wie z. B. Speicherströme, Ereignisströme, RPC-Aufrufe usw.

Verteiltes Rechnen

Ein wichtiges Merkmal von Open-Source-Middleware ist das verteilte Rechenmodell. In diesem Modell übermitteln Benutzer Aufgaben an verschiedene Knoten, und die Middleware ist dafür verantwortlich, Aufgaben verschiedenen Rechenknoten zur Ausführung zuzuweisen. Aufgaben, die auf Rechenknoten ausgeführt werden, können Datenverarbeitung, maschinelles Lernen, graphentheoretische Berechnungen usw. auf verteilte Weise durchführen. Daher kann Open-Source-Middleware in Cloud-Computing-Umgebungen Big-Data-Computing-Probleme mit großen Datenmengen und intensiven Aufgaben effektiv lösen.

Modulares Design

Die Architektur der Open-Source-Middleware ist hochmodular. Die typische Middleware-Architektur ist in der Abbildung dargestellt. Es besteht aus mehreren Modulen wie Nachrichtenwarteschlange, Computer-Engine, Service-Agent, Speicher, Scheduler und Netzwerkkomponenten. Jedes Modul kann unabhängig voneinander bereitgestellt werden und miteinander zusammenarbeiten, um ein vollständiges Middleware-System zu bilden.

3.2 Bereitstellungsmethoden von Hadoop, Storm und Spark

In diesem Abschnitt werden die Bereitstellungsmethoden häufig verwendeter Open-Source-Software vorgestellt: Apache Hadoop, Apache Storm und Apache Spark.

Bereitstellungsmethode von Hadoop

Hadoop ist ein Open-Source-Framework für verteiltes Computing. Die Infrastruktur besteht aus HDFS, MapReduce und YARN. HDFS ist ein verteiltes Dateisystem zum Speichern von Daten. MapReduce ist ein verteiltes Rechenmodell für die Datenverarbeitung. YARN ist ein Ressourcenverwaltungssystem zur einheitlichen Verwaltung von Clusterressourcen. Die Bereitstellungsmethode von Hadoop ist wie folgt:

  1. Abhängigkeitspakete installieren. Alle Hadoop-Module erfordern die Installation von Abhängigkeitspaketen wie Java, Python und SSH.

  2. Konfigurieren Sie die Konfigurationsdatei hadoop-env.sh. Diese Datei definiert die laufenden Umgebungsvariablen von Hadoop.

  3. Erstellen Sie die erforderlichen Ordner. Erstellen Sie den Ordner /etc/hadoop, um die Konfiguration aller Hadoop-bezogenen Dateien zu speichern.

  4. Ändern Sie die Konfigurationsdatei core-site.xml. Konfigurieren Sie die Standardadressen von HDFS und YARN sowie einige andere allgemeine Konfigurationselemente.

  5. Ändern Sie die Konfigurationsdatei hdfs-site.xml. Konfigurieren Sie die Knotenadresse des HDFS-Namens, die Anzahl der Replikate, die Anzahl der Sicherungen, die Blockgröße usw.

  6. Erstellen Sie eine passwortfreie SSH-Anmeldung auf allen Knoten. Stellen Sie sicher, dass der SSH-Peer mit privatem Schlüssel für alle Knoten vorhanden ist.

  7. Konfigurieren Sie die Konfigurationsdatei „mapred-site.xml“. Konfigurieren Sie die Ressourcenzuteilung, Eingabe- und Ausgabeverzeichnisse von MapReduce-Jobs usw.

  8. Konfigurieren Sie die Konfigurationsdatei „garn-site.xml“. Konfigurieren Sie die Ressourcenzuteilungsrichtlinie und die Warteschlangenkonfigurationsinformationen von YARN.

  9. Masterdatei konfigurieren. Geben Sie die IP-Adresse des Masterknotens an.

  10. Slaves-Datei konfigurieren. Geben Sie die IP-Adresse des Rechenknotens an.

  11. Starten Sie die Prozesse NameNode und DataNode. Starten Sie die Prozesse NameNode und DataNode auf dem Masterknoten bzw. dem Rechenknoten von HDFS.

  12. Starten Sie die Prozesse ResourceManager und NodeManager. Starten Sie die Prozesse ResourceManager und NodeManager auf dem YARN-Masterknoten bzw. dem Rechenknoten.

  13. Testen Sie, ob Hadoop ordnungsgemäß funktioniert. Starten Sie das Client-Programm, stellen Sie eine Verbindung zum Hadoop-Cluster her und führen Sie einfache Testbefehle wie ls, mkdir, cat usw. aus. Wenn der Test erfolgreich ist, bedeutet dies, dass der Hadoop-Cluster erfolgreich bereitgestellt wurde.

So stellen Sie Storm bereit

Storm ist eine Open-Source-Plattform für verteiltes Echtzeit-Computing. Seine Grundarchitektur besteht aus Nimbus, Supervisor und Worker. Nimbus ist ein unabhängiger Cluster, der für die Planung und Ausführung der Topologie verantwortlich ist. Supervisor ist ein Prozess, der auf jedem Computer ausgeführt wird und für die Überwachung und Fehlerbehebung der im Cluster ausgeführten Topologie verantwortlich ist. Worker ist ein JVM-Prozess, der auf jeder Maschine ausgeführt wird und für die Ausführung bestimmter Aufgaben verantwortlich ist.

Die Bereitstellungsmethode von Storm ist wie folgt:

  1. Abhängigkeitspakete installieren. Storm erfordert die Installation von JDK, Maven, Zookeeper und anderen Abhängigkeitspaketen.

  2. Konfigurieren Sie die Konfigurationsdatei Storm.yaml. Diese Datei definiert die Hauptparameter von Storm.

  3. Erstellen Sie die erforderlichen Ordner. Erstellen Sie den Ordner /var/log/storm, um die Protokolldateien von Storm zu speichern.

  4. Laden Sie die Storm.yaml-Konfigurationsdatei auf den Nimbus-Knoten hoch.

  5. Starten Sie den Zookeeper-Prozess auf dem Nimbus-Knoten.

  6. Starten Sie den Storm-Hauptprozess auf dem Nimbus-Knoten.

  7. Starten Sie den Storm-Supervisor-Prozess auf dem Supervisor-Knoten.

  8. Starten Sie den Storm-Worker-Prozess auf dem Supervisor-Knoten.

  9. Testen Sie, ob Storm ordnungsgemäß funktioniert. Starten Sie das Client-Programm, stellen Sie eine Verbindung zum Storm-Cluster her und führen Sie einfache Testtopologien wie WordCount, Bolt Counter usw. aus. Wenn der Test erfolgreich ist, bedeutet dies, dass der Storm-Cluster erfolgreich bereitgestellt wurde.

Spark-Bereitstellungsmethode

Spark ist ein Open-Source-Framework für verteiltes Computing. Seine Grundarchitektur besteht aus Treiber, Executor, Cluster Manager, Scheduler, DAG Scheduler, Task Launcher, Shuffle Service und Web UI. Treiber ist ein Prozess, der für die Ausführung von Benutzeraufträgen verantwortlich ist. Executor ist ein JVM-Prozess, der auf jedem Knoten des Clusters ausgeführt wird und für die Ausführung von Jobs verantwortlich ist. Cluster Manager ist ein Prozess, der für die Verwaltung von Clusterressourcen und die Planung der Jobausführung verantwortlich ist.

Die Bereitstellungsmethode von Spark ist wie folgt:

  1. Abhängigkeitspakete installieren. Spark erfordert die Installation von JDK, Scala, sbt und anderen abhängigen Paketen.

  2. Konfigurieren Sie die Konfigurationsdatei spark-env.sh. Diese Datei definiert die laufenden Umgebungsvariablen von Spark.

  3. Konfigurieren Sie die Konfigurationsdatei spark-defaults.conf. Diese Datei definiert die Standardparameter für Spark-Jobs.

  4. Erstellen Sie die erforderlichen Ordner. Erstellen Sie den Ordner /usr/local/spark, um die Konfiguration der Spark-bezogenen Dateien zu speichern.

  5. Legen Sie die Umgebungsvariable SPARK_HOME fest. Fügen Sie die Variable SPARK_HOME in /etc/profile oder ~/.bashrc hinzu, um auf das Spark-Installationsverzeichnis zu verweisen.

  6. Legen Sie die Umgebungsvariable JAVA_HOME fest. Fügen Sie die Variable JAVA_HOME in /etc/profile oder ~/.bashrc hinzu, um auf das JDK-Installationsverzeichnis zu verweisen.

  7. Konfigurieren Sie die Umgebungsvariable SPARK_MASTER. Fügen Sie die Variable SPARK_MASTER in ~/.bash_profile hinzu, um auf den Hostnamen des Master-Knotens zu verweisen.

  8. Konfigurieren Sie die passwortfreie SSH-Anmeldung für den Supervisor-Knoten. Stellen Sie sicher, dass der SSH-Peer mit privatem Schlüssel des Supervisor-Knotens vorhanden ist.

  9. Laden Sie das Spark-Softwarepaket auf alle Rechenknoten herunter.

  10. Starten Sie den Spark-Masterprozess auf dem Supervisor-Knoten.

  11. Starten Sie den Spark-Slave-Prozess auf dem Supervisor-Knoten.

  12. Starten Sie Spark-Executor-Prozesse auf allen Rechenknoten.

  13. Testen Sie, ob Spark ordnungsgemäß funktioniert. Starten Sie das Client-Programm, stellen Sie eine Verbindung zum Spark-Cluster her und führen Sie einfache Testjobs wie Pi Estimation, WordCount usw. aus. Wenn der Test erfolgreich ist, bedeutet dies, dass der Spark-Cluster erfolgreich bereitgestellt wurde.

Grundlegende Verwendung von Ansible

Ansible ist ein Open-Source-IT-Automatisierungstool, mit dem Computercluster automatisch bereitgestellt, verwaltet und konfiguriert werden können. Es basiert auf dem SSH-Protokoll und unterstützt die Stapelverwaltung einer großen Anzahl entfernter Computer. Die Bereitstellungsmethode von Ansible ist wie folgt:

  1. Ansible installieren. Ansible wurde in Python entwickelt, daher müssen Sie zuerst Python installieren.

  2. Installieren Sie sshpass. sshpass ist ein Tool unter Linux, mit dem SSH-Befehle in der Shell ausgeführt werden.

  3. SSH-Schlüsselpaar generieren. Verwenden Sie den Befehl ssh-keygen, um ein Schlüsselpaar zu generieren.

  4. Kopieren Sie das SSH-Schlüsselpaar auf den Zielknoten. Kopieren Sie das generierte Schlüsselpaar in das Verzeichnis ~/.ssh/ des Zielknotens.

  5. Konfigurieren Sie die Zielknoteninformationen in der Ansible-Playbook-Datei. Konfigurieren Sie die Inventardatei so, dass sie die IP-Adresse oder den Hostnamen des Zielknotens auflistet.

  6. Konfigurieren Sie Aufgabeninformationen in der Ansible-Playbook-Datei. Konfigurieren Sie Playbooks und definieren Sie auszuführende Aufgaben, z. B. Software installieren, Benutzer erstellen, Dateien kopieren, Skripte ausführen usw.

  7. Ansible-Playbook ausführen. Führen Sie den Befehl „ansible-playbook“ auf dem Zielknoten aus, führen Sie die angegebene Playbook-Datei aus und schließen Sie die automatisierte Bereitstellung und Verwaltung des Zielknotens ab.

Guess you like

Origin blog.csdn.net/universsky2015/article/details/133502334
Recommended