私の会社はホスティングを Amazon に移行しており、私は移行に関するあらゆる問題に取り組んでいます。物理ハードウェアから一時的な仮想マシンへの移行は、かなり困難でした。
最後の課題の 1 つは、EBS とスナップショットの管理方法を見つけることです。現在、説明的な名前を付けたり、意味を追加したりする方法がありません。管理者がリソースをどのように管理しているのか疑問に思っています。1 台または 2 台のサーバーであればそれほど問題にはなりませんが、複数のサーバーを実行している場合はどのように対処しているのでしょうか。サーバーの数が多すぎると、全員がサードパーティのツール (RightScale/Scalr など) を使用しているのでしょうか。それとも、Wiki やその他の補助的なドキュメントを管理しているのでしょうか。
答え1
私はec2-consistent-snapshot(http://alestic.com/2009/09/ec2-consistent-snapshot) を使用してスナップショットを取得します (RHEL/CentOS 派生の Amazon Linux 上) - Perl で記述されており、API を直接使用します。スナップショットを取得するボリュームを指定すると、説明を追加できます。
(AWS コンソールでは、より細かい制御が必要な場合はタグを追加できますが、単純なバックアップではタグは必要ない可能性があり、上記で使用した Perl モジュール (Net::Amazon::EC2) ではまだサポートされていません)。
上記のスクリプトはスナップショットを削除しません(一貫して新しいスナップショットを作成するだけです(つまり、スナップショットの前にディスク/データベースをフリーズすることができます)。これはかなり一般的に使用されており、古いスナップショットを削除するための互換性のあるPerlスクリプトが見つからなかったため、独自のスクリプトを作成しました(http://www.thatsgeeky.com/2011/06/rotating-ebs-snapshots-ec2-prune-snapshots/)。これは、役割 (祖父-父-息子のローテーション) を適切に果たし、上記のスクリプトと同じ依存関係とパラメータを使用します。
もちろん、どちらも Cron 経由で実行するように設定されています。
(理論的には、同様のスクリプト (たとえば PHP や Ruby で書かれたスクリプト) をデータベースに接続し、取得したボリュームとスナップショットのログを独自に維持するのは簡単なはずです。各スナップショットには一意の ID があるため、それを記録しておけば、社内でさらに整理することは簡単にできるはずです。[ただし、バックアップの目的では、ボリューム ID と日付で十分な場合が多いです])
CLI ツールは使用しないでください。これらは Java で記述されており、直接 API 実装と比較すると非常に低速です。
答え2
Amazon は、エンタープライズ マーケットでアピールするために必要となる効果的な管理を行うために必要なすべての機能を徐々に追加しています。タグが追加され、ユーザーが特定の機能のみにアクセスできるようにする機能強化が予定されています。将来的には、スクリプトとデプロイメントが確実に処理されるようになります。私はこれらの機能を無料ツール ElastDream に追加しています。
答え3
EBSとスナップショットIDをテキストラベルに対してインデックスする独自のツールを作成する以外に、無料の右スケールアカウントを作成してニックネームを割り当てることが、EBS ボリュームとスナップショットを管理する最善の方法です。
個人的には、EC2 インスタンス、AMI、またはボリュームに覚えやすいラベルを割り当てることができないことは、現在の Amazon の提供内容の大きな欠点であると考えています。これは、考えるまでもないことです。
答え4
ElasticFox は、EC2 を (手動で) 管理するための最も便利なツールの 1 つです。ただし、重要な部分は、インスタンスを定期的にイメージ化すること、新しいインスタンスが起動したら自動初期化を設定することです。一時ドライブをパーティション分割してマウントすること、使用可能になったら EBS ボリュームをマウントすること、EBS、共有ストレージ、または S3 からファイルとデータベースを復元すること、サービス (MySQL、Apache、Tomcat など) を開始することです。