狠狠撸

狠狠撸Share a Scribd company logo
『Amazon Web Services パターン別
構築?運用ガイド』 輪読会
~Chapter3 パターン別構築例 3.1節~
meow (id: meow_noisy)
2019/11/08(金)
このスライド
? 本の補足資料の位置付けです
? 具体的な手順は本を御覧ください
? ちなみに、私の本のバージョンは改定2版の初版第
3刷です
? 本の表記に違いがあるかもしれないので、予めご承知お
きください
3章の内容
? 2章までで、VPC、EC2、ELBの構築のノウハウを
学んだ
? 本章では、それらを組み合わせて、Webサービス
をよくある構成(パターン)で実現する方法を学ぶ
今日の内容(9つある節の1つまで)
? 3-1 EC2を利用した動的サイトの構築
? 3-2 Elastic Beanstalkによる構築レスな動的サイト
? 3-3 S3による静的サイトのサーバレス構築
? 3-4 Auto Scalingによる自動スケーリングシステム
の構築
? …
? 3-1は丁寧にやったほうがいい気がするので
章を3回分にわける
3-1
EC2を利用した動的サイトの構築
3-1
? ブログサービスである『WordPress』を自分で構
築する
? ねらいは、クラウドサービスの便利さを体験すること
? 基本的な流れは2章と同じ
? VPC、サブネット、インターネットゲートウェイ
? 追加要素
? RDS
AWS Cloud
VPC
Internet Internet
gateway
Availability Zone(ap-northeast-1a)
Availability Zone(ap-northeast-1c)
Public subnet Private subnet
Amazon RDS
instance
Private subnet
Amazon RDS
instance
Amazon EC2
構成
EC2にApache、その上にwordpressを乗せる
AWS Cloud
VPC
Internet Internet
gateway
Availability Zone(ap-northeast-1a)
Availability Zone(ap-northeast-1c)
Public subnet Private subnet
Amazon RDS
instance
Private subnet
Amazon RDS
instance
Amazon EC2
構成
EC2にApache、その上にwordpressを乗せる
VPC(p.183)
? WordPress用のものを作る
? 2章をやられた方は、IPアドレスが”10.1.0.0/16”
と若干異なることに注意
サブネット(p.185)
? 異なるアベイラビリティーゾーン2つにそれぞれ
パブリック用NW1つ、プライベート用NW1つをつくる
? WP-PublicSubnet-A
? WP-PrivateSubnet-A
? WP-PublicSubnet-C
? WP-PrivateSubnet-C
? パブリックはEC2、プライベートはRDS用
? なぜ、IPを間をあけて割り振ったのかはわからなかった
? 10.1.11.0/24の次が10.1.15.0/24
インターネットゲートウェイ(p.187)
? さっき作ったVPCにアタッチするだけ
ルートテーブル(p.189)
? 作成したら、パブリックサブネットと関連付け(WP-
PublicSubnet-{A,C})
? 「送信先」と「ターゲット」の違いが分かってない
? おそらく、「送信先」は、サブネットに流入するパケットのうち、
監視したいパターンをCIDR表記で書いている
? ターゲットは、「送信先」のパケットをどこに送るか(?)
? p.190で0.0.0.0/0とigw-…を追加しているのは、パブリッ
クサブネットが(アウトバウンドのために)インターネット
に接続できるようにするためだと思われる
? ルートテーブルとは何かに関しては下記のサイトがわかり
やすい
? http://awsinfra.site/2018/05/29/post-236/
セキュリティグループ(3-1節版)
? Webサーバ用のDMZ(どのIPからのアクセスも受け
付ける)
? SSH用; 本とは異なるが、ソースは「マイIP」を選択
? HTTP: 本(p.193)と異なり、ポートを8080に設定できな
い。80でよい。ソース(許可アクセス元)は「任意の場
所」を選択
? 8080にすると、後でApacheをいじらないといけなくなる
? DBサーバ用
? ソースをDMZからに絞る。
? また、ポートも3306を設定
DBサブネットグループ
? VPC上にRDSを起動するときは、DBサブネットグ
ループを作成する必要がある
? RDSのダッシュボードから作る
? すでに作っている、サブネット(WP-
PrivateSubnet-{A, C})と紐付ければよい
? サブネットとなにか違う?
RDSインスタンスの作成(p.197)
? 本と表記が異なる
? RDS > データベース > データベースの作成
? その後の画面が、デフォルトでは、本とUIが異な
るので、ブラウザ上部の「元のインターフェイス
に切り替えます」をクリックすれば、本の通りに
進められる
EC2内にミドルウェアをインストール
sudo yum install php php-mysql php-gd php-mbstring –y
sudo yum install mysql -y
# wordpressの取得
wget -O /tmp/wordpress-4.9.4-ja.tar.gz https://ja.wordpress.org/wordpress-4.9.4-ja.tar.gz
# 圧縮ファイルの解凍
sudo tar zxf /tmp/wordpress-4.9.4-ja.tar.gz -C /opt
# シンボリックリンクをはる
sudo ln -s /opt/wordpress/ /var/www/html/
#所持者が nobody nfsnobody になっているので
sudo chown -R apache:apache /opt/wordpress/
# EC2インスタンス起動時に起動できるようにする
sudo chkconfig httpd on
# Apacheの起動
sudo service httpd start
# Apacheの設定を更新(これをしないと、次回のインスタンス起動時にApacheが自動的に立ち上がらない)
sudo service httpd restart
EC2にTeratermなどでssh接続(p.153~参照)後、下記のコマンドを実行
MySQLのセットアップ
? 同じくEC2内でmysqlクライアントを呼び出す
mysql -u root -p -h [あなたのRDSエンドポイント]
# ここで、RDS作成時のパスワードを入力
CREATE USER 'wordpress-user'@'%' IDENTIFIED BY 'wordpress';
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress-user"@"%";
FLUSH PRIVILEGES;
WordPressにアクセス(p.206)
? http://<EC2インスタンスのパブリック
DNS>/wordpress/wp-admin/install-php
? 本のような、WordPressの設定画面が出たら成功
ロードバランシングする(p.208)
AWS Cloud
VPC
Internet Internet
gateway
Availability Zone(ap-northeast-1a)
Availability Zone(ap-northeast-1c)
Public subnet Private subnet
Amazon RDS
instance
Private subnet
Amazon RDS
instance
Amazon EC2
Elastic
Load
Balancing Public subnet
Amazon EC2
複数(2つ)のWordPressサーバを立て、かつ、ELBをつけて、アクセスの分散をする
EC2インスタンスの複製
1. EC2インスタンスのスナップショット(AMI)をとる
2. AMIから別のAZにEC2インスタンスを起動
? サブネットを奥笔-笔耻产濒颈肠厂耻产苍别迟-颁にする以外は一绪
ELBの設置
? 本の手順通りにやればできる
WordPressの設定変更
? WordPressの管理画面を開く
? WordPressアドレスとサイトアドレスを、ELBの
DNSに変更する
? 设定すると、再ログインを求められる
スティッキーセッション
? 今までの設定を行うと、ELBのDNSからAP-A,もし
くはAP-CのどちらかのWordPressサーバにランダ
ムでアクセスすることになる
? しかし、サーバ間でセッションを共有しているわ
けではないので、異なるサーバにアクセスするか
もしれない
? そこで、セッションとリクエスト先のサーバを結
びつけ、今後アクセスするサーバを固定するのが
スティッキーセッション
スティッキーセッションの本の記載
の注意
? p.218の下で、ELBでアクセスが振り分けられてい
るのを確認する項目があるが、スティッキーセッ
ションを張っているので、アクセス先サーバは基
本固定
? 維持時間設定はp.217上部で30分としているので、
確認できるのは30分後になる
? 異なるブラウザでアクセスすると確かめられるは
ず(未検証)
セキュリティグループの変更
? 現在は、EC2のDNSからそのままサーバにアクセス
できる
? ELBを設置したので、その受け口はいらない。
? なので、HTTP元を0.0.0.0/0で通している部分を、
ELBのみにする
HTTPSでのアクセス
? 通信のセキュリティを高めるために、HTTPSで接続す
るようにする。
? 証明書さえ用意すればELBには簡単にHTTPS接続でき
る
? 自己証明書
? 本来は自分の作った鍵を認証局に登録する必要があるが、料
金がかかるので、自分で「この鍵は本物ですよ」と認証する
? いわゆるオレオレ証明書
? (参考)ELBにおいては、無料でSSL証明書を発行できる
? https://www.skyarch.net/blog/?p=7942
鍵、証明書の作成
? opensslコマンドのあるOSで作成する
? 私は、windowsで行うのは面倒と判断し、VMのLinuxで
作った
ELBへ証明書の設定
? UIが若干違う
? ELBのリスナーページを開く
? プロトコル:ポート HTTPS:443
? セキュリティポリシー: ELBSecurityPolicy-2016-08
? デフォルトのSSL証明書: インポート
? インポート先: ACM
? 証明書のプライベートキー: .keyファイルの中身をコピペ
? 証明書本文: .crtの中身をコピペ
? 証明書チェーン: 未記入
ELBのセキュリティグループの更新
? HTTPSを受け付けるようにする
? このあと、WordPressでhttps接続が可能になる。
ただし、自己証明書なので警告画面が出る。
[補足]Marketplace
? 第三者が構築したAMIを利用できる
? RedmineやGitLabを自分でEC2に入って設定することな
く、すぐにインスタンスを起動できる
? 今、構築したwordpressのAMIもある
? ただし、利用料金がインスタンス利用コストに加えてか
かることに注意
おかたづけ
? EC2
? ELB(ロードバランサ)
? S3
? RDS
? ???くらいを落としておけば、
そんな大きな課金額にはならないはず
この記載が本にほしい所
ご清聴ありがとうございました
謝辞: 本スライドは以下の勉強会参加者の方々と議論したうえで作成
しました。ご協力感謝いたします。

More Related Content

AWSパターン別構築?運用ガイド 輪読会 3.1節