ゲーム事業本部 恋愛ゲームチーム 藤原 涼!
ゲームインフラチーム 本田 恭!
AutoScale ×
ゲーム
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
運用効率化に向けたAWS導入背景から運用のお話
AWSをさらに活用するための技術的なお話
∼後半∼
∼前半∼
Agenda
1:サービスの特徴とシステム
2:AWSの導入に向けて
3:AWSを利用して発生した問題
Agenda
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
自己紹介
藤原 涼 (ふじわらりょう)
-
2012年新卒入社 (3年目)
-
Twitter @megadreams14
AWSを使い始めた日
-
2013年6月17日(月)
女性向け
「恋愛ソーシャルゲーム」
における導入事例
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
恋愛ソーシャルゲームとは
華やかで
甘いストーリー
が楽しめる
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
アバターなどを
着せ替えて可愛く
コーディネイトできる
恋愛ソーシャルゲームとは
http://ikemen.cybird.ne.jp/of/play.html
恋愛ソーシャルゲームとは
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
現在提供している恋愛ソーシャルゲーム
イケメン大奥
恋の園
イケメン恋戦
平清盛
100
日間のプリンセス
もうひとつのイケメン王宮
イケメン王宮
真夜中のシンデレラ
新章イケメン大奥
禁じられた恋
イケメン幕末
運命の恋
ラブセン
∼V6とヒミツの恋∼
美男宮殿
月下灰姑娘
美男大奧
江戶奇緣
イケメン夜曲
ロミオと秘密のジュリエット
한밤중의 신데렐라
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
現在提供している恋愛ソーシャルゲーム
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
d
ゲーム
現在提供している恋愛ソーシャルゲーム
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
d
ゲーム
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
朝と夜にアクセス上昇
月1回の大きなイベント
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
朝と夜にアクセス上昇
弊社恋愛ソーシャルゲームの特徴
通勤通学時間帯・日付変更時に集中
http://gamebiz.jp/?p=127080
1
日のアクセス数の変化
朝
夜
月1回の大きなイベント
弊社恋愛ソーシャルゲームの特徴
通常の約5倍のアクセス
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
月1回の大きなイベント
弊社恋愛ソーシャルゲームの特徴
アバターの付与
華やかにドレスアップ♪
「100日間のプリンセス◆もうひとつのイケメン王宮」より
月1回の大きなイベント
弊社恋愛ソーシャルゲームの特徴
アバターの付与
華やかにドレスアップ♪
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
弊社恋愛ソーシャルゲームのシステム要件
Web LoadBarancer
Web
サーバ
アバター合成サーバ
Server Server Server
Image LoadBarancer
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1:サービスの特徴とシステム
∼前半∼
2:AWSの導入に向けて
3:AWSを利用して発生した問題
Agenda
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
イベント前のサーバ追加
手動でサーバ追加
サーバの追加に時間がかかる
コンテンツ数が多い
イベント前のサーバ追加
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
LB
AWS
を使うまでの苦労
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
事前追加や障害対応
アラートメール
状況確認
サーバ追加
手動でサーバ追加
AWS
を使うまでの苦労
30分∼2時間程度
サーバの追加に時間がかかる
サーバ追加
ステータスが変わらない
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
機会損失
運用コスト
運用上の課題
AutoScale
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
とは
サーバの負荷に合わせて
自動でサーバを追加/削除する機能
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
サーバ構築の自動化
スケールイン時のデータの扱い
増えるだけでなく減ること
も考慮
ログファイル
セッションデータ
画像ファイル
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
サーバ構築の自動化
スケールイン時のデータの扱い
AMI
画像ファイル
Apacheの設定
ミドルウェアのインストール
AMI
で実現可能・・・だが
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
現在提供している恋愛ソーシャルゲーム
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
GREE
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
Ameba
AppStore
GooglePlay
AppStore
GooglePlay
AppStore
GooglePlay
GREE
Mobage
Ameba
AppStore
GooglePlay
d
ゲーム
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
サーバ構築の自動化を目指して
手動によるミスを無くすことが出来る
サーバごとに設定値を変更出来る
繰り返し作業を自動化出来る
Chef
導入理由
NTP
のインストール
ユーザディレクトリの設定
yum: epel
レポジトリ追加
yum: remi
レポジトリ追加
yum: td
レポジトリ追加
yum
のキャッシュをクリア
swap
領域の設定
SELinux
の設定
ユーザの作成
sudo
権限の設定
ファイアウォールの設定
【AWS】CLIのインストール
【AWS】S3コマンドのインストール
コンパイル系パッケージインストール
mail,sar
コマンドなどのインストール
git
のインストール
社内gitレポジトリへのアクセス設定
SWFEditor
のインストール
Imagick
のインストール
PHP
のインストール
PHP
パッケージのインストール
MySQL
クライアントのインストール
Fluentd
クライアントインストール
Apache:
インストール
ZABBIX: agent
インストール
Chef:knife
コマンドの設定
起動スクリプトの配置
起動スクリプトのデーモン化
ホストの設定
【AWS】ディスクパーティションの設定
Apache : virtualhosts
の設定
Apache :
起動
ZABBIX: agent
起動
Fluentd : td-agent:
起動
全34項目
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
NTP
のインストール
ユーザディレクトリの設定
yum: epel
レポジトリ追加
yum: remi
レポジトリ追加
yum: td
レポジトリ追加
yum
のキャッシュをクリア
swap
領域の設定
SELinux
の設定
ユーザの作成
sudo
権限の設定
ファイアウォールの設定
【AWS】CLIのインストール
【AWS】S3コマンドのインストール
コンパイル系パッケージインストール
mail,sar
コマンドなどのインストール
git
のインストール
社内gitレポジトリへのアクセス設定
SWFEditor
のインストール
Imagick
のインストール
全34項目
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
PHP
のインストール
PHP
パッケージのインストール
MySQL
クライアントのインストール
Fluentd
クライアントインストール
Apache:
インストール
ZABBIX: agent
インストール
Chef:knife
コマンドの設定
起動スクリプトの配置
起動スクリプトのデーモン化
ホストの設定
【AWS】ディスクパーティションの設定
Apache : virtualhosts
の設定
Apache :
起動
ZABBIX: agent
起動
Fluentd : td-agent:
起動
約20分
NTP
ユーザディレクトリの設定
yum:
yum: remi
yum: td
yum
swap
SELinux
ユーザの作成
sudo
ファイアウォールの設定
【
【
コンパイル系パッケージインストール
mail,sar
git
社内
SWFEditor
Imagick
全34項目
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
PHP
PHP
MySQL
Fluentd
Apache:
ZABBIX: agent
Chef:knife
起動スクリプトの配置
起動スクリプトのデーモン化
ホストの設定
【
Apache :
Apache
ZABBIX: agent
Fluentd : td-agent
サーバ構築をスピードよく
約20分
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
イケメン幕末
運命の恋
イケメン夜曲
ロミオと秘密のジュリエット
共通の部分はAMIの中で定義
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
イケメン夜曲用AMI
イケメン幕末用AMI
設定の違いのみをChefで実行
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
イケメン幕末
運命の恋
イケメン夜曲
ロミオと秘密のジュリエット
GREE
イケメン夜曲用AMI
GooglePlay
イケメン幕末用AMI
AppStore
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
NTP
のインストール
ユーザディレクトリの設定
yum: epel
レポジトリ追加
yum: remi
レポジトリ追加
yum: td
レポジトリ追加
yum
のキャッシュをクリア
swap
領域の設定
SELinux
の設定
ユーザの作成
sudo
権限の設定
ファイアウォールの設定
【AWS】CLIのインストール
【AWS】S3コマンドのインストール
コンパイル系パッケージインストール
mail,sar
コマンドなどのインストール
git
のインストール
社内gitレポジトリへのアクセス設定
SWFEditor
のインストール
Imagick
のインストール
PHP
のインストール
PHP
パッケージのインストール
MySQL
クライアントのインストール
Fluentd
クライアントインストール
Apache:
インストール
ZABBIX: agent
インストール
Chef:knife
コマンドの設定
起動スクリプトの配置
起動スクリプトのデーモン化
ホストの設定
【AWS】ディスクパーティションの設定
Apache : virtualhosts
の設定
Apache :
起動
ZABBIX: agent
起動
Fluentd : td-agent:
起動
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
共通28項目
全34項目
NTP
のインストール
ユーザディレクトリの設定
yum: epel
レポジトリ追加
yum: remi
レポジトリ追加
yum: td
レポジトリ追加
yum
のキャッシュをクリア
swap
領域の設定
SELinux
の設定
ユーザの作成
sudo
権限の設定
ファイアウォールの設定
【AWS】CLIのインストール
【AWS】S3コマンドのインストール
コンパイル系パッケージインストール
mail,sar
コマンドなどのインストール
git
のインストール
社内gitレポジトリへのアクセス設定
SWFEditor
のインストール
Imagick
のインストール
PHP
のインストール
PHP
パッケージのインストール
MySQL
クライアントのインストール
Fluentd
クライアントインストール
Apache:
インストール
ZABBIX: agent
インストール
Chef:knife
コマンドの設定
起動スクリプトの配置
起動スクリプトのデーモン化
ホストの設定
【AWS】ディスクパーティションの設定
Apache : virtualhosts
の設定
Apache :
起動
ZABBIX: agent
起動
Fluentd : td-agent:
起動
全34
項目
サーバ構築の自動化を目指して ∼Chefで設定したこと∼
設定6項目
約5分
+ デプロイ
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Chef
× AWS
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
を利用した構成図
ゾーンA
ゾーンB
各ゾーンに均等にインスタンスを配置
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンドインスタンス
Auto Scaling Group
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
CloudWatchでサーバ監視
CloudWatch
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
CloudWatchでサーバ監視
CloudWatch
アラートを検知
Alarm
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
CloudWatchでサーバ監視
CloudWatch
Alarm
AMIから起動
AMI
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
CloudWatchでサーバ監視
CloudWatch
Alarm
Chefの実行
AMI
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
CloudWatchでサーバ監視
CloudWatch
Alarm
2台ずつ追加
AMI
EC2
Instance
EC2
Instance
AutoScale
による運用が順調にスタート
AutoScale
を利用した構成図
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1:サービスの特徴とシステム
∼前半∼
2:AWSを導入に向けて
3:AWSを利用して発生した問題
Agenda
AWS
を使ってみて
利便性
オンデマンドの価格
機能とサポート
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
価格・・・高い問題
価格・・・やはり高い問題
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
リザーブドインスタンスとは
予約金を一括で支払うことで、
期間内の時間あたりの料金が安くなる
インスタンス性能の変更に制約がある
年単位での支払い
∼特徴∼
リザーブドインスタンスとは
予約金を一括で支払うことで、
期間内の時間あたりの料金が安くなる
インスタンス性能の変更に制約がある
年単位での支払い
∼特徴∼
性能決めつけはリスク
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
価格・・・やはり高い問題
スポットインスタンスとは
需要と共有のバランス
によって
サーバの価格が決まる入札制度
必要なときに短時間だけ利用
約5分の1の価格
∼特徴∼
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Instance Type
Availability zone
それぞれ価格が違う
スポットインスタンスの特徴
2:サーバ価格より入札額が低いと
1:価格が変動
・サーバが落ちる
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1:価格が変動
2:サーバ価格より入札額が低いと落ちる
入札額
<=
現在のサーバ価格
サーバが落ちる
※自動でサーバが落ちた場合、1時間未満の使用料については課金されない
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
2:サーバ価格より入札額が低いと起動しない
入札額
<=
現在のサーバ価格
これからサーバを利用する場合
スポットインスタンスの特徴
2:サーバ価格より入札額が低いと
1:価格が変動
・サーバが落ちる
・
本番での運用はリスク
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
スポットインスタンスの問題点
価格高くなる
サーバ落ちる
サーバ起動しない
価格情報を監視
CYBIRD
が考えたスポットの解決策1
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
解決策1:価格情報を監視
価格変動の状況を把握する
解決策1:価格情報を監視
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
価格情報を監視・記録
スポットとAutoScale
CYBIRD
が考えたスポットの解決策2
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
入札価格の変更はConfigの変更だけで可能
解決策2:AutoScaleの利用
AutoScale
の利点
解決策2:AutoScaleの利用
AutoScalingGroup
・インスタンス起動数
・LaunchConfigの指定
LaunchConfig
・インスタンスタイプ
・スポットインスタンス入札額
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
入札価格の変更はConfigの変更だけで可能
解決策2:インスタンス起動数を担保する仕組み
AutoScale
の利点
AutoScalingGroup
・インスタンス起動数
・LaunchConfigの指定
LaunchConfig
・インスタンスタイプ
・スポットインスタンス入札額
解決策2:インスタンス起動数を担保する仕組み
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
解決策2:インスタンス起動数を担保する仕組み
オンデマンド
インスタンス
すぐにサーバ起動
スポットインスタンス
入札価格足りている
入札後サーバ起動
スポットインスタンス
入札価格足りていない
入札待ちが続く
設定したサーバの起動数に足りていない時
解決策2:インスタンス起動数を担保する仕組み
オンデマンド
インスタンス
すぐにサーバ起動
スポットインスタンス
入札価格足りている
入札後サーバ起動
スポットインスタンス
入札価格足りていない
入札待ちが続く
設定したサーバの起動数に足りていない時
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
入札価格の変更はConfigの変更だけで可能
AutoScale
の利点
設定されたインスタンス起動数を担保する仕組み
解決策2:AutoScaleの利用
AutoScalingGroup
・インスタンス起動数
・LaunchConfigの指定
LaunchConfig
・インスタンスタイプ
・スポットインスタンス入札額
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScalingGroup
の設定
解決策2:AutoScaleの利用
LaunchConfigA
$2.0
入札
m3.2xlarge
AutoScalingGroup
2台起動
LaunchConfigA
AutoScalingGroup
の設定
解決策2:AutoScaleの利用
LaunchConfigA
の入札額では入札価格が足りない
ずっと入札を待ち続ける
AutoScalingGroup
2台起動
LaunchConfigA
入札待ち
ConfigA
LaunchConfigA
$2.0
入札
m3.2xlarge
m3.2xlarge
の価格 = $3.0
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScalingGroup
の設定
解決策2:AutoScaleの利用
LaunchConfigA
$2.0
入札
m3.2xlarge
LaunchConfigB
$3.0
入札
c3.2xlarge
AutoScalingGroup
2台起動
LaunchConfigB
サーバが起動できるLaunchConfigBに切り替える
新規で入札が入る
入札中止
ConfigA
新規入札
ConfigB
c3.2xlarge
の価格 = $0.8
AutoScalingGroup
の設定
解決策2:AutoScaleの利用
LaunchConfigA
$2.0
入札
m3.2xlarge
LaunchConfigB
$3.0
入札
c3.2xlarge
AutoScalingGroup
2台起動
LaunchConfigB
サーバが起動できるLaunchConfigBに切り替える
新規で入札が入る
入札中止
ConfigA
新規入札
ConfigB
c3.2xlarge
の価格 = $0.8
無事にサーバ起動
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
構成図
CYBIRD
が考えたスポットインスタンス運用
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AutoScale
を利用した構成図
ゾーンA
ゾーンB
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
オンデマンド
EC2
Elastic Load
Balancing
スポットインスタンス
AutoScalingGroup
スポット
EC2
スポット
EC2
オンデマンドインスタンス
スポットインスタンス
価格・・・高い問題
オンデマンドとスポットの利用比率
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
オンデマンドインスタンス
スポットインスタンス
オンデマンドとスポットの利用比率
1
ヶ月の使用時間の比率
3∼4割のコスト削減
価格・・・高い問題
オンデマンドインスタンス
スポットインスタンス
オンデマンドとスポットの利用比率
1
ヶ月の使用時間の比率
3∼4割のコスト削減
価格・・・高い問題
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
スポットの利用者が増えた
2013
年8月からスポットを利用
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
価格変動はほとんど無かった
価格変動が激しい
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
利用者が増えたことで起きた問題
朝と夜にアクセス上昇
月1回の大きなイベント
再掲
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
通常時のサーバの例
オンデマンド
WebServer
スポットの利用者が増えた問題
スポット
イベントに備えサーバ追加
オンデマンド オンデマンド
WebServer
スポット
スポット
オンデマンド オンデマンド
スポット
スポット
スポットの利用者が増えた問題
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
スポットインスタンスの価格上昇
スポットの利用者が増えた問題
スポットインスタンスの価格上昇
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
現在取り組んでいること
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
今出来ていること
現在取り組んでいること
スポットの!
価格状況が把握
AutoScale
の!
容易な設定変更
やりたいこと
AutoScale
の!
容易な設定変更
現在取り組んでいること
スポットの!
価格状況が把握
自動化
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
現在取り組んでいること
1:価格変動のアラートの閾値を設定
2:最適なインスタンス・入札額の選定
現在取り組んでいること
1:価格変動のアラートの閾値を設定
安定稼働とコスト最適化を目指す
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AWS
のAutoScale
運用コスト削減
様々なツールと組み合わせることで!
ニーズに合ったソリューションを構築
AutoScale
スポットインスタンス
ここからは!
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
運用効率化に向けたAWS導入背景から運用のお話
AWSをさらに活用するための技術的なお話
∼後半∼
∼前半∼
Agenda
1:アバター合成サーバの負荷対策
2:ログ収集の効率化
3:まとめ
Agenda
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
自己紹介
本田 恭 (ほんだ たかし)
-
2012年新卒入社 (3年目)
-
Twitter @Altsencturely
好きなAWSのサービス
-
S3
1:アバター合成サーバの負荷対策
2:ログ収集の効率化
3:まとめ
Agenda
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
アバター合成サーバの
負荷対策
恋愛ソーシャルゲームとは
アバターなどを
着せ替えて可愛く
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
ある
画像のレスポンス
ない
画像のレスポンス
画像の存在確認
画像の存在確認
画像の生成
(ImageMagick)
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
これまでの環境
Image Image Image
NAS
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
サーバ間で同じ画像は作成されない
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Image Image Image
S3
AWS
の場合1
・S3のマウント先への書き込みに時間がかかる
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AWS
の場合1
・
・サーバ高負荷時にマウントが外れる
画像A
画像Aリクエスト
画像Aが
ないので作成
AWS
の場合2
Image
Image
Image LoadBarancer
1
2
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
画像を余分に作成することの問題点
CPU
ロードアベレージ
サーバを増やしても負荷が減らない
画像を余分に作成することの問題点
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
アバター合成サーバの安定運用
¦¦
合成の回数を減らす
安定運用のために
サーバ間で画像ファイルを共有
アバター合成サーバの安定運用
¦¦
合成の回数を減らす
安定運用のために
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
マスターレスな分散ファイルシステム
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
マスターレスとは
nodeA
nodeB
nodeC
GlusterFS-Cluster
マスターレスとは
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
nodeB
nodeC
GlusterFS-Cluster
ノード間で同期
マスターレスとは
単一障害点が存在しない
1.
ルート以外のパーティションでEBSをマウント
2. GlusterFS
のクラスタ構築 (peer probe)
3.
ファイルシステムを構築
4.
作成したファイルシステムをマウント
AWS
上でGlusterFSの構築手順
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1.
ルート以外のパーティションでEBSをマウント
2. GlusterFS
のクラスタ構築 (peer probe)
3.
ファイルシステムを構築
4.
作成したファイルシステムをマウント
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
クラスタ構築
GlusterFS-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
追加
peer probe
クラスタ構築
GlusterFS-Cluster
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
追加
peer probe
クラスタのメンバが追加する
クラスタ構築
GlusterFS-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
GlusterFS
のクラスタのメンバ(nodeAまたはnodeB)が
メンバ追加コマンドを実行
# gluster peer probe nodeC
または
# gluster peer probe 172.31.0.3
Number of Peers: 2
!
Hostname
:
nodeB
Uuid: xxxxxxxx-xxxx-xxxx
State: Peer in Cluster (Connected)
!
Hostname
:
nodeC
Uuid: xxxxxxxx-xxxx-xxxx
State: Peer in Cluster (Connected)
# gluster peer status
peer probe
の違い
Number of Peers: 2
!
Hostname
:
172.31.0.2
Uuid: xxxxxxxx-xxxx-xxxx
State: Peer in Cluster (Connected)
!
Hostname
:
172.31.0.3
Uuid: xxxxxxxx-xxxx-xxxx
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
AWS
だとIPが自動で割り当てられる
AutoScale
時のpeer probe
サーバを一意に特定できるホスト名の方が管理しやすい
AutoScale
時のpeer probe
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
# gluster peer probe
HOSTNAME
サーバを一意に特定できるホスト名の方が管理しやすい
AutoScale
時のpeer probe
1. GlusterFS
のクラスタの生きているノードが
クラスタに追加
2. IP
アドレスではなくホスト名を使用
GlusterFS
構築の注意点
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1. GlusterFS
のクラスタの生きているノードの自動判別
2.
クラスタ内での自動名前解決
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
追加
peer probe
クラスタの自動構築
GlusterFS-Cluster
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
1. SSH
クラスタの自動構築
GlusterFS-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
1. SSH
2. peer probe
クラスタの自動構築
GlusterFS-Cluster
GlusterFS
のAutoScale対応
1. GlusterFS
のクラスタの生きているノードの自動判別
2.
クラスタ内での自動名前解決
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Number of Peers: 2
!
Hostname:
nodeB
Uuid: xxxxxxxx-xxxx-xxxx
State: Peer in Cluster
(Connected)
!
Hostname:
nodeC
Uuid: xxxxxxxx-xxxx-xxxx
State: Peer in Cluster
(Connected)
# gluster peer status
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
・・・
GlusterFS
のステータスを使う
gluster-peer-status
nod
eB?
nodeC?
ホスト名がわからない
案1 GlusterFSのステータスを使う
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
・・・
1.
情報取得
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
・・・
2. SSH
・・・
3.
情報取得
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
peer probe
・・・
・・・
AWS API
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
不完全なクラスタが構築される
案2 AWS APIを使う
•
Chef Server API
!
•
Zabbix API
!
•
内部DNS
その他の案
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1. GlusterFS
のクラスタの生きているノードの自動判別
2.
クラスタ内での自動名前解決
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
1. GlusterFS
自動判別
2.
クラスタ内での自動名前解決
GlusterFS
GlusterFS
のクラスタ内で完結
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
マスターレスなクラスタ構成
ゴシッププロトコル
$ serf join nodeA
Serf
のクラスタ
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
Serf-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Serf
のクラスタ
nodeA
172.31.0.1
nodeB
172.31.0.2
172.31.0.3
nodeC
自分からクラスタに参加できる
Serf-Cluster
Serf-Cluster
member-join
nodeA
nodeB
nodeC
ゴシッププロトコルとは
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Serf-Cluster
nodeA
nodeB
nodeC
ゴシッププロトコルとは
Serf-Cluster
nodeA
nodeB
nodeC
ゴシッププロトコルとは
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Serf-Cluster
nodeA
nodeB
nodeC
ゴシッププロトコルとは
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
クラスタメンバ情報で生存確認
$ serf members
nodeA 172.31.0.1:7946 alive
nodeB 172.31.0.2:7946 alive
nodeC 172.31.0.3:7946 alive
Serfで自動名前解決
Serfで自動名前解決
member-join
$ serf members
nodeA 172.31.0.1:7946 alive
nodeB 172.31.0.2:7946 alive
nodeC 172.31.0.3:7946 alive
/etc/hosts
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
/etc/hosts
member-join
$ serf members
nodeA 172.31.0.1:7946 alive
nodeB 172.31.0.2:7946 alive
nodeC 172.31.0.3:7946 alive
クラスタ内の名前解決の自動化
Serfの便利な点
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
serf-members
172.31.0.1
172.31.0.2
172.31.0.3
172.31.0.4
http://s3-blog.the-new-it.com.s3.amazonaws.com/wp-content/uploads/2014/01/WPandS3Logos.png
Serf
のクラスタをマスターレス
172.31.0.1
172.31.0.2
172.31.0.3
172.31.0.4
serf-members
serf-members
nodeA 172.31.0.1:7946 alive
nodeB 172.31.0.2:7946 alive
nodeC 172.31.0.3:7946 alive
nodeD 172.31.0.4:7946 failed
Serf
のクラスタをマスターレス
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
172.31.0.1
172.31.0.2
172.31.0.3
172.31.0.4
$ serf join nodeA
172.31.0.1
172.31.0.2
172.31.0.3
172.31.0.4
$ serf join nodeA
Serf
のクラスタをマスターレス
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
S3
の耐障害性
!
最大 99.999999999% の耐久性と 99.99% の可用性
安定してどこからでも使える
S3
を使う理由
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
クラスタの名前解決
クラスタの追加/削除時に/etc/hostsが
修正されメンバ間は名前解決可能
1. GlusterFS
のクラスタの生きているノードの自動判別
2.
クラスタ内での自動名前解決
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Serf-Cluster
nodeA
nodeB
nodeC
GlusterFS-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
nodeB
nodeC
serf-members
Serf-Cluster
serf-members
nodeA 172.31.0.1:7946 alive
nodeB 172.31.0.2:7946 alive
nodeA
nodeB
nodeC
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Serf-Cluster
member-join
member-join
member-join
nodeA
nodeB
nodeC
GlusterFS-Cluster
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
nodeA
nodeB
nodeC
1. SSH
2. peer probe
GlusterFS-Cluster
nodeA
nodeB
nodeC
serf-members
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.
Copyright 2014 CYBIRD Co., Ltd. All Rights Reserved.