Dies ist der zweite Blog eines 2-Blog - Serie über die Skalierbarkeit der Plattform DCHQ Weave als die zugrunde liegende Netzwerkschicht verwendet wird . Der erste Blog umfasste die Bereitstellung von 10.000 Containern auf 10 Weave - Clustern, die jeweils drei Cloud - Server auf Rackspace mit 4 GB Arbeitsspeicher und zwei CPUs.
In diesem Blog werden wir den Einsatz von 2.000 Containern abdecken - sondern 10 Cluster mit drei Cloud - Server der Verwendung jeder, werden wir eine sein mit einzelnen Weave - Cluster mit 30 Cloud - Server . DCHQ automatisiert nicht nur die Anwendungsbereitstellung und Verwaltung, aber es automatisiert auch die Infrastruktur - Bereitstellung und automatische Skalierung auf 13 verschiedenen Wolken und Virtualisierungsplattformen. Lesen Sie mehr über diese Skalierbarkeit Test in diesem Blog.
Hintergrund
Während die Portierbarkeit von Anwendungen auf (dh in der Lage , die gleiche Anwendung auf jedem Linux - Rechner laufen) ist nach wie vor der führende Treiber für den Einsatz von Linux Containers, eine andere wichtige Vorteile ist die Möglichkeit , die Serverauslastung zu optimieren , so dass Sie jedes Bit der Rechen verwenden können. Natürlich für die Upstream - Umgebungen, wie ART, können Sie immer noch mehr als genug CPU & Speicher für Ihre Arbeit zu widmen - aber in DEV / TEST - Umgebungen, die in der Regel die Mehrheit der Rechenressourcenverbrauch in einer Organisation darstellen, kann die Optimierung der Serverauslastung führen zu erheblichen Kosteneinsparungen.
Das klingt alles gut auf dem Papier - aber DevOps Ingenieure und Infrastrukturbetreiber noch mit den folgenden Fragen zu kämpfen:
- Wie kann ich Gruppenserver in verschiedenen Wolken in Clustern, die zu Unternehmensgruppen, Entwicklungsteams oder Anwendungsprojekte Karte?
- Wie überwache ich diese Cluster und Einblick in den Ressourcenverbrauch von verschiedenen Gruppen oder Benutzer erhalten?
- Wie kann ich auf Servern in einem Cluster vernetzen, so dass Container über mehrere Hosts miteinander kommunizieren können?
- Wie kann ich meine eigenen Fähigkeiten-basierte Platzierung Politik definieren, so dass ich jedes Bit der Rechen in einem Cluster verwenden kann?
- Wie kann ich skalieren automatisch die Cluster die Anforderungen der Entwickler für neue Container-basierte Bereitstellung von Anwendungen gerecht zu werden?
DCHQ, in gehosteten und On-Premise-Versionen adressiert all diese Herausforderungen und bietet die fortschrittlichste Infrastruktur-Bereitstellung, automatische Skalierung, Clustering und Platzierung Richtlinien für Infrastrukturbetreiber oder DevOps Ingenieure.
- Ein Benutzer kann eine beliebige Linux - Host registrieren überall läuft durch eine automatisch generierte Skript ausgeführt , die DCHQ Mittel, zusammen mit Docker und dem Software-definierten Netzwerkebene (optional) zu installieren. Diese Aufgabe automatisiert werden kann programmatisch unsere REST - API verwenden für die Erstellung von "Docker Servers" ( https://dchq.readme.io/docs/dockerservers )
- Alternativ integriert DCHQ mit 13 Cloud-Anbieter, so dass Anwender automatisch virtuelle Infrastruktur auf vSphere, Openstack, Cloud, Amazon Elastic Cloud Computing, Google Compute Engine, Rackspace, DigitalOcean, Strato, Microsoft Azure, und viele andere zum Hochdrehen.
Erstellen der Anwendung Vorlage für die Nginx Cluster
Einmal DCHQ angemeldet (entweder die gehostete DCHQ.io oder On-Premise - Version) kann ein Benutzer zu navigieren App & Machine und klicken Sie dann auf die + Taste , um eine neue zu erstellen Docker Compose Vorlage.
Wir haben ein einfaches Nginx Cluster für die Zwecke dieser Skalierbarkeit Test erstellt. Sie werden feststellen , dass der CLUSTER_SIZE Parameter können Sie die Anzahl der Container angeben zu starten (mit den gleichen Anwendungsabhängigkeiten).
Der mem_min Parameter ermöglicht es Ihnen , die minimale Menge an Speicher zu specifcy Sie zum Container zuweisen möchten.
Der Host - Parameter können Sie den Host an Sie für Container - Implementierungen verwenden möchten. Auf diese Weise können Sie für Ihren Anwendungsserver - Cluster über verschiedene Hosts (oder Regionen) mit hoher Verfügbarkeit gewährleisten und Sie können mit Affinitätsregeln einhalten , um sicherzustellen , dass die Datenbank auf einem separaten Host zum Beispiel läuft. Hier sind die Werte für den Host - Parameter unterstützt:
- host1, host2, host3 usw. - wählt einen Host zufällig innerhalb eines Datenzentrums (oder Cluster) für Container - Implementierungen
- <IP - Adresse 1, IP - Adresse 2 usw.> - ermöglicht es dem Benutzer die tatsächliche IP - Adressen angeben für Container - Implementierungen verwenden
- <Hostname 1, Hostname 2 usw.> - ermöglicht es dem Benutzer die tatsächlichen Host - Namen angeben , für Container - Implementierungen verwenden
- Wildcards (zB "db- *" oder "app-SRV *") - die Platzhalter festlegen , die in einem Host - Namen zu verwenden ,
Provisioning der zugrunde liegenden Infrastruktur auf jeder Cloud
Sobald eine Anwendung gespeichert wird, kann ein Benutzer ein Cloud-Provider registrieren Sie sich auf 13 verschiedene Cloud-Endpunkte, einschließlich vSphere, Openstack, Cloud, Amazon Web Services, Rackspace, Microsoft Azure, DigitalOcean, HP Öffentlichkeit die Bereitstellung und automatische Skalierung von Clustern zu automatisieren Wolke, IBM Softlayer, Google Compute Engine, und viele andere.
Erstens kann ein Benutzer ein Cloud - Provider für Rackspace (zum Beispiel) registrieren , um von der Navigation Cloud - Anbieter und dann auf die Schaltfläche + klicken Rackspace zu wählen. Die Rackspace API Key muss zur Verfügung gestellt werden - die aus dem Kontoeinstellungen Abschnitt abgerufen werden können.
Ein Benutzer kann dann einen Cluster mit einer Auto-Scale - Richtlinie erstellen automatisch neue Cloud - Server zum Hochdrehen. Dies kann durch die Navigation zu erfolgen Cluster Seite und dann auf dem Anklicken + Taste. Sie können eine kapazitätsorientierte Platzierung Richtlinie auswählen und dann Weave als Netzwerkschicht , um sicher zu erleichtern, passwortgeschützten Quer Container Kommunikation über mehrere Hosts innerhalb eines Clusters. In diesem Fall definiert wir auch eine Auto-Skala Politik , die Cloud - Server in diesem Cluster bis zur maximalen Grenze definiert wird spin up automatisch (in diesem Fall 30 Cloud - Server). Granular Ansprüche stehen zur Verfügung , um sicherzustellen , dass dieser Cluster kann nur von den 10 Benutzern verwendet werden wir in diesem Test (user1@dchq.io, user2@dchq.io, ..., user10@dchq.io). Schließlich können Ansprüche auf den Bauplan (oder Anwendungsvorlage) Ebene definiert werden - , um sicherzustellen , dass nur die Titel - Anwendungen können auf diese freigegebenen Cluster eingesetzt werden. In diesem Fall war der Cluster offen "All Riss".
Ein Benutzer kann jetzt Bestimmung eine Reihe von Cloud-Server auf der neu erstellten Cluster entweder über den UI-basierten Workflow oder durch ein einfaches YAML-basierten Maschine Compose Vorlage definieren, die von der Self-Service-Bibliothek angefordert werden kann.
UI-basierte Workflow - Ein Benutzer kann durch Navigieren zu Rackspace Cloud Server anfordern Maschinen und dann auf dem Anklicken + Taste zur Auswahl von Rackspace . Sobald der Cloud - Provider ausgewählt ist, kann ein Benutzer wählen Sie die Region, Größe und Bild benötigt. Ports sind standardmäßig auf Rackspace Cloud Server geöffnet einige der Port - Anforderungen (zB 32.000-59.000 für Dockarbeiter, 6783 für Weave und 5672 für RabbitMQ) gerecht zu werden . Ein Cluster wird dann ausgewählt , und die Anzahl der Cloud - Server spezifiziert werden.
YAML-basierte Maschine Compose Vorlage - Ein Benutzer kann zunächst eine Maschine Compose Vorlage für Rackspace erstellen , indem Sie auf die Navigation Maschinen und wählen Sie dann Maschine Compose .
Die Parameter, die für die Maschine Compose Vorlage werden im Folgenden zusammengefasst:
- Beschreibung : Beschreibung der Plan / template
- instanceType : Cloud - Provider bestimmten Wert (zB general1-4)
- Region : Cloud - Anbieter bestimmten Wert (zB IAD)
- Bild : Verpflichtend - vollständig qualifizierte Bild ID / Name (zB IAD / 5ed162cc-b4eb-4371-b24a-a0ae73376c73 oder vSphere VM Template Name)
- Benutzername : Optional - nur für vSphere VM Template Benutzername
- Kennwort : Optional - nur für vSphere VM Template verschlüsselte Passwort. Sie können das Passwort mit dem Endpunkt verschlüsseln https://www.dchq.io/#/encrypt
- Netzwerk : Optional - Cloud - Provider bestimmten Wert (zB Standard)
- Security : Cloud - Provider bestimmten Wert (zB DCHQ-security-Gruppe)
- KeyPair : Cloud - Provider bestimmten Wert (zB privater Schlüssel)
- Openports : Optional - durch Komma getrennte Portwerte
- zählen : gesamte Anzahl der VMs, standardmäßig 1.
Sobald die Maschine Compose Vorlage gespeichert wird, kann ein Benutzer dieses Gerät aus der Self-Service anfordern Bibliothek . Ein Benutzer kann klicken anpassen und dann die Auswahl Cloud - Anbieter und Cluster für die Bereitstellung von Cloud - Server diese Rackspace zu verwenden.
Bereitstellen der Nginx-Clusters mithilfe von Programmatically DCHQ der REST-API
Sobald die Cloud - Server bereitgestellt werden, kann ein Benutzer die Cluster Nginx bereitstellen programmatisch DCHQ der REST - API verwenden. Um die Verwendung der API zu vereinfachen, wird ein Benutzer müssen den Cluster erstellt früher als Standard - Cluster zu wählen. Dies kann durch die Navigation zu erfolgen Profil , und wählen Sie dann die Standard - Cluster benötigt.
Sobald der Standard - Cluster ausgewählt wird, dann kann ein Benutzer einfach die folgende Locke Skript ausführen, die die "Bereitstellung" API aufruft ( https://dchq.readme.io/docs/deployid ).
In diesem einfachen curl Skript haben wir die folgenden:
- Eine for-Schleife, von 1 bis 20
- Bei jeder Iteration sind die Bereitstellung wir den gruppierten Nginx-Anwendung mit dem Standard-Cluster zugewiesen user1@dchq.io~~V
- user1% 40dchq.io für user1@dchq.io verwendet wird , in dem @ -Zeichen wird durch hex% ersetzt 40
- @ Zwischen Passwort und Host ist nicht durch hex ersetzt
- <id> bezieht sich auf die Nginx - Cluster - Anwendung ID. Dies kann durch die Navigation in die abgerufen werden Bibliothek > Anpassen der Nginx - Cluster. Die ID ist in der URL sein
- Schlaf 22 zwischen jeder Iteration verwendet
- Nach dem Ausführen dieses Skript hätte 200 Nginx Container von user1@dchq.io eingesetzt worden - 20 Wiederholungen je einen Nginx Cluster von 10 Containern bereitstellen.
Wir wiederholten dann den gleichen Vorgang für die anderen Benutzer (user2@dchq.io, user3@dchq.io, ..., user10@dchq.io) - alle auf denselben freigegebenen Cluster bereitstellen.
Sie können sich dieses curl Skript ausprobieren. Sie können entweder DCHQ On-Premise (installieren http://dchq.co/dchq-on-premise.html ) oder melden Sie sich auf DCHQ.io PaaS Hosted ( http://dchq.io ).
Die CPU-Überwachung, Speicher und I / O-Auslastung des Clusters, Server & Running Container
DCHQ ermöglicht es Benutzern, die CPU, Arbeitsspeicher, Festplatte und I / O der Cluster, Hosts und Container zu überwachen.
- Zur Überwachung der Cluster, können Sie einfach zu navigieren Cluster
- Zur Überwachung der Hosts, können Sie einfach zu navigieren Maschinen
- Zur Überwachung der Container, können Sie einfach navigieren Sie zu Apps leben
Wir verfolgten die Leistung der Hosts und Cluster vor und nach dem wir die 2000 Container ins Leben gerufen.
Nach dem Spinnen bis 2000 Container haben wir Screenshots der Leistungsdiagramme für den Cluster erfasst. Sie können sehen , dass die aggregierten Speicherauslastung in den 30 Cloud - Server im Cluster bei 81% lag .
Sie können sehen , dass die höchste Speicherauslastung in den 30 Cloud - Server im Cluster bei 84% lag .
Wenn wir in einer der 30 Hosts im Cluster aufgerissen und sah mehr Details wie die Anzahl der Container auf diesem Host ausgeführt wird , zog die Anzahl der Bilder und natürlich die CPU / Speicher / Datenträgerauslastung. In diesem Fall wird die war die Speicherauslastung von diesem Host 83% .
Hier ist eine Ansicht aller laufenden 200 Nginx Cluster (wobei jeder Cluster 10 Container hatte).
Schlussfolgerung
Orchestrierung Docker-basierte Bereitstellung von Anwendungen ist nach wie vor eine Herausforderung für viele DevOps Ingenieure und Infrastrukturbetreiber, da sie oft kämpfen Pools von Servern über mehrere Entwicklungsteams in denen Zugangskontrollen, Überwachung, Vernetzung, kapazitätsbasierten Platzierung, Auto-Scale-Out Strategien und Quote zu verwalten sind wesentliche Aspekte, die konfiguriert werden müssen.
DCHQ, in gehosteten und On-Premise-Versionen adressiert all diese Herausforderungen und bietet die fortschrittlichste Infrastruktur-Bereitstellung, automatische Skalierung, Clustering und Platzierung Richtlinien für Infrastrukturbetreiber oder DevOps Ingenieure.
Zusätzlich zu den erweiterten Infrastruktur-Bereitstellung und Clustering-Funktionen, vereinfacht DCHQ die Containerisierung von Enterprise-Applikationen durch eine vorzeitige Anwendung Zusammensetzung Rahmen, der Docker Compose mit Quer Bild Umgebungsvariable Bindungen, erweiterbare BASH-Skript-Plug-Ins, die zum Zeitpunkt der Anforderung aufgerufen erstreckt werden kann, oder Post-Bereitstellung und Anwendungs-Clustering für Hochverfügbarkeit über mehrere Hosts oder Regionen mit Unterstützung für automatische Skalierung.
Zugang zu den Out-of-Box Multi-Tier-Java-Anwendungsvorlagen zusammen mit Application-Lifecycle-Management-Funktionalität wie Überwachung, Container-Updates, Skala in / out und kontinuierliche Lieferung zu erhalten.
No comments:
Post a Comment