Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

267 views

Published on

アカウント無pdf DL: https://speakerdeck.com/meow_noisy/aws-book-3-1

2019年11月8日(金)にコワーキングスペース秋葉原Weeybleにて開催された、『AWSパターン別構築・運用ガイド 輪読会』で発表した資料です。事前公開版から一部改定を行いました。

Published in: Engineering
  • Be the first to comment

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

  1. 1. 『Amazon Web Services パターン別 構築・運用ガイド』 輪読会 ~Chapter3 パターン別構築例 3.1節~ meow (id: meow_noisy) 2019/11/08(金)
  2. 2. このスライド  本の補足資料の位置付けです  具体的な手順は本を御覧ください  ちなみに、私の本のバージョンは改定2版の初版第 3刷です  本の表記に違いがあるかもしれないので、予めご承知お きください
  3. 3. 3章の内容  2章までで、VPC、EC2、ELBの構築のノウハウを 学んだ  本章では、それらを組み合わせて、Webサービス をよくある構成(パターン)で実現する方法を学ぶ
  4. 4. 今日の内容(9つある節の1つまで)  3-1 EC2を利用した動的サイトの構築  3-2 Elastic Beanstalkによる構築レスな動的サイト  3-3 S3による静的サイトのサーバレス構築  3-4 Auto Scalingによる自動スケーリングシステム の構築  …  3-1は丁寧にやったほうがいい気がするので 章を3回分にわける
  5. 5. 3-1 EC2を利用した動的サイトの構築
  6. 6. 3-1  ブログサービスである『WordPress』を自分で構 築する  ねらいは、クラウドサービスの便利さを体験すること  基本的な流れは2章と同じ  VPC、サブネット、インターネットゲートウェイ  追加要素  RDS
  7. 7. 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を乗せる
  8. 8. 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を乗せる
  9. 9. VPC(p.183)  WordPress用のものを作る  2章をやられた方は、IPアドレスが”10.1.0.0/16” と若干異なることに注意
  10. 10. サブネット(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
  11. 11. インターネットゲートウェイ(p.187)  さっき作ったVPCにアタッチするだけ
  12. 12. ルートテーブル(p.189)  作成したら、パブリックサブネットと関連付け(WP- PublicSubnet-{A,C})  「送信先」と「ターゲット」の違いが分かってない  おそらく、「送信先」は、サブネットに流入するパケットのうち、 監視したいパターンをCIDR表記で書いている  ターゲットは、「送信先」のパケットをどこに送るか(?)  p.190で0.0.0.0/0とigw-…を追加しているのは、パブリッ クサブネットが(アウトバウンドのために)インターネット に接続できるようにするためだと思われる  ルートテーブルとは何かに関しては下記のサイトがわかり やすい  http://awsinfra.site/2018/05/29/post-236/
  13. 13. セキュリティグループ(3-1節版)  Webサーバ用のDMZ(どのIPからのアクセスも受け 付ける)  SSH用; 本とは異なるが、ソースは「マイIP」を選択  HTTP: 本(p.193)と異なり、ポートを8080に設定できな い。80でよい。ソース(許可アクセス元)は「任意の場 所」を選択  8080にすると、後でApacheをいじらないといけなくなる  DBサーバ用  ソースをDMZからに絞る。  また、ポートも3306を設定
  14. 14. DBサブネットグループ  VPC上にRDSを起動するときは、DBサブネットグ ループを作成する必要がある  RDSのダッシュボードから作る  すでに作っている、サブネット(WP- PrivateSubnet-{A, C})と紐付ければよい  サブネットとなにか違う?
  15. 15. RDSインスタンスの作成(p.197)  本と表記が異なる  RDS > データベース > データベースの作成  その後の画面が、デフォルトでは、本とUIが異な るので、ブラウザ上部の「元のインターフェイス に切り替えます」をクリックすれば、本の通りに 進められる
  16. 16. 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~参照)後、下記のコマンドを実行
  17. 17. 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;
  18. 18. WordPressにアクセス(p.206)  http://<EC2インスタンスのパブリック DNS>/wordpress/wp-admin/install-php  本のような、WordPressの設定画面が出たら成功
  19. 19. ロードバランシングする(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をつけて、アクセスの分散をする
  20. 20. EC2インスタンスの複製 1. EC2インスタンスのスナップショット(AMI)をとる 2. AMIから別のAZにEC2インスタンスを起動  サブネットをWP-PublicSubnet-Cにする以外は一緒
  21. 21. ELBの設置  本の手順通りにやればできる
  22. 22. WordPressの設定変更  WordPressの管理画面を開く  WordPressアドレスとサイトアドレスを、ELBの DNSに変更する  設定すると、再ログインを求められる
  23. 23. スティッキーセッション  今までの設定を行うと、ELBのDNSからAP-A,もし くはAP-CのどちらかのWordPressサーバにランダ ムでアクセスすることになる  しかし、サーバ間でセッションを共有しているわ けではないので、異なるサーバにアクセスするか もしれない  そこで、セッションとリクエスト先のサーバを結 びつけ、今後アクセスするサーバを固定するのが スティッキーセッション
  24. 24. スティッキーセッションの本の記載 の注意  p.218の下で、ELBでアクセスが振り分けられてい るのを確認する項目があるが、スティッキーセッ ションを張っているので、アクセス先サーバは基 本固定  維持時間設定はp.217上部で30分としているので、 確認できるのは30分後になる  異なるブラウザでアクセスすると確かめられるは ず(未検証)
  25. 25. セキュリティグループの変更  現在は、EC2のDNSからそのままサーバにアクセス できる  ELBを設置したので、その受け口はいらない。  なので、HTTP元を0.0.0.0/0で通している部分を、 ELBのみにする
  26. 26. HTTPSでのアクセス  通信のセキュリティを高めるために、HTTPSで接続す るようにする。  証明書さえ用意すればELBには簡単にHTTPS接続でき る  自己証明書  本来は自分の作った鍵を認証局に登録する必要があるが、料 金がかかるので、自分で「この鍵は本物ですよ」と認証する  いわゆるオレオレ証明書  (参考)ELBにおいては、無料でSSL証明書を発行できる  https://www.skyarch.net/blog/?p=7942
  27. 27. 鍵、証明書の作成  opensslコマンドのあるOSで作成する  私は、windowsで行うのは面倒と判断し、VMのLinuxで 作った
  28. 28. ELBへ証明書の設定  UIが若干違う  ELBのリスナーページを開く  プロトコル:ポート HTTPS:443  セキュリティポリシー: ELBSecurityPolicy-2016-08  デフォルトのSSL証明書: インポート  インポート先: ACM  証明書のプライベートキー: .keyファイルの中身をコピペ  証明書本文: .crtの中身をコピペ  証明書チェーン: 未記入
  29. 29. ELBのセキュリティグループの更新  HTTPSを受け付けるようにする  このあと、WordPressでhttps接続が可能になる。 ただし、自己証明書なので警告画面が出る。
  30. 30. [補足]Marketplace  第三者が構築したAMIを利用できる  RedmineやGitLabを自分でEC2に入って設定することな く、すぐにインスタンスを起動できる  今、構築したwordpressのAMIもある  ただし、利用料金がインスタンス利用コストに加えてか かることに注意
  31. 31. おかたづけ  EC2  ELB(ロードバランサ)  S3  RDS  ・・・くらいを落としておけば、 そんな大きな課金額にはならないはず この記載が本にほしい所
  32. 32. ご清聴ありがとうございました 謝辞: 本スライドは以下の勉強会参加者の方々と議論したうえで作成 しました。ご協力感謝いたします。

×