it-swarm.com.de

Ein- und Ausschalten von Cloud-Instanzen während der Bürozeiten

Das Erstellen von Cloud-Instanzen in AWS, Azure und Rackspace hat mich beschäftigt. Allerdings muss ich meine Instanzen am Ende des Tages und am Morgen ausschalten, da dies meine Hosting-Kosten halbiert (sie sind für die Entwicklung bestimmt).

Ich habe mir ein paar Managementdienste angesehen, aber sie haben mir den Kopf verdorben. Gibt es eine einfache Möglichkeit, dies zu tun?

21
David

Ansatz

Sie könnten jederzeit Ihre eigene Lösung entwickeln, sofern die meisten Cloud-Anbieter eine entsprechende API zum Starten/Stoppen von Instanzen nach Bedarf (oder sogar nach Zeitplan) anbieten, die auch von diesen Verwaltungsdiensten verwendet wird - die AmazonEC2 Die Java-Oberfläche bietet beispielsweise (unter anderem) alle relevanten Methoden, insbesondere:

Über Scripting (EC2)

Der einfachste Ansatz für Amazon EC2 wäre, sich einige Python-Skripte mithilfe des hervorragenden boto (einer integrierten Schnittstelle zu aktuellen und zukünftigen Infrastrukturdiensten von Amazon Web Services) selbst zu erstellen. , wodurch alle oben genannten EC2-Methoden verfügbar gemacht werden; Sie können diese Skripte dann bei Bedarf oder über Ihren Betriebssystem-Scheduler starten.

Über Continuous Integration/Automation (EC2)

Eine andere Möglichkeit wäre, einen Continuous Integration - Server als Automatisierungs-Engine (ein manchmal übersehener Aspekt dieser Systeme) zu ermöglichen, falls Sie dennoch einen ausführen. es würde Ihnen erlauben, Instanzen bei Bedarf zu starten/zu stoppen oder ähnlich wie bei cron zu planen.

Wir tun genau dies mit dem Bamboo AWS Plugin (es ist Open Source und der Code ist auf Bitbucket verfügbar ). Siehe meine Antwort auf So starten und stoppen Sie eine Amazon EC2-Instanz programmgesteuert in Java für weitere Details zu diesem Ansatz. Während Atlassian Bamboo ein kommerzielles Angebot ist, sollte für beliebte Open Source CI-Lösungen wie z. Jenkins als gut.

11
Steffen Opel

Azure

REST:

Sie können dies für Azure-Bereitstellungen tun, indem Sie die Windows Azure-Dienstverwaltung REST -API verwenden. Da es sich um REST handelt, können Sie die meisten Programmiersprachen verwenden, um darauf zuzugreifen.

Auf Ihrem lokalen Computer kann eine Anwendung ausgeführt werden, die Aufrufe dieser Dienste plant, um zu einem bestimmten Zeitpunkt am Ende der Bürozeiten zu löschen und dann am Morgen zu erstellen Ihren Dienst erneut aufzurufen.

PowerShell:

Sie können Ihre Bereitstellungen auch auf die gleiche Weise verwalten, aber anstatt REST zu verwenden, können Sie Azure PowerShell-Cmdlets verwenden. Ich habe es selbst so gemacht und es funktioniert gut.

Um Ihnen den Einstieg zu erleichtern, finden Sie ein nützliches Tutorial zur Verwendung von PowerShell zum Bereitstellen von Azure-Anwendungen .

also Wenn Sie es noch nicht wussten, sollte ich auch erwähnen, dass es eine kostenlose 3-monatige Testversion mit Azure gibt, wenn Sie nur auf der Suche nach Kostensenkungen während der Entwicklung sind.

12

HINWEIS: Ab Juni 2013 können IaaS-Instanzen in den Status "Gestoppt (freigegeben)" versetzt werden. In diesem Status wird Ihnen nur die Speicherung von Festplatten in Rechnung gestellt, die der VM zugeordnet sind. Die ursprüngliche Antwort unten beschreibt eine VM -Instanz, die sich in einem "angehaltenen", aber nicht freigegebenen Zustand befindet. Der freigegebene Status ist derzeit die Standardeinstellung für VM Stoppaktionen, die über das Azure-Verwaltungsportal ausgeführt werden.

Die einzige Möglichkeit, dies heute in Widows Azure zu erreichen, besteht darin, die Bereitstellung zu löschen.

