技術ブログ - 毎日が成長!

‘AWS’ タグのついている投稿

EBSタイプのインスタンスを他リージョンへ移行する手順

2010年8月20日 金曜日

みなさんこんにちは!インフラエンジニアの柳瀬です。

毎日暑いので、データセンターに行くのも嫌になってしまいますね。
あ、すいません。データセンターに行くのは暑くなくても嫌でした。インフラエンジニア失格ですね(笑)

さて、『全てのサーバーをクラウドに移行する事が出来たら、データセンターに行く事もなくなる!』と夢見ておりますが、シンガポールにあるAWSのデータセンターがオープンして3カ月程度たちました。

先日、US WestにあるEBSタイプインスタンスをAsia Pacificに移行したという事もあり、今回のエントリーではEBSタイプのインスタンスを他のリージョンへ移行する手順について書きたいと思います。

必要な前提条件は以下の通りです

  • 移行するインスタンスにはec2-api-toolsがインストールされている事
  • 移行するインスタンスにはec2-ami-toolsがインストールされている事
  • 移行するインスタンスにはec2-metadataがインストールされている事
  • 今回はUS WestからAsia Pacificへの移動する

移行手順の概要は以下の通りです

  • EBSタイプのインスタンス上でイメージファイルを作成してAsia PacificのS3バケットにアップロード
  • Asia Pacificデータセンターで起動出来るインスタンスストアタイプのAMIを作成して起動
  • インスタンスストアタイプのインスタンスからEBSタイプのAMIを作成

※ec2-api-toolsとec2-ami-toolsのインストールは割愛してあります

準備

ec2-metadataのインストール

# wget http://s3.amazonaws.com/ec2metadata/ec2-metadata
# chmod 755 ec2-metadata
# mv ec2-metadata /usr/bin/ 

fstabの状態を確認

# vi /etc/fstab
/dev/sda1  /         ext3    defaults        1 1
/dev/sda3  swap      swap    defaults        0 0
/dev/sdc   /mnt      ext3    defaults        0 0
none       /dev/pts  devpts  gid=5,mode=620  0 0
none       /dev/shm  tmpfs   defaults        0 0
none       /proc     proc    defaults        0 0
none       /sys      sysfs   defaults        0 0

イメージファイルを作成しAsia PacificのS3へアップ

ec2-bundle-volを実行してインスタンスのイメージファイルを作成

# ec2-bundle-vol -k 秘密鍵 -c X.509証明書 -u アカウントナンバー

Asia-PacificのS3バケットを作成後、S3へイメージファイルをアップロード

# ec2-upload-bundle -b 作成したS3バケット名/ -m image.manifest.xml -a アクセスキーID -s シークレットアクセスキー

S3のイメージファイルからinstance-storeタイプのAMIを作成し、起動

S3へアップロードしたイメージファイルからAMIを登録する

$ ec2-register 作成したS3バケット名/image.manifest.xml

作成したAMIからインスタンスを起動します(AWS Management Consoleからでも実行出来ます)

$ ec2-run-instances AMI-ID -k 起動する秘密鍵 --group セキュリティグループ

起動したインスタンスからイメージを作成してEBSに展開、設定変更

起動したインスタンスへログイン後、ec2-bundle-volを実行してインスタンスのイメージファイルを作成

# cd /mnt
# ec2-bundle-vol -d /mnt -k 秘密鍵 -c X.509証明書 -u アカウントナンバー

バンドルボリュームを一つのファイルにまとめる

# ec2-unbundle -k 秘密鍵 -m /mnt/image.manifest.xml -s /mnt/ -d /mnt/
Unbundle complete.

# ls -l /mnt | head -3
合計 2194968
-rw-r--r-- 1 root root 10737418240  8月 16 16:26 image
-rw-r--r-- 1 root root        9406  8月 16 16:35 image.manifest.xml

EC2インスタンスのゾーンを取得する。

# ec2-metadata -z
placement: ap-southeast-1a

ブートイメージ格納用のEBSボリュームを作成する(EBSボリュームIDをメモ)

# ec2-create-volume --size 10 --availability-zone ap-southeast-1a

作成したEBSボリュームをアタッチする

# ec2-attach-volume EBSボリュームID --instance インスタンスID --device /dev/sdh

イメージをEBSボリュームに戻す

# dd if=/mnt/image of=/dev/sdh
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 1254.23 seconds, 8.6 MB/s

EBSボリュームをマウントする

# mkdir /mnt/ebs
# mount /dev/sdh /mnt/ebs
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda1             9.9G  1.7G  7.7G  18% /
/dev/sdc              147G  2.3G  138G   2% /mnt
none                  851M     0  851M   0% /dev/shm
/dev/sdh              9.9G  1.7G  7.7G  18% /mnt/ebs

fstabを編集し、ローカルストレージの設定を削除する

# mv /mnt/ebs/etc/fstab /mnt/ebs/etc/fstab.bak
# cat /mnt/ebs/etc/fstab.bak | grep -v mnt > /mnt/ebs/etc/fstab
# cat /mnt/ebs/etc/fstab
/dev/sda1  /         ext3    defaults        1 1
/dev/sda3  swap      swap    defaults        0 0
none       /dev/pts  devpts  gid=5,mode=620  0 0
none       /dev/shm  tmpfs   defaults        0 0
none       /proc     proc    defaults        0 0
none       /sys      sysfs   defaults        0 0

EBSボリュームをアンマウントする

# umount /mnt/ebs
# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda1             9.9G  1.7G  7.7G  18% /
/dev/sdc              147G  2.3G  138G   2% /mnt
none                  851M     0  851M   0% /dev/shm

スナップショットを取得してAMIを作成

