【オススメ書籍】Amazon Web Services 基礎からのネットワーク&サーバー構築
こんにちは、tanakaです。最近タスク管理にTodoist、タイムトラッキングにTogglを使って、その日やってる作業を記録するようにしてます。ほとんど「計ってるだけ」なんですけど、とりあえず仕事に時間を使えているか、気軽に管理できるといいなと思います。
最近 Amazon Web Services 基礎からのネットワーク&サーバー構築を読んだので紹介します。
概要と感想
Amazon Web Services(以下AWS)でWebサーバ・DBサーバとそのネットワークを構築し、WordPressをインストールするまでを順を追って説明している本です。その中でVirtual Private Cloud(以下VPC), サブネット, ルートテーブル, EC2などのAWSの仕組みを解説して、Webサーバの最小構成に必要な知識がこれ1冊でわかるようになってます。スクリーンショットをたくさんのせているのでサクサク読めるのがよかったです。私は読むのに1日4~5時間 x 4日くらいかかりましたが速い人なら1~2日で読めそうなボリュームです。
読み進めてみると、EC2で仮想マシンを起動したあとのシェル操作はCentOSとほとんど代わりありませんでした。yumでカンタンにPHPやMySQLなどのミドルウェアをインストールできます。 AWSでネットワークを作るときに必要なTCP/IPの知識にも結構ページを割いているので、アプリケーションエンジニアだけど、インフラの知識を得たいときの1冊目としてもよいと思いました。ただ基本的なネットワークを理解する最低限の知識だけだと思うので、さらに詳しく学ぶ場合はTCP/IPの入門書を読むと良いかと思います。
注意点
すばやく理解するために使えると思いますがAWSのアカウント作成方法は載っていませんし、個別のシェル操作の解説は最小限に抑えているので、Linuxのコマンドにある程度なれていないと難しく感じるかも知れません。 AWSのアカウント取得にはクレジットカードが必要になります。アカウントを新規作成した場合は、1年間の無料枠で勉強できますが、私はアカウント取得から1年過ぎていたので$0.50(50セント)くらい料金がかかりました。
読み進めていて気になったところ
p.144 秘密鍵を転送しないでDBサーバにログインする(Mac・Linux向け エージェント転送)
WebサーバのEC2インスタンスを新規作成したときにmy-key.pem をダウンロードしましたが、ここではWebサーバにそのmy-key.pemを転送しています。 パーミッションで保護しているとはいえ、秘密鍵をリモートサーバに置くのはちょっと…という場合はエージェント転送を利用しましょう。シェルにて以下のコマンドを実行します。
ssh-agent zsh
ssh-add ~/.ssh/my-key.pem
ssh -A ec2-user@xx.xxx.xxx.xxx # ←鍵なしでログインできる
Webサーバにログインして ssh-add -l
を実行して
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx xxxxxxxx (RSA)
などと表示されれば成功しています。
Windows+PuTTYであれば pagent が使えます。
p.199 WiresharkをつかってTCPの3ウェイハンドシェイクを確認する
Wiresharkを使ってTCPの3ウェイハンドシェイクのパケット(「SYN」「SYN+ACK」「ACK」)を確認するのですが、フィルタ式が tcp.port==80 and ip.dst_host==インスタンスのIPアドレス
になっているので、リモート→ローカルのパケット「SYN+ACK」が表示されていません。正しくは
tcp.port==80 and (ip.dst_host==インスタンスのIPアドレス or ip.src_host==インスタンスのIPアドレス)
かと思います。