web-dev-qa-db-ja.com

営業時間中にクラウドインスタンスをオン/オフにする方法

AWS、Azure、Rackspaceでクラウドインスタンスを作成することに頭を悩ませています。ただし、インスタンスを1日の終わりにオフにし、午前中にオンにする必要があります。これにより、ホスティングコストが半分になります(開発用です)。

私はいくつかの管理サービスを見てきましたが、それらは私の頭を悩ませました。これを行う簡単な方法はありますか?

21
David

アプローチ

ほとんどのクラウドプロバイダーがインスタンスをオンデマンドで(またはスケジュールどおりに)開始/停止するためのそれぞれのAPIを提供している限り、いつでも独自のソリューションをロールできます。これはもちろん、これらの管理サービスが実際に使用しているものです AmazonEC2 Javaインターフェースは、たとえば(他の多くのメソッドの中でも)関連するすべてのメソッドを提供します。具体的には次のとおりです。

スクリプティング経由(EC2)

Amazon EC2 に関するこれに対する最も簡単なアプローチは、優れた botoを使用していくつかのPythonスクリプトを作成することです。 (Amazon Web Servicesが提供する現在および将来のインフラストラクチャサービスへの統合インターフェース)、上記のすべてのEC2メソッドを公開します。その後、オンデマンドで、またはオペレーティングシステムスケジューラを介してこれらのスクリプトを開始できます。

継続的インテグレーション/自動化(EC2)経由

もう1つのオプションは、とにかく実行した場合に備えて、自動化エンジン(これらのシステムの見落とされがちな側面)として 継続的インテグレーション サーバーを促進することです。これにより、インスタンスをオンデマンドで開始/停止することも、cronと同様にスケジュールすることもできます。

Bamboo AWSプラグイン (オープンソースであり、 コードはBitbucketで入手可能 )を使用してこれを正確に行います。 開始方法とこのアプローチの詳細については、Amazon EC2インスタンスをプログラムでJavaで停止してくださいAtlassian Bamboo は商用製品ですが、人気のあるオープンソースCIソリューションでも同様のものが利用できるはずです。 ジェンキンス 同様に。

11
Steffen Opel

Azure

REST:

Windows Azure Service Management REST API 。RESTであるため、ほとんどを使用できます)を使用して、Azureデプロイメントに対してこれを行うことができます。アクセスするためのプログラミング言語。

これらのサービスへの呼び出しを、営業時間の終わりの特定の時間に 削除 にスケジュールし、次に 作成 サービスを再度スケジュールするアプリケーションをローカルマシンで実行することができます。朝。

PowerShell:

または、同じ方法で展開を管理できますが、RESTを使用する代わりに Azure PowerShellコマンドレット を使用できます。私はこの方法を自分で行ったので、うまく機能します。

開始を支援するために、使用方法に関する優れたチュートリアルがあります PowerShellを使用してAzureアプリケーションをデプロイする

alsoまだ知らなかった場合は、開発中にコストを削減したいだけの場合は、Azureで3か月間の無料トライアルがあることにも言及する必要があります。

12

注:2013年6月の場合、IaaSインスタンスは「停止(割り当て解除)」状態になります。この状態では、VMに関連付けられたディスクのストレージに対してのみ課金されます。以下の元の回答は、 VM「停止」状態にあるが、割り当て解除状態ではないインスタンス。割り当て解除状態は、現在、Azure管理ポータルを介して実行されるアクションの停止VMのデフォルトです。

今日のWidowsAzureでこれを実現する唯一の方法は、デプロイメントを削除することです。

サービスを停止した場合でも、請求が発生し(オフィススペースのレンタルなど、サービスに参加していなくても料金が発生します)、インスタンス数をゼロに設定することはできません。使用できるオプションは、インスタンス数を絶対最小値(1)に減らしてから、必要な時間内にスケールアップすることです。ただし、これによる費用対効果は、インスタンスのサイズによって異なります。

6

私が知っている古いスレッドですが、Microsoftは2014年にAzure用の「Runbooks」を導入しました。これは、スケジュールされた起動とシャットダウンを含む自動化に使用できます。上記のように、課金を防ぐために、停止したばかりではなく、停止(割り当て解除)状態になっていることを確認してください。

より詳しい情報:

VMを停止するスクリプト

Azureの自動化、公式のMSドキュメント

2
sdcharle

はいAutomationRunbookがあり、それによってジョブをスケジュールできます。 Azure VMを停止(割り当て解除)するためのスクリプトを作成しました。

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

Runbookの使用方法についてお読みください http://Azure.Microsoft.com/blog/2014/06/19/Azure-automation-runbook-management/

Stop vmにもコストがかかるため、削除と停止は異なります。

1
Mahesh Malpani

これまでに見つけた自動化+ VMのオン/オフの切り替えに関する最高の記事。 [2015年2月5日]。 http://clemmblog.azurewebsites.net/using-Azure-automation-start-und-stop-virtual-machines-schedule/

1
Oxon

AWSの推奨ソリューション:

AWSデータパイプラインは、このタスクに独自に適しています。データパイプラインはAWSテクノロジーを使用しており、外部の依存関係なしに設定されたスケジュールでAWSCLIコマンドを実行するように設定できます。データパイプラインはログをS3に書き込むことができ、IAMロールのコンテキストで実行されるため、主要な管理要件が排除されます。データパイプラインも費用効果が高いです。たとえば、データパイプラインの無料利用枠を使用して、インスタンスを1日1回停止および開始できます。

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

0

この記事を参照してください。インスタンスをオン/オフにするいくつかのオプションがありますAWS内。

  • AWS Datapipeline
  • AWSLambdaのスケジュールされたイベント
  • EC2インスタンスでスケジュールされたcron
  • 自動スケーリンググループのスケジュールされたスケーリング

したがって、あなたの場合、私は以下をお勧めします:

AWSの場合

AWSCLIコマンドのようなシェルコマンドを介して:を参照AWS Pipelineを使用してクラウドインスタンスをオン/オフにします。このメソッドは、実行時間が請求に影響するAWS API呼び出しごとに、開始および終了する個別のEC2インスタンスを開始します。

プログラミング言語を通じてNode.js/PythonAWS Lambdaを使用してクラウドインスタンスをオン/オフにするを参照してください。 1日2回、通常3秒未満、最大128MBのメモリ消費で実行されるタスクのコストは、通常、月額0.0004米ドル未満です。

AzureおよびRackspace(または他のプラットフォームの場合):
上記のツールを使用して、それぞれのAPIを提供し、オンデマンドでインスタンスを開始/停止します。

インスタンスが起動するたびに実行される scripts-per-boot を設定することも検討してください。

0
Chetabahana

[〜#〜] aws [〜#〜]

AWS SDKが最善の策ですが、私はTotalCloud.ioを使用して start および stop インスタンスを無料枠で使用しています。非常にカスタマイズ可能。

セットアップが簡単。