AWS体験ハンズオン ~セキュア&スケーラブルウェブサービス構築~ at アマゾンジャパン

AWSのハンズオン(http://kokucheese.com/event/index/79427/)にいってきました。   ↓の資料が事前に共有されました。これに沿ってやってく感じ。 https://s3.amazonaws.com/horiyasu/presentations/building_3tier_on_vpc_ver7.pdf     ■ 本日のTODO   ・WordPressなシステムを作る ・3つのフェーズで。最小構成から徐々に。  物理的に離れた2つのデータセンターでアプリケーションサーバーとDBサーバーがデプロイ。  どちらかのデータセンターが壊れても大丈夫なブログサービス。 ・セキュア  VPCという閉域網を作る(プライベートIPを持ってる感じ)     VPCとは?   ・パブリックなインターネットの中にプライベートな閉域網を作れる。 ・オンプレミスとのハイブリッドが簡単に実現できる  AWSを社内インフラのように扱える ・アンデルセングループ  専用線で自社DCとVPCとを繋いでる。VPC上でバッチ処理原価計算。  バッチ動かす時だけVPC上にインスタンスを立ち上げる。 ・EC2を外で立ち上げる時と比べて細かくネットワークの制御が可能 ・VPNとかダイレクトコネクトとか使える ・サブネットやルートテーブルとか従来の概念がそのまま適用できる     VPCで出来る構成   ・CIDR指定&サブネット ・Route Table。Public SubnetとPrivate Subnet。違いはインターネットゲートウェイへの経路がOKかどうか。 ・VPC内ではサブネット同士の通信はNATとかカマさなくてもOK。 ・Security Group:Instanceレベルでの制御 ・NACL:Subnetレベルでの制御 ・VPCの中であればEC2のインスタンスを起動したままセキュリティグループの付け替えが可能 ・※EC2, ELB, Elastic IP, Security Group等を作成する際にVPCを明示的に指定する事 ・プライベートのIPを指定して起動可能。 ・Elastic IPの付け直しがVPCの中では不要     VPCのテンプレートを使って構築   ・テンプレート  Public SubnetをもったVPC  Public+PrivateでPrivateはVPN接続できるように     ■ ハンズオン フェーズ1   VPCを作って、Public Subnetを作る。 VPCを作る時にAvailability Zoneを明示しないとどこになるか分からないので "Edit Public Subnet"リンクから"ap-northeast-1a"に固定。 ↓igwなんちゃらってのがインターネットのゲートウェイ的なアレ。   EC2インスタンスを作る。amimotoのAMIを使う。 短縮URL入力するだけでCREATEするとこまでやってくれる⇒http://bit.ly/amimoto-vpc コレでWordPressホゲホゲをやってくれるらしい   EC2インスタンスを作る時に↓VPCを指定してやる。   セキュリティグループを設定してやって、22番と80番のポートをInbound Rulesに入れてやって Launch Instanceしてやる。   次にElastic IPの割り当てを行う。   インスタンス1つに対して複数のIPアドレスをアソシエイトする場合があるから、 その場合はNetwork Interfaceの方を使う。今回はインスタンスで。   IPアドレスが割り当てられてることを確認して、   SSHで接続しようとしたら、、できねぇ。。ww   USのリージョンでEC2インスタンス立てた時のpemファイルを使おうとしたら、 TOKYOリージョンではそれ使えないらしく、ECのインスタンス作り直し。。w 休憩時間中に焦ってやってなんとかSSHで繋いでWordPress入れるところまで。 #hogeって名前でpem作っちゃったのよね。。こうやってホゲが増えてってわけわかんなくなんだよな。。 #焦った時にテキトーな名前を付けなくなるスキルが欲しいです。笑

[root@ip-10-0-0-186 ~]# wp-setup
start...

Initialized empty Git repository in /tmp/amimoto/.git/
remote: Counting objects: 656, done.
remote: Compressing objects: 100% (276/276), done.
remote: Total 656 (delta 384), reused 634 (delta 362)
Receiving objects: 100% (656/656), 77.70 KiB, done.
Resolving deltas: 100% (384/384), done.
nginx を停止中:                                            [  OK  ]
nginx を起動中:                                            [  OK  ]
php-fpm を停止中:                                          [  OK  ]
php-fpm を起動中:                                          [  OK  ]
Shutting down MySQL (Percona Server).... SUCCESS!
Starting MySQL (Percona Server)..... SUCCESS!
WordPress install ...

--------------------------------------------------
 MySQL DataBase: i_614ab163
 MySQL User:     wp_e0234c289cea9
 MySQL Password: c66ba0c8faccc54b1867b9c44fc75bf8
--------------------------------------------------

※ このDB接続情報は後ほどmysqldumpを取って別サーバーに持ってく時に使うのでメモ。     ■ ハンズオン フェーズ2   DBサーバーへのアクセスは裏側だけ。インターネットからはアクセスさせない。 セキュリティグループで設定できるからアプリケーションサーバーからDBの接続許可は容易。 #コレ、ほんと一台一台設定するのと全然違いますやね。。。   DBサーバー立てて、ダンプ取って、ローカルからDBサーバーに移行とか。   Availability Zone(ap-northeast-1aとap-northeast-1c)それぞれにSubnetを作ります。 ・10.0.1.0/24   ・10.0.3.0/24   ↓こんな感じで出来てますねー、と。   そしたらデータベースのセキュリティグループを作ってやります。   でもって、Inboundをアプリケーションサーバーからだけにしたいわけなのですが、、 こうやって補完されるのがスゲーw 超便利。   MySQL5.5のDBパラメーターグループを作成してから、実際にDBを構築していきます。   DBサブネットグループを作成する際に、Subnet IDだけだと、パブリックの方なのか、プライベートの方なのかわかりにくいから、 両方追加してからパブリックの方消すテクニックとか。(10.0.1.0と10.0.3.0だけ残す)   DBインスタンス立てるのも楽チン。。Provisioned IOPS使うと最大で秒間3万回まで保証。 #実際の上限はRDBMSによっても違うけど、もうちょっと低い。けど、まぁ充分な感じ。   VPC内にDBインスタンス立てるわけなんですが、   Availability Zoneが"b"と"c"しか選べず。。本当は"a"にしたかったのですが…orz どうもデータセンターの統合とかあって、選べたり選べなかったりってのがある模様です。   この辺のバックアップとか計画停止してメンテするとか、Webの画面からポチポチできちゃうのナイスっすよね〜   mysqldumpがmysqldump: Got error: 1049とかいって動かなかったんだけど、 コピペミスっぽくて、なんとか出来て、ローカルから今回作った別のサーバーにもっていきます。。   WordPressのパスワードとか接続先書き換えて〜とか。   段々スピードアップしてきて、ついていくのがやっとになってきましたw      ■ ハンズオン フェーズ3   別のAvailability ZoneにもWebサーバーを構築してLoad Balancerで振り分けます。 ってか構成がよくわからなくなってきたのでまとめますw ・Webアプリ:ap-northeast-1a(既存)、ap-northeast-1c(これから立てる) ・DBサーバ:ap-northeast-1c   ap-northeast-1aのイメージを作成。 ノーリブートオプションが〜とかって話がありつつ、数クリックで簡単にAMI(マシンイメージ)を作成。   ap-northeast-1cの方に10.0.2.0で新しいサブネットを作ってやって、   ルーティングをインターネットからアクセスできる感じに。   でもって上記で作ったAMIのイメージを新しく作ったパブリックサブネットにローンチ!   Keyは本日慌てて作ったhogeでございますw   セキュリティグループは既存と一緒でOK。   最後にロードバランサかましてデータセンターまたいだ負荷分散。   ロードバランサ作ります。   今回作ったVPCを選択します。   SSLアクセラレーター的な説明とかもあったりしつつ、監視の設定。(落ちてる方には割り振らない) WordPressにはindex.htmlないので/だけにするとか。   どこに割り振るのって設定をして、   セキュリティグループ作って完了。   ELBが起動するまでにちょっと時間かかるけど、無事に設定完了。   VPCの中でLBを使うとセキュリティの細かい設定が出来るので便利ですとかって説明があって、 今回のハンズオンは終了!

 

すっげーボリュームだったけど、2時間半でここまで出来るの半端ない。 会社だったら↓こんな感じで1週間じゃ収まりきらないし。。 ・インフラ構成の資料作って ・部内でレビューしてもらって ・インフラの設計部署に相談のBTSのチケット作って ・インフラの設計部署とミーティングして ・構築の設計書作ってもらってレビューとかして ・インフラの構築部署に構築してもらって ・インフラの運用部署の人とアレやコレややって   時代変わったなって実感できる個人的にはインパクトのあるハンズオンでした。 あぁ、、AWS使って仕事したい。。。