EBSボリュームのスナップショットを取得する(スナップショットのIDをメモ)

# ec2-create-snapshot EBSボリュームID --description hogehoge

カーネルIDを取得(カーネルIDをメモ)

# ec2-metadata -k
kernel-id: not available

RAMディスクIDを取得(RAMディスクIDをメモ)

# ec2-metadata -r
ramdisk-id: not available

スナップショットからAMIを登録する

# ec2-register --snapshot スナップショットのID \
--description="hogehoge" \
--architecture i386 \
--root-device-name /dev/sda1

EBSタイプのインスタンスを起動、各種設定

EC2インスタンスを起動する

# ec2-run-instances AMIのID \
--kernel カーネルID \
--ramdisk RAMディスクID \
--block-device-mapping /dev/sdc=ephemeral0 \
--availability-zone ap-southeast-1a \
--group セキュリティグループ \
--instance-initiated-shutdown-behavior stop \
--key 秘密鍵 \
-t m1.small

インスタンス起動後にローカルストレージのマウントとfstabの編集

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda1             9.9G  1.7G  7.7G  18% /
none                  851M     0  851M   0% /dev/shm

# fdisk -l
Disk /dev/sdc: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
ディスク /dev/sdc は正常な領域テーブルを含んでいません

# mount /dev/sdc /mnt

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda1             9.9G  1.7G  7.7G  18% /
none                  851M     0  851M   0% /dev/shm
/dev/sdc              147G  188M  140G   1% /mnt

# vi /etc/fstab
      1 /dev/sda1  /         ext3    defaults        1 1
      2 /dev/sda3  swap      swap    defaults        0 0
      3 /dev/sdc   /mnt      ext3    defaults        0 0
      4 none       /dev/pts  devpts  gid=5,mode=620  0 0
      5 none       /dev/shm  tmpfs   defaults        0 0
      6 none       /proc     proc    defaults        0 0
      7 none       /sys      sysfs   defaults        0 0

おわり

もう少し簡単なやり方があるかもしれません。
環境によってはfstabの設定などで手順が変わる場合があるかもしれませんが、ひとまず移行出来たので一安心です。

参考にさせて頂いたサイト

今回のエントリではこちらのサイトを参考にさせて頂きました。
ありがとうございましたー!

http://cloudbb.jp/research1/ConvertEBS-bootedAMI.htm

RightScaleを試してみました。

2010年7月21日 水曜日

こんちには!サーバーワークス柳瀬です!

弊社ではCloudworksというAmazon EC2を少し便利に使う事が出来る管理サービスを提供しておりますが、同じようなクラウド管理サービスはたくさんあります。先日RightScaleというAmazon EC2をメインとしたクラウド管理サービスを触ってみたので簡単にレポートしたいと思います。 RightScaleは有料版と無料で使用出来るものがあり、今回触ってみたのは無料版です。 ちなみに価格表を見るとFreeEditionで出来ることはやはり限定的となります。

RightScaleを使用するにはサインアップする必要があり、サインアップには以下のものを登録します。

  • 氏名
  • Email
  • 住所
  • 組織名
  • RightScaleにログイン
  • AWS Account Number
  • AWS Access Key ID
  • AWS Secret Access Key

その他いくつかの質問事項がありましたが、サインアップは簡単です。AWSのサインアップのように本人確認の電話などもありません(笑)

実際にログインしてみると無料版でも以下のようにAWSの基本サービスはRightScaleから操作できるようです。

  • EC2(インスタンスの起動や停止など)
  • S3(管理用ブラウザ)
  • ELB(ロードバランサーの起動、削除、インスタンスの追加)
  • EIP(EIPの取得、割り当て、削除)
  • RDS(インスタンスの起動や停止など)
  • インスタンスへの名前付け
  • インスタンスへのタグ付け
  • イベント情報をRSSで取得

また、RightScaleはAmazon EC2以外にもRackspace CloudやEucalyptusなど他のクラウド環境も管理出来る点は素晴らしいと感じました。 Rackspace CloudユーザーはアカウントとAPIのパスワードをRightsScaleに登録するだけで簡単に操作が出来るようになります。 インスタンスへの命名、タグ付けも出来るので、Amazon Management Consoleより管理しやすい印象を受けました。 料金の見積もり機能もあるので、必要以上の料金が発生していないか簡単に確認する事も出来ました。

ただし、管理画面が英語表記である事と機能が豊富な半面、少しだけ管理画面の作りがゴチャゴチャしてて分かりにくいかなと感じました。 個人的にはもう少しシンプルな作りが良いですね(汗)

弊社で提供しているCloudworksは日本語操作も可能ですし、シンプルで分かりやすいインターフェースなので、普段の管理はCloudworksで行い、サポートされていない機能についてはRightScaleで補うという運用が出来そうです。

【Cloudworksの画面イメージ】

【Cloudworksの機能一覧】

Amazon EC2やその他クラウドサービスを管理するようなアプリケーションはたくさんありますが、『これだけ使えばOK!』というものがないのが現状のようです。色々なアプリケーションを組み合わせて便利に使うといいう工夫が必要ですね。

JPUG 2010年夏セミナーに参加してきました

2010年6月29日 火曜日

サーバーワークスでインフラを担当している、柳瀬です。

少し時間が空いてしまいましたが、6月19日(土)にJPUG 2010年夏セミナーに『PostgreSQL on Amazon EC2の可能性』という内容でJPUG 2010年夏セミナーでお話しさせて頂きました。

弊社twitterアカウントからは既にご案内させて頂いておりますが、当日の様子と発表資料をUstreamとSlideShareで公開致しましたので、PostgreSQLやAmazon EC2にご興味がある方は是非ご覧ください。

発表時の様子

発表資料はこちら