AWS Storage Gateway入門 – とりあえず構築してみよう
こんにちは。望月です。
今日はAWS Storage Gatewayを触ってみました。AWSのサービスの中でもとっつきにくい印象のあるStorage Gatewayを検証していこうと思います。
Storage Gatewayとは?
Storage Gatewayは、AWS上のストレージをオンプレミスのアプライアンスと接続し、バックアップを行うためのサービスです。
元々は、オンプレミスのVMware ESXi上で動作しているファイルサーバ等のバックアップを手軽に行うためのソリューションとして登場しました。イメージとしては以下の図のようなものです。
その後Hyper-VやEC2上でも動作するようになり、適用範囲にも広がりが出てきていると思います。詳しくは以下のスライドを御覧ください。
今回は、上のスライドで紹介されているうちのGateway-Cached Volumesを構築していきます。EC2上にGatewayを作成し、別のインスタンスから接続するところまで行いたいと思います。
構築
今回構築するシステムのイメージは以下の通りです。
Storage Gatewayを利用するには、専用のEC2インスタンスが必要です。Storage Gatewayのクライアントは、このEC2に対してiSCSI接続を行い、Storage Gateway経由でS3上の仮想ボリュームをマウントするイメージになります。
手順は、おおまかに以下のとおりになります。
- AWS上にGateway用インスタンスを作成する
- Storage Gatewayの設定を行う
- EC2上の別インスタンスからiSCSI接続する
AWS上にGateway用インスタンスを作成する
まずはManagement Consoleにログインし、Storage Gatewayの画面を覗いてみましょう。
[Deploy a new Gateway on Amazon EC2]をクリックしてみます。
作成するための手順が紹介されています。簡単に訳すと、
- MarketplaceからGateway用のインスタンスを起動する
- Upload buffer用とCache用のEBSをGatewayインスタンスにアタッチする
- Gateway用インスタンスのPublic IPアドレスを取得する
- Public IPアドレスを画面下部に入力し、[Proceed to Activation]を押す
と言っています。まずはGateway用インスタンスを立ち上げましょう。画面にMarketplaceへのリンクがあるので、それを押せばGateway用AMIの画面に遷移します。
右上のボタンを押して、Gateway用のインスタンスを起動しましょう。起動が完了したら、起動したインスタンスのインスタンスID(i-xxxxxxxの部分)と、Public IPを控えておきます。
次に、起動したインスタンスにupload buffer用とcache用にEBSを2つアタッチします。EC2のManagement Console左側の[Volumes]を開き、[Create Volume]で2つ作成しましょう。今回はupload buffer用に5GiB, cache用に10GiB割り当てました。
作成したEBSは、画面上部の[Actions] -> [Attach Volume]からアタッチします。ここまでで4つのEBSがGateway要インスタンスにアタッチされていると思います。(AMI付属のEBS2つ、新規作成のEBS2つ)
ここまで完了したら、先ほどのStorage Gatewayの画面に戻り、GatewayインスタンスのPublic IPアドレスを入力して、[Proceed to Activation]ボタンを押してください。下のような画面が表示されると思います。
ここで適宜項目を入力し、次の画面に進めばActivation完了です。が、あとは保存する総容量の指定とローカルディスクの設定が必要になります。
Storage Gatewayの設定
今までの手順が完了すると、次のような画面が表示されていると思います。[Create Volume]をクリックして、設定画面に移ります。
表示されているのが先ほど作成したEBSになります。それぞれupload bufferとcacheに割り当てました。
次の画面では、Capacityを指定します。ここに指定した値が、このStorage Gatewayが利用できる総容量となります。この値がiSCSI接続した際にクライアントから見える容量となります。
iSCSIターゲット名は適当な値を入力してください。ここの値を後でEC2から接続する際に利用します。Snapshot IDは空欄でOKです。
これでStorage Gateway側の設定は完了です。
EC2インスタンスから接続する
ここまで長かったですが、あとはEC2上のインスタンスから接続するだけです。
その前に、Gateway用インスタンスに設定されているSecurity Groupが、iSCSI接続を受け入れるように3260番ポートを開放しておきます。
あとは同一VPC内にインスタンスを別途立ち上げ、通常のiSCSIコマンドでマウントをしてあげれば大丈夫です。ただし未フォーマットのディスクなので、ファイルシステムを作って上げる必要があります。
$ sudo yum install iscsi-initiator-utils (出力省略) $ sudo /sbin/iscsiadm --mode discovery --type sendtargets --portal 172.31.0.139:3260 172.31.0.139:3260,1 iqn.1997-05.com.amazon:myvolume $ sudo /sbin/iscsiadm --mode node --targetname iqn.1997-05.com.amazon:myvolume --portal GATEWAY_IP:3260,1 --login $ sudo fdisk -l Disk /dev/xvda1: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 $ sudo mkfs.ext4 /dev/sda (出力省略) $ sudo mkdir /data $ sudo mount -t ext4 /dev/sda /data/ $ mount /dev/xvda1 on / type ext4 (rw,noatime) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sda on /data type ext4 (rw) # 1Gのファイル作成 $ sudo dd if=/dev/zero of=/data/sampledata bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 121.14 s, 8.9 MB/s
最後の手順で、巨大なファイルを作成してみました。このコマンドを実行後にManagement Consoleを見てみると、[Upload buffer used]のところの値が変化していることがわかると思います。S3にアップロードされるファイルが一度Gatewayでキャッシュされ、順次S3へと保管されていきます。
まとめ
文字にするとちょっとややこしいですが、これにて初期導入は完了となります。ファイルサーバのバックアップ用途で利用する場合は、iSCSI経由でマウントしたディスクをデータ領域として利用すればOKです。
しかし、Storage Gatewayではデータ永続保存先にS3を利用しているため、正直なところアップロード速度はあまり速くありません。そのためパフォーマンスチューニングは運用上必須になってくると思います。まず第一歩、検証から始めてみてはいかがでしょうか。