More Related Content Similar to 小さく始めて後で困らないためのVPCとChefを使ったAWS運用 Similar to 小さく始めて後で困らないためのVPCとChefを使ったAWS運用 (20) 小さく始めて後で困らないためのVPCとChefを使ったAWS運用2. 目次
• 自己紹介
• 小さく始めて後で困らないために
•Amazon VPCを利用する
•Chefでサーバーを管理する
•Chefの導入に失敗しないために
7. AWSを利用しています
弊社ゲームのサーバー構成例
利用しているサービス
• Amazon VPC (Amazon Virtual Private Cloud)
• Amazon EC2 (Amazon Elastic Compute Cloud)
• Elastic Load Balancing
• EBS (Amazon Elastic Block Store)
• Elastic IP
• Amazon S3 (Amazon Simple Storage Service)
• Amazon Route 53
12. なぜVPCが必要か?
Amazon VPCを利用する
Amazon VPCトレーニング-VPCの説明 P6 より引用
http://www.slideshare.net/AmazonWebServicesJapan/amazon-vpcvpc
•ネットワークセキュリティを高める
•きめ細かなアクセス制御が可能
•Security Group, NACL, Route Table, etc
•VPN, DXを使って完全に外部と閉じた環境を実現
•自由なネットワーク設計が可能
•既存のネットワークルールを適用可能
•ローカルIPを固定で使用可能
16. なぜサービス開始時点?
Amazon VPCを利用する
•負荷が上がってしまうと?
•サービス人気 → 一刻も早くサーバーを増設したい!
•プロモーション → 落ちると困るから増設して対応しよう!
•プログラム変更 → 改修は時間がかかるからまずは増設で!※注1
•VPCのことなど忘れてEC2インスタンスがどんどん増える・・・
•気付いた時にはインターネット上に大量のEC2インスタンスが・・・
•規模大きくなってからのVPC移行は大変
注1 本来的には増設を行わずに原因を修正するべきですが、運用上の可能性として
25. 自動化すれば
Chefでサーバーを管理する
•手順が多い
•→ 手順はChefを実行するだけ
•同じ作業をサーバーN台分繰り返し
•→ 各サーバー(ノード)がどのレシピを使うか設定する
•確認項目が多い(目視! 目視! 目視!)
•→ Chefには冪等(べきとう)性があり同じ状態になる筈
•ただし、レシピが正しい前提にはなるので serverspec を使ってさらに確
認するケースもあるようです
•一子相伝☆秘伝のシェル
•→ Chefはオープンソースでノウハウも公開されている
26. Chefも最初から導入すべき?
Chefでサーバーを管理する
• 小規模だからこそ
• サーバーが増えれば増えるほど恩恵が得られる
• 最初から導入していれば
• Chefのレシピを修正して反映 → 日常的な運用の一つ
• 最初から導入していないと
• Chefそのものを導入する → 試験のコスト、導入のリスクが大きい
• 最初にChefを導入する時は、手動構築よりコスト増では?
• Chefのノウハウは次のサービスでも利用できる
• 構成の修正がある度に使えるので、すぐに元は取れると思われる
29. レシピ例 パッケージインストール
Chefでサーバーを管理する
# Packages
パッケージを
インストール
%w{httpd24 httpd24-devel httpd24-tools}.each do |pkg|
package pkg do
action :install
end
end
!
# Service
サービスに登録
サービスを起動
service "httpd" do
supports :status => true, :restart => true, :reload => true
action [ :enable, :start ]
end
!
# Configuration
ERBで書かれた
設定ファイルを
指定の権限で配置
template "httpd.conf" do
path "/etc/httpd/conf/httpd.conf"
source "httpd.conf.erb"
owner "root"
group "root"
mode 0644
end
30. レシピ例 crontab設定
Chefでサーバーを管理する
crontabを設定
cron "sync-s3" do
user "suzna"
weekday "*"
day "*"
hour "4"
minute "00"
command "s3cmd sync /home/suzna/backups s3://com.example/"
action :create
end
/var/spool/cron/suzna
# Chef Name: sync-s3
00 4 * * * s3cmd sync /home/suzna/backups s3://com.example/
31. 詳しくは入門Chef Soloがお勧め
Chefでサーバーを管理する
入門Chef Solo - Infrastructure as Code [Kindle版]
http://www.amazon.co.jp/入門Chef-Solo-Infrastructure-as-Code-ebook/dp/B00BSPH158
@naoya_ito さんによるChef解説本
サーバー状態管理フレームワークChef、そのスタンドアロ
ン版であるChef Soloの使い方について、はじめの一歩から
実戦投入レベルに至るまでを解説。試験環境の構築方法、自
動化コードの書き方、Chef のアーキテクチャや思想までを
実例を通して説明します。
36. × Chef実験環境 → 本番導入
Chefの導入に失敗しないために
•[問題] 実験用インスタンスで試しただけですぐに本番導入
•実験のみだと「実験が成功 = レシピが完成 = 実験終了」
•レシピが枯れていない → 本番で思わぬエラーなどに出会う可能性
•とはいえ、実験用の同じ構成で何回実行しても結果は同じ
•[解決] 開発環境をChefで管理するところから始める
•プログラムと同じように開発 -> ステージング -> 本番の流れにする
•できるだけ開発環境と本番環境のレシピを共通化
•開発環境で普段からChefを実行 → レシピが枯れる
•logrotateなども実際に歳月を重ねつつ動作を検証できる