オンプレにあるバックアップデータをAWSに持っていくための基盤を用意する話
AWS側の基盤作り
AWSにデータをバックアップするための基盤が必要
色々やってみた結果、EC2インスタンスは必須で
- LVMのSnapshotをデータソースにし気合でrsyncでバックアップする!!!
- インスタンスは使い終わったら破棄したい
- できるだけ運用コストがかからない構成を考える
SAの方に相談したところStep Functionsが使えるとのことで、
State Machineを定義しLambda Functionを7個くらい書く
- sc1 volumeでコストを抑える
夜間しか使わないので、これで間に合えばOK
SFNと連携するActivityアプリケーションの開発
State Machineに対してget activity task APIでポーリングし、
トークンと前段のLambdaからインスタンス情報を受け取りバックアップを実行するシンプルなもの。
- Rubyで実装しました
- 長時間ポーリングするとタイムアウトしてしまう
必要な場合は、Net::ReadTimeout, Seahorse::Client::NetworkingErrorをrescueしてretryすることで
長時間ポーリングしていられる
バックアップ方法の変更と移行
- Activityアプリケーションはchefで配布し、cronもセットできる
Activity名をホスト名などの固有値にしておくと明示的に書かなくて良いので楽
- rsyncの場合、初回同期に膨大な時間がかかる
まずは適当なインスタンスを用意し、バックアップサーバーからインスタンスへある程度同期させておく