勉強会メモが眠っていたので公開します。
雑多なメモですが、主にAWSについての勉強会でした。
基本的なインフラ構成の概要とそれに関連する部分
サービスの規模によって選択するインフラを選択
- さくらVPS メモリ2G - 1700円
- 同上 メモリ4G - 3000円
- ドメイン - 1000円/年
- SSL証明書 - 4300円
友人や個人商店などのHP作成の場合は、firebaseやGithubPagesで十分かも。
(firebaseは一定まで、GithubPagesは完全無料で使える)
※スケールアウトする、画像をたくさん使うサービスはAWSを利用した方が良い。(S3だけ利用するのも良い)
動かすやつ
- Rails(webサーバ - unicorn)
- MySQL(DBサーバ)
- LB(webサーバの負荷分散)
AWSの構成
- DNS - Route53
- ロードバランサ - ELB(elastic loadbarancer)
- Webサーバ - EC2 t2.small 2G
- DBサーバ - RDS t2.small 2G
- ユーザリソース(画像)ストレージ - S3 落ちにくい
S3に移しておかないとスケール合うとし難い - キャッシュストア - ElasticCache(Memcache,Radis)
DBに持たせたくない、頻繁にアクセスがある単純なデータ(かつ消えてもいい) - メールアドレス - SES
ドメインの信頼性を担保する - 踏み台サーバ - microとかでインスタンスを作る
特定IPからしかSSH接続は受け付けないようにする
上記全部で、1万円前後位で用意できる。
(ユーザ1万人のサービスでもギリ耐えられる)
ポートについて(一般的なポート番号、sshの番号はセキュリティのために変更したりする)
22 ssh
80 http
443 https
SecurityGroupという単位で上記を管理する。
(EC2インスタンス単位でsecuretygroupeを設定、RDSに対しては、共通SecurityGroupのEC2からのリクエストしか受け付けない設定など)
ミドルウェアの構成
- webサーバ - Nginx × Unicorn
- デプロイ - Capistrano
リバースプロキシとは
裏で別ドメインにリクエストしたりする
AWS用語
- IAM - コンソールログイン(1アカウントに複数のユーザを作成できる)
- EC2 - 仮想サーバ
- ストレージ 30GB(テキストメインの場合)
- SecurityGroup - セキュリティルール
- キーペアはchmod 400にする(自分専用)
- AMI - EC2のイメージから複製可能
- EC2の設定を保存してくれる
- ELB - ロードバランサ
- ヘルスチェックの設定が主
- ElasticIP - 固定IP(デフォルトでは動的にIPが変わってしまう)
- Route53 - DNS
- Aレコード(ベース):kasuga.com - IPアドレス
- CNAMEレコード(エイリアス):sub.kasuga.com=nakao.com - 別ドメイン※ハテブなどのサービスのドメインなど
- お名前どっとcomなど、外部レジストラーサービスで作成したドメインをRoute53でhostedzoneを作成して、紐付けだけ行うのが一般的(AWSでドメイン作るのが若干高いため)
基本的に、root権限ではログインしない。
IAMでアクセス用のユーザを作成するのが基本
ヘルスチェック
定期的に正常なレスポンスを返すかインスタンスにアクセスを行い、正常でない場合はインスタンスを切り離す
(タイムアウト、チェック間隔、閾値の設定はELBインスタンス作成時に行う)
インスタンスの作成・複製
インスタンスを作成・複製した際には、下記の手順を必ず実行して、サーバを起動する必要がある。
(インスタンスを複製するのは、ロードバランシングするとき)
nginxインストール
- ec2インスタンスにssh接続する
ssh -i "セキュリティキー名.pem" アドレス
-
sudo su -
(root権限) yum update
yum install nginx
service nginx start
- securitygroupのインバウンドにHTTPを追加
- ブラウザから、パブリックIPに接続する
nginxの自動起動
- SSH接続した状態で下記コマンドを実行
# chkconfig | grep nginx
# chkconfig nginx on