Wenn Sie den Dienst beenden, werden Ihnen weiterhin Gebühren in Rechnung gestellt (wie das Mieten von Büroflächen, die Sie auch bezahlen, wenn Sie nicht darin sind), und Sie können die Anzahl der Instanzen nicht auf Null setzen. Eine mögliche Option besteht darin, die Anzahl der Instanzen auf das absolute Minimum (1) zu reduzieren und sie dann während der benötigten Stunden erneut zu skalieren. Die Kostenvorteile hängen jedoch von der Größe Ihrer Instanzen ab.

6

Alter Thread, den ich kenne, aber Microsoft hat 2014 'Runbooks' für Azure eingeführt, die Sie für die Automatisierung verwenden können, einschließlich geplanter Starts und Herunterfahren. Stellen Sie, wie oben erwähnt, sicher, dass Sie sich im gestoppten (freigegebenen) Zustand befinden und nicht nur im gestoppten, um Gebühren zu vermeiden.

Mehr Info:

Skript zum Stoppen Ihrer VMs

Azure-Automatisierung, offizielle MS-Dokumente.

2
sdcharle

Ja, es gibt ein Automatisierungs-Runbook, mit dem wir den Job planen können. Ich habe das Skript zum Stoppen der (nicht zugewiesenen) Azure-VM erstellt.

https://gallery.technet.Microsoft.com/Deallocate-all-VM-under-79049c69

Bitte lesen Sie, wie Runbook verwendet wird http://Azure.Microsoft.com/blog/2014/06/19/Azure-automation-runbook-management/

Dellocation und stop sind unterschiedlich, da stop vm auch kosten verursacht.

1
Mahesh Malpani

Den besten Artikel zum Thema Automatisierung + Ein-/Ausschalten von VMs habe ich bisher gefunden. [05. Februar 2015]. http://clemmblog.azurewebsites.net/using-Azure-automation-start-und-stop-virtual-machines-schedule/

1
Oxon

Empfohlene Lösung für AWS:

Die AWS Data Pipeline ist eindeutig für diese Aufgabe geeignet. Data Pipeline verwendet AWS-Technologien und kann so konfiguriert werden, dass AWS-CLI-Befehle nach einem festgelegten Zeitplan ohne externe Abhängigkeiten ausgeführt werden. Data Pipeline kann Protokolle in S3 schreiben und wird im Kontext einer IAM-Rolle ausgeführt, wodurch wichtige Verwaltungsanforderungen entfallen. Daten-Pipeline ist auch kostengünstig; Mit der kostenlosen Stufe "Datenpipeline" können beispielsweise Instanzen einmal pro Tag gestoppt und gestartet werden.

https://aws.Amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/

0

In this article finden Sie einige Optionen fürEin-/Ausschalten Ihrer Instanzenin AWS.

  • AWS-Datenpipeline
  • Von AWS Lambda geplante Ereignisse
  • Geplantes Cron auf EC2-Instanz
  • Geplante Skalierung der automatischen Skalierungsgruppe

In Ihrem Fall würde ich also Folgendes empfehlen:

Für AWS :

Durch Shell-Befehl wie AWS CLI-Befehle : Siehe Cloud-Instanzen mit AWS-Pipeline aktivieren/deaktivieren. Diese Methode initiiert eine separate EC2-Instanz, die für jeden AWS-API-Aufruf, dessen Ausführungszeiten sich auf Ihre Rechnung auswirken, gestartet und beendet wird.

Durch Programmiersprachen wie Node.js / Python : Siehe Cloud-Instanzen mit AWS Lambda aktivieren/deaktivieren. Die Aufgabe, die in der Regel weniger als 3 Sekunden lang zweimal am Tag ausgeführt wird und eine Speicherkapazität von bis zu 128 MB aufweist, kostet in der Regel weniger als 0,0004 USD/Monat

Für Azure und Rackspace (oder andere Plattformen, die Sie möglicherweise haben):
Verwenden Sie die obigen Tools, um eine jeweilige API bereitzustellen, um Instanzen nach Bedarf zu starten/stoppen.

Sie können auch scripts-per-boot festlegen, das bei jedem Start Ihrer Instanz ausgeführt wird.

0
Chetabahana

[~ # ~] aws [~ # ~]

AWS SDK ist Ihre beste Wahl, aber ich verwende TotalCloud.io für Start und Stopp Instanzen unter der kostenlosen Schicht. Sehr anpassbar.

Einfach einzurichten.