AWS設定やった手順まとめ
参考サイト
0から始めるAWS入門:概要
http://qiita.com/hiroshik1985/items/6433d5de97ac55fedfde
ここの連続の記事を参考にさせていただきながら設定していきます。
さいしょに
最初に以下のことを行っておく。
- アカウントを登録
- リージョンをTokyoに変更
概要
VPCの作成
VPCとは
VPCとは、
Amazon Virtual Private Cloud(Amazon VPC)を使用すると、定義した仮想ネットワーク内にアマゾン ウェブ サービス(AWS)リソースを起動できます。仮想ネットワークは、ご自身のデータセンターで操作していた従来のネットワークとよく似ていますが、AWS のスケーラブルなインフラストラクチャを使用できるというメリットがあります。 http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Introduction.html
ということらしく、
- サブネット単位・ホスト単位での柔軟なアクセス制御ができる
- パブリック・プライベートサブネットの切り分けができる
- 固定のローカルIPを使える
というメリットがある。
VPC作成
Create VPC
でVPCを作成する。設定はこんな感じで。10.0.0.0/16のアドレス空間を扱うVPCを作成する。
- Name tag: first-vpc
- CIDR block: 10.0.0.0/16
- tenancy: Default
tenancyとは、このVPCがハードウェアを専有するかどうか。
ということらしい。機密性が高かったりするとコンプライアンス的にハードウェアを占有する必要がある場合もあるのかな。
Subnet作成
そしたらこのVPC内にSubnetを作成する。
Subnetとは、
サブネットとは、大きなネットワークを複数の小さなネットワークに分割して管理する際の管理単位となる小さなネットワーク。 ... TCP/IPでコンピュータの住所をあらわすIPアドレスは、コンピュータが所属するサブネットのアドレス(ネットワークアドレス)と、サブネット内でのコンピュータ自身のアドレス(ホストアドレス)から構成されており、上位何ビットがネットワークアドレスかをあらわす値を「サブネットマスク」という。 http://e-words.jp/w/%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88.html
サブネットマスクがどこまでがネットワーク部でどこまでがホスト部なのかを決めてるのね。
Subnet作成
Available Zone(地理的にサーバーを離しておくことで緊急時に備えている)を設定する
この要領でもうひとつ別のAvailable ZoneのSubnetを作成しておく。
CIDRを10.0.1.0/24とかにする。
Internet Gatewayの追加
Create Internet GatewayでGatewayを作成して、それを選択したまま上のボタンのAttach to VPCでVPCと紐づける。
Internet Gatewayとは
インターネットゲートウェイは、VPC のインスタンスとインターネットとの間の通信を可能にする VPC コンポーネントであり、冗長性と高い可用性を備えており、水平スケーリングが可能です。そのため、ネットワークトラフィックに課される可用性のリスクや帯域幅の制約はありません。インターネットゲートウェイは 2 つの目的を果たします。1 つは、インターネットにルーティングできるトラフィックの送信先を VPC のルートテーブルに追加ことです。もう 1 つは、パブリック IP アドレスが割り当てられているインスタンスに対してネットワークアドレス変換 (NAT) を行うことです。
Routes Tableの追加
このままだとまだインターネットに接続できないので、Routes Tableを作成する。
下のRoutesからさっき作ったVPCに接続。
Route Tableとは
ルーティングテーブルとは、ルータや端末が保持するパケットの配送先に関する経路情報。
TCP/IPネットワークでパケットを送ろうとするとき、ルーティングテーブルを参照してパケットを送付すべき相手を判断する。ある端末から他の端末へとパケットを送ろうとする場合、目的の端末が自ネットワーク内にない場合、端末内にあるルーティングテーブルを参照し、パケットを中継させる端末を決定する。 http://www.atmarkit.co.jp/ait/articles/0111/01/news002.html
2. EC2インスタンス作成
EC2を選択して、Launch InstanceでEC2のインスタンスを作成。
OS
OSはAmazon Linuxを選択。Amazon LinuxはRed Hat Enterprise互換とのこと。
The Amazon Linux AMI is an EBS-backed, AWS-supported image. The default image includes AWS command line tools, Python, Ruby, Perl, and Java. The repositories include Docker, PHP, MySQL, PostgreSQL, and other packages.
いたれりつくせりかんある。
インスタンスタイプ
インスタンスタイプを選択する。
今回は12ヶ月無料のt2.microで。
そのまま設定を行っていく。
細かい設定に関してはこの記事を参考にさせていただきました。
ポートはSSHの22とHTTPの80だけ開けておく。
あと開けとくとしたらping用にAll ICMPとのちのちHTTPSくらいかな?
起動画面の前に、秘密鍵・公開鍵を生成しておく。このときに鍵をダウンロードできる。sshで接続するときに必要なので絶対なくさないこと。
ここで起動完了。
SSHで接続してみる
ということで早速立ち上げたインスタンスにsshで接続してみる。
さっき作ったInstanceのdashboard的なところからPublic IPが確認できる。
デフォルトのユーザはec2-user
になってる。
$ ssh ec2-user@{Public IP} -i ~/.ssh/first.pem
IPアドレスが違ったかセキュリティグループの設定を間違えたのか、このままだとsshで接続できなかったので他のサイトを参考に試してみた。
http://www.task-notes.com/entry/20141102/1414929682
ただこれだとセキュリティが甘々すぎてまずいのであとで変更する必要アリ。
ここでPingで疎通確認したいならICMP用のポートも空けておこう。
3.Nginxインストール
Nginxをインストールして、サーバーをスタートさせます。と言ってもやることはコマンド3つだけ。
$ sudo yum install -y nginx $ sudo /etc/init.d/nginx start $ sudo chkconfig nginx on
これでIPアドレスにアクセスすればひとまず200 OKが返ってくるはず。
4. ELBの作成
EC2のDashboardからLoad Balancersを選択して、Create Load Balancersを選択する。
Basic Configure
HTTPとHTTPSを設定。Load Balancer PortとInstance Portをそれぞれ、
- HTTP: 80, 80
- HTTPS: 443, 80
とする(デフォルトでこうなるはず)
これでインターネットからELBへ80、443番でリクエストが来た場合、該当EC2インスタンスの80番へフォワードされる。
次の画面でSSLの証明書を登録する必要があるので、今回はHTTPのみで。
Assign Security Groups
Load BalancerはHTTPSなしだとSecurityを改善しようという画面になって作ることができなかった。。SSLなしでも作る方法あるのだろうか。
5. RDS作成
Subnetを作成
RDSのところから、Create Subnet Groupを選択。Subnetを先に設定しないといけない。
パラメータグループの作成
DBのパラメータ設定をしておく。DBの初期設定を登録しておける。
自分の環境は、
$ psql -V psql (PostgreSQL) 9.4.4
だったのでpostgres9.4を選択。
Macの環境下で自分のpsqlのconfファイルなどを確認した場合、以下のパスを除けばいろいろ置いてあると思います。(brewでインストールした時)
$ ls /usr/local/var/postgres/
ひとまず
timezone = "Japan"
にしておきました。
セキュリティグループの作成
DB用のセキュリティグループを設定します。
VPC内からのみDBへのアクセスを許可する感じに。
Inbound RulesにPostgreSQLの設定を。初期Portは5432なんだね。
RDS起動!
そしたら前準備は整ったので、RDSを起動します。
トップのGet Started Nowのところから。
ここを参考に設定を進めてく
http://qiita.com/hiroshik1985/items/6643b7323183f82297b2
設定画面は一応キャプチャしておこう...笑
リードレプリカ作成
リードレプリカというものを作成しておきます。
これは、スケーリング、負荷分散のテクニックの一つで、
リードヘビー(読み込みが多い)なワークロードに関しては、読み込みを、複数の“リードレプリカ(読み込み用のレプリカ)”に分散させる http://aws.typepad.com/aws_japan/2010/10/amazon-rds%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BDread-replica%E3%81%AE%E7%99%BA%E8%A1%A8.html
というテクニックとのことです。また、AWSでのRead Replicaの機能は2010年ごろに発表されたものみたい。
全ての書き込みは、ソースDBインスタンスに対して行われます。リードレプリカは、ソースDBインスタンスに対する書き込みを全てトラックし、自分自身のデータをアップデートします。
そういう仕組みなのかーー。すごいななんか...。もっと自分も知識つけなきゃ。ということで今回は複数ではなくひとつだけRead Replicaを作成してみます。
DBのInstanceの立ち上げが終わった後に、そのInstanceを右クリックしたところから、Read Replicaの作成をすることができます。
適当にidentifierを設定して、AZをもう一つの方にしておく。
ボタン一発。。。すごい。。。