More Related Content
Similar to Dsas周りのお話 (20)
Dsas周りのお話
- 1. DSAS 周 り の お 話
Ryosuke MIURA
Copyright © KLab Inc. All rights reserved. 0
- 2. 目次
DSAS全体の構成
サーバの増設
ネットワークブートについて
WEBサーバ
フロントエンドとバックエンドの構成の理由
ログ
グラフ情報の見方
DBサーバ
コネクション数一定の理由
グラフ情報の見方
Copyright © KLab Inc. All rights reserved. 1
- 3. DSAS全体の構成
全体の
全体
フロントエンドサービス
LVS LVS
(Active) (Backup) バックエンドサービス
Contents Master Master
WEBサーバ WEBサーバ
Master (Primary) (Secondary)
WEBサーバ WEBサーバ WEBサーバ WEBサーバ WEBサーバ
DBサー
DBサーバ MC LLS GANGLIA
(Master) (Active) (Active) (Active)
DBサー
DBサーバ MC LLS GANGLIA
(Slave) (Backup) (Backup) (Backup)
DBサ
DBサーバ
(Slave)
Copyright © KLab Inc. All rights reserved. 2
- 4. 今回の
今回のメインターゲット
フロントエンドサービス
LVS LVS
(Active) (Backup) バックエンドサービス
Contents Master Master
WEBサーバ WEBサーバ
Master (Primary) (Secondary)
WEBサーバ WEBサーバ WEBサーバ WEBサーバ WEBサーバ
DBサーバ
DBサーバ MC LLS サーバの
・WEBサーバの増設
GANGLIA
(Master) (Active) (Active) 設定について
・設定について
(Active)
DBサーバ
DBサーバ MC LLS GANGLIA
(Slave) (Backup) (Backup) (Backup)
サーバの
・Slave サーバの増設
におけるコネク
・DSASにおけるコネク
DBサーバ
DBサーバ
ションの
ションの扱い方
(Slave)
Copyright © KLab Inc. All rights reserved. 3
- 5. サーバの増設について
サーバの増設について
環境構築手順
1. ハードウェア設置
2. OSのインストール
3. ディスクの同期
4. 各種サービスの設定・確認
2-4の処理で作成したイメージはほぼ共通
あらかじめ作成してある
あらかじめ作成してある
作成
各種イメージ
イメージを
各種イメージを
ネットワークブート!
Copyright © KLab Inc. All rights reserved. 4
- 6. WEBサーバ増設の方法
サーバ増設の
サーバ増設
DSASのマスターサーバ以外はネットワーク
ブート(鶏と卵問題)
1. マスターサーバからInitramfs(ベースイメージを
メモリに展開+rootマウント)で起動
2. ディスク(コンテンツ)の同期
3. 負荷分散の対象に追加
WEBサーバ増設例
サーバ増設例
3 1 2 1 2 3
LVS Contents Master Master 増設したい
増設したい
WEBサーバ
(Active) Master (Primary) (Secondary) WEBサーバ
LVS
(Backup) WEBサーバ WEBサーバ WEBサーバ WEBサーバ WEBサーバ
Copyright © KLab Inc. All rights reserved. 5
- 7. WEBサーバの増設・セットアップ(1)
サーバの増設・セットアップ
サーバ
●KLab用イメージをメモリに展開して起動
●マスターサーバからディスクをコピー
増設サーバのメモリに
増設サーバのメモリに
サーバ
ルートイメージを
カーネル+ルートイメージを展開
増設WEBサーバ マスターサーバ
メモリ vmlinuz メモリ
/usr、/bin
sshd
ディスク ディスク KLab用イメージ
vmlinuz vmlinuz
/usr、/bin /usr、/bin vmlinuz
Kayac様 Kayac様 /usr、/bin
コンテンツ
コピー コンテンツ sshd
Copyright © KLab Inc. All rights reserved. 6
- 8. WEBサーバの増設・セットアップ(2)
サーバの増設・セットアップ
サーバ
●rebootしてWEB用イメージをメモリに展開して起動
●負荷分散対象に割りあてて増設完了 増設サーバのメモリに
増設サーバのメモリに
サーバ
ルートイメージを
カーネル+ルートイメージを展開
マスターサーバ
増設WEBサーバ メモリ
LVSサーバ
メモリ vmlinuz
/usr、/bin
sshd
ディスク WEB用イメージ
ディスク
vmlinuz vmlinuz
/usr、/bin /usr、/bin
Kayac様 sshd
コンテンツ
割り当て前のサービストラフィック
割り当て後のサービストラフィック
WEBサーバ WEBサーバ 増設WEBサーバ
Copyright © KLab Inc. All rights reserved. 7
- 9. 実はWEBサーバの
初期構築は事前に
やってたりします…
Copyright © KLab Inc. All rights reserved. 8
- 10. 実際の
実際のWEBサーバの増設
サーバの
サーバ
●起動中の割り当てなしのWEBサーバが存在 ◯Makuosan
●実はCM(コンテンツマスター) から makuosan で同期 コンテンツの同期に利用するツール
●負荷分散対象に割りあてのみ
コンテンツマスター サービス提供中
サービス提供中
初期構築済みで起動中
初期構築済みで起動中
みで
Kayac様WEBサーバ
割り当てなしWEBサーバ メモリ
メモリ vmlinuz
メモリ vmlinuz /usr、/bin
/usr、/bin sshd
sshd
ディスク
ディスク
ディスク vmlinuz
vmlinuz コンテンツ
/usr、/bin
/usr、/bin Kayac様コンテンツ Kayac様コンテンツ
Kayac様コンテンツ …
差分発生・
差分発生・コピー 差分発生・
差分発生・コピー
割り当て変更のみ
変更のみ
Copyright © KLab Inc. All rights reserved. 9
- 11. サーバ(Slave)の増設方法
サーバ
DBサーバ の
DSASのマスターサーバ以外がネットワーク
ブート
1. マスターサーバからInitramfsで起動
2. 同期レプリケーション
3. 負荷分散の対象に追加
DBサーバ増設例
サーバ増設例
Contents Master Master
WEBサーバ WEBサーバ
Master (Primary)1 (Secondary)
LLS 3
(Active)
WEBサーバ WEBサーバ WEBサーバ WEBサーバ WEBサーバ
LLS 1
(Backup)
DBサーバ
DBサーバ DBサーバ
DBサーバ
(Master) 2 (Slave)
Copyright © KLab Inc. All rights reserved. 10
- 12. サーバ(Slave)の増設・セットアップ
サーバ
DBサーバ の増設・
●DBイメージをメモリに展開して起動
●MySQLのデータはローカルのディスク(RAID)に書く
★オンメモリなのでシステム領域のディスク障害なし
RAID等を有効にしカーネル
有効に
ルートイメージで
+ ルートイメージでブート
Master DBサーバ 増設DBサーバ マスターサーバ
メモリ vmlinuz メモリ vmlinuz メモリ
/usr、/bin /usr、/bin boot> db
sshd sshd
ディスク ディスク ディスク DB用イメージ
InnoDB InnoDB vmlinuz
/usr、/bin
sshd
DBレプリケーション
Copyright © KLab Inc. All rights reserved. 11
- 13. サーバ(Slave)の増設 セットアップ
サーバ
DBサーバ の増設-セットアップ
セットアップ(2)
負荷分散
MySQLの参照系のクエリーは Slave へ問い合せ
Slave 参照はLLS(内部負荷分散サーバ)を経由
LLSサーバ
割り当て後の参照先トラフィック
参照先トラフィック
割り当て前の参照先トラフィック
参照先トラフィック
slaveへの問合せトラフィック
への問合せ
問合
DBサーバ DBサーバ 増設DBサーバ
WEBサーバ
(Slave1) (Slave2) (Slave3)
Copyright © KLab Inc. All rights reserved. 12
- 14. 増設の話は終了
次からは WEB サーバ
Copyright © KLab Inc. All rights reserved. 13
- 15. WEBサーバの構成について
サーバの構成について
サーバ
フロントエンドサービス
LVS LVS
(Active) (Backup) バックエンドサービス
Contents Master Master
WEBサーバ WEBサーバ
Master (Primary) (Secondary)
WEBサーバ WEBサーバ WEBサーバ WEBサーバ WEBサーバ
DBサーバ
DBサーバ MC LLS GANGLIA
(Master) (Active) (Active) (Active)
DBサーバ
DBサーバ MC LLS GANGLIA
(Slave) (Backup) (Backup) (Backup)
DBサーバ
DBサーバ
(Slave)
Copyright © KLab Inc. All rights reserved. 14
- 16. サーバ:フロントエンド
サーバ フロントエンドと
WEBサーバ フロントエンドとバックエンド
WEBサーバが 2 段構成
HTTPリクエスト
Why? HTTPレスポンス
LVSサーバ
Apache:フロントエンド
プロキシ
Apache:バックエンド
WEBサーバ
Copyright © KLab Inc. All rights reserved. 15
- 17. Apache:リクエスト処理が大量に来た場合
リクエスト処理が大量に
リクエスト処理
プロキシなしの設定
バックエンドのみで処理を行う必要
PHPのアプリケーションで処理できる数は限定
プロキシありの設定
バックエンドでPHPのアプリケーションサービス
フロントエンドではリクエストのみを受けつける処理
フロントエンドがバックエンドよりも多くの処理が来た場合
はWEBサーバの台数を増加させる指標
Copyright © KLab Inc. All rights reserved. 16
- 18. Apache: フロントエンドの設定
フロントエンドの
フロントエンド
httpd.conf in global context
MinSpareServers 64 アイドル子プロセス最小値
アイドル子プロセス最小値
MaxSpareServers 255 アイドル子プロセス最大値
アイドル子プロセス最大値
StartServers 64 起動時の プロセスの
起動時の子プロセスの数
ServerLimit 256 プロセス数全体の
プロセス数全体の上限値
数全体
MaxClients 255 応答可能なプロセス数
応答可能なプロセス数の上限値
MaxRequestsPerChild 0 1プロセスが扱うリクエストの
プロセスが リクエストの
上限値
Gangliaの統計
Apache
Copyright © KLab Inc. All rights reserved. Frontend Report 17
- 19. Apache: バックエンドの設定
バックエンドの
バックエンド
httpd.conf in global context
MinSpareServers 16 アイドル子プロセス最小値
アイドル子プロセス最小値
MaxSpareServers 31 アイドル子プロセス最大値
アイドル子プロセス最大値
StartServers 16 起動時の プロセスの
起動時の子プロセスの数
ServerLimit 32 プロセス数全体の
プロセス数全体の上限値
数全体
MaxClients 31 応答可能なプロセス数
応答可能なプロセス数の上限値
MaxRequestsPerChild 0 1プロセスが扱うリクエストの
プロセスが リクエストの
上限値
Gangliaの統計
Apache
Copyright © KLab Inc. All rights reserved. Backend Report 18
- 20. サーバ:PageView(PV)グラフ
サーバ
WEBサーバ ( グラフ
PVの算出
1. 負荷分散対象のWEBサーバからログデータ取得
2. 時系列にマージ + パースして算出?
手間がかかる
手間がかかる
たいときに即見
即見えない
PVを見たいときに即見えない
Apache のログ出力にはパイプ処理可能
リアルタイムにログをプログラムに渡して処理
Copyright © KLab Inc. All rights reserved. 19
- 21. サーバ:統計
サーバ 統計グラフ
WEBサーバ 統計グラフ
PHPで処理したレスポンスタイム
処理したレスポンスタイム
した
カスタムログの設定(backend のログ出力)
バックエンド: Virtual Server Context
CustomLog “|measure-prog “%{%H:%M:%S}t %>s %D”
Copyright © KLab Inc. All rights reserved. 20
- 23. サーバ:コネクション
サーバ コネクションの
DBサーバ コネクションの扱い方
DBサーバのコネクションのはりかた
1. WEBサーバからコネクションはりっぱなし
2. WEBサーバから必要に応じてコネクション切断
必要に じてコネクション
必要に応じてコネクション
コネクションはりっぱなし例
コネクションはりっぱなし例
はりっぱなし 切断する
する例
を切断する例
DBサーバ
WEBサーバ
Copyright © KLab Inc. All rights reserved. 22
- 24. サーバ:必要
サーバ 必要に じてコネクション
コネクションの
DBサーバ 必要に応じてコネクションの切断
WEBサーバからコネクションはりっぱなし
1. メリット:コネクションを接続するオーバヘッド存
在なし
2. デメリット:コネクションの個数がWEBサーバのプ
ロセス数に依存
WEBサーバから必要に応じてコネクション切
断
1. メリット:コネクションを接続するオーバヘッド
2. デメリット:WEBサーバのプロセス数に非依存
DSASの場合は「2」
場合は
必要に じてコネクション
コネクション切断
必要に応じてコネクション切断
Copyright © KLab Inc. All rights reserved. 23
- 25. サーバ:可能であればオンメモリ
サーバ 可能であればオンメモリで
DBサーバ 可能であればオンメモリで
MySQLのメモリの扱い方
利用するバッファ領域
グローバルバッファ
スレッドバッファ(コネクション)
利用するメモリ
利用するメモリ=
する
グローバルバッファ
コネクション数
+ スレッドバッファ x コネクション数
コネクションをはりっぱなしの場合
コネクションをはりっぱなしの場合
をはりっぱなしの
コネクション数
コネクション数=WEBサーバのプロセス数
サーバのプロセス数
サーバを増設すると
もしWEB サーバを増設すると
つに使用できるメモリ
使用できるメモリ量
コネクション1つに使用できるメモリ量が制限24
Copyright © KLab Inc. All rights reserved.
- 26. サーバ:各種統計情報
DBサーバ 各種統計情報
サーバ
内部クエリの識別と
内部クエリの識別と数
クエリ キャッシュのヒット率
キャッシュのヒット率
Copyright © KLab Inc. All rights reserved. 25
- 27. まとめ
ネットワークブートは便利
用途に分けてイメージを変更することが可能
WEBサーバ
Apache は二段構成
DBサーバ
Connection の考え方
可視化情報重要
Copyright © KLab Inc. All rights reserved. 26
Editor's Notes
- 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。
- 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。
- 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。