Flash Media Server on AWSのインスタンスのバックアップ(カスタマイズAMI)を作成する

FMSのAMIはインスタンスストア(S3-Backed)のみしか存在しません。実際にFMS on AWSを使用することになると、作成したアプリケーションや設定ファイルなどを保存しておきたいものです。対策方法としてはいくつかありますが、今回はインスタンスをS3-Backed AMIとして保存する方法を説明しておきます(注意:この方法はオフィシャルではなく、最悪Kernelを壊してしまう可能性があるので自己責任で)。

インスタンスストアのインスタンスを元に自分用のAMIとして登録する方法があります。これにはEC2 AMI Toolsを使ってec2-bundle-volとec2-upload-bundleをインスタンス上で実行します。

1) まず、FMSのAMIにはEC2 AMI Toolsが用意されていないので、こちらのページ(http://aws.amazon.com/developertools/368)からツールをインスタンス上にダウンロードします。ツールを起動するのに必要なRubyが入っていないので「yum install ruby」でインストールします。

2) インスタンス上でec2-bundle-volをすると、必要なkernel moduleがないとエラーがでます

[root@ip-10-152-23-101 ~]# ec2-bundle-vol -d /mnt/bundle -k pk-****.pem -c cert-***.pem  -u ****-****-****
Please specify a value for arch [x86_64]:
Copying / into the image file /mnt/bundle/image...
Excluding:
         /sys
         /proc
         /dev/pts
         /proc/sys/fs/binfmt_misc
         /dev
         /media
         /mnt
         /proc
         /sys
         /mnt/bundle/image
         /mnt/img-mnt
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00158 seconds, 664 MB/s
mke2fs 1.39 (29-May-2006)
mount: Could not find any loop device. Maybe this kernel does not know
       about the loop device? (If so, recompile or `modprobe loop'.)
ERROR: execution failed: "mount -o loop /mnt/bundle/image /mnt/img-mnt"
3) インスタンスのKernelが「」なので、こちらのページ(http://s3.amazonaws.com/ec2-downloads/)から探したところ残念ながら一致するモジュールはなかった。しょうがなく、Kernelの近いモジュールを探し出し、これ「ec2-modules-2.6.18-164.6.1.el5CC_AKI01xen-x86_64.tgz」を選んだところ無事成功した

[root@ip-10-152-23-101 ~]# wget  http://s3.amazonaws.com/ec2-downloads/ec2-modules-2.6.18-164.6.1.el5CC_AKI01xen-x86_64.tgz
[root@ip-10-152-23-101 ~]# tar -zxvf ec2-modules-2.6.18-164.6.1.el5CC_AKI01xen-x86_64.tgz
[root@ip-10-152-23-101 modules]# ln -s lib 2.6.18-194.17.4.el5xen
[root@ip-10-152-23-101 modules]# depmod -a
[root@ip-10-152-23-101 modules]# modprobe loop 
(ここでエラーが出なければ無事モジュールインストール成功)

4) 再度ec2-bundle-volを実行すると、rsyncが入っていないためエラーがでるがこれはyum install rsyncで対応し無事bundleに成功

[root@ip-10-152-23-101 ~]# ec2-bundle-vol -d /mnt/bundle -k pk-****.pem -c cert-***.pem  -u ****-****-****
Please specify a value for arch [x86_64]:
Copying / into the image file /mnt/bundle/image...
Excluding:
         /sys
         /proc
         /dev/pts
         /proc/sys/fs/binfmt_misc
         /dev
         /media
         /mnt
         /proc
         /sys
         /mnt/bundle/image
         /mnt/img-mnt
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.001588 seconds, 660 MB/s
mke2fs 1.39 (29-May-2006)
Bundling image file...
Splitting /mnt/bundle/image.tar.gz.enc...
Created image.part.00
.
.
.
Created image.part.34
Generating digests for each part...
Digests generated.
Unable to read instance meta-data for ancestor-ami-ids
Creating bundle manifest...
ec2-bundle-vol complete.
5) bundleしたイメージをS3にアップロード
[root@ip-10-152-23-101 bundle]# ec2-upload-bundle -b <S3バケット名> -m image.manifest.xml -a <Access Key ID> -s <Secret Access Key>
Uploading bundled image parts to the S3 bucket ***-ami ...
Uploaded image.part.00
.
.
Uploaded image.part.34
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.
6) S3バケットにアップロードしたイメージをAMIとして登録
$ ec2-register ***-ami/image.manifest.xml -n "fms-ami" --region ap-northeast-1 -K pk-***.pem -C cert-***.pem
IMAGE   ami-52ee5b53
7) FMSのAMIはAdobe社が用意した有料AMIとして提供されています。これは月額ライセンス使用料金が含まれています。インスタンスをカスタマイズをしてAMIを作成したため、念のため下記のコマンドを作成したAMIで起動したインスタンスで実行し、FMSのAMIとして認識しているかを確認してください。「8CE147DA」はFMS AMIのプロダクトコードなので、これを確認できればOKです。
[root@ip-10-152-63-115 ~]# curl http://169.254.169.254/2007-03-01/meta-data/product-codes
8CE147DA

About tkobayashi

#aws #cloud #programming #web #ninja #gym #movies #scuba #twoandahalfmen http://www.koba206.com
This entry was posted in amazon web services and tagged . Bookmark the permalink.

Leave a Reply