2016-04-02 5 views
0

Ich versuche gerade, die Lücke zwischen persistenten, aber einzigartigen Volumes zu schließen, während Container mit Rancher skaliert werden (alternativ Docker Compose, da dies eher eine abstrakte Frage ist).Skalierung von Docker-Containern in Rancher mit verschiedenen, aber persistenten Volumes

Nehmen Sie als Beispiel einen Minecraft-Server, ich habe einen Dienst in Rancher/Compose definiert, der ein benanntes Volume als Daten/Welt-Verzeichnis verwendet (zB -v minecraft_data:/data, wo das Minecraft-Image seine World-Dateien lädt/Datenverzeichnis). Der Grund, warum ich einen solchen benannten Datenträger verwende, ist, dass ich ihn zwischen Service-Upgrades beibehalten möchte (z. B. wenn ich die Image-Version ändere oder einige Umgebungsvariablen ändern möchte), was mit einem anonymen Volume nicht möglich wäre.

Wenn ich jetzt versuche, meinen Dienst zu erweitern, erhalte ich entweder mehrere Container, die auf dieselben Daten zugreifen (für viele Anwendungsfälle nicht geeignet) oder die Service-Aktualisierbarkeit bei Verwendung anonymer Volumes.

Gibt es irgendwelche Tools, Best Practices oder Muster, die bei diesem Problem helfen könnten?

Antwort

1

In aktuellen Versionen von Rancher (v1.4 zu diesem Zeitpunkt) storage drivers auf der Umwelt Infrastrukturebene eingesteckt werden kann. Auf diese Weise können Sie Volumes erstellen, die für die Umgebung, den Stapel oder den Container gelten.

Für Ihren Anwendungsfall klingt es wie Per-Container-Bereich ist, was Sie brauchen. Mit rancher-compose tun Sie so etwas wie:

version: '2' 
services: 
    foo: 
    image: busybox 
    volumes: 
    - bar:/var/lib/storage 
    command: /bin/sh -c 'while true; do sleep 500; done' 
volumes: 
    bar: 
    per_container: true 

Dann rancher-compose up -d den Stapel und Service mit einem Behälter und einem einzigartigen Volumen erstellen. rancher scale foo=2 erstellt einen anderen Container mit einem eigenen Volume usw. Sie können auch Volume-Speichertreiber für jedes Volume wie rancher-ebs oder rancher-nfs mit ihren jeweiligen Optionen angeben.

+0

Ist dies auch in der Rancher GUI möglich? Nach dem Lesen der Volume-Scope-Dokumentation (http://docs.rancher.com/rancher/v1.4/en/rancher-services/storage-service/) scheint es, dass ich einen Speichertreiber installieren muss, der nicht einfach lokal ist Speicher, um die Option zu erhalten. – RikuXan

+0

Sie können Umgebungsbereichs-Volumes über die GUI erstellen, nachdem Sie den Treiber aus dem Katalog hinzugefügt haben. Um pro Container zu erhalten, scheint es bisher nur eine Option in der Compose-Syntax zu sein (ab 1.4) –

0

Ich denke, was Sie wollen, ist die Differenz Instanzen des gesamten Projekts. scale impliziert identische Klone, aber wenn sie unterschiedliche Daten haben, sind sie nicht identisch.

Statt Maßstab zu verwenden, würde ich verschiedene Instanzen mit verschiedenen Projektnamen beginnen: https://docs.docker.com/compose/overview/#multiple-isolated-environments-on-a-single-host

+0

Das ist wahrscheinlich wahr, ich hoffte nur, es gäbe eine Möglichkeit, dies auf die gleiche Weise zu automatisieren, wie die Waage funktioniert (d. H. Die Container und Volumes erhalten eine fortlaufende Nummer). Ich kann mir vorstellen, dass es im Stapel ziemlich chaotisch aussehen würde und ziemlich bald einen neuen Service für jeden benötigten Container schaffen würde. – RikuXan

Verwandte Themen