DSAS 周 り の お 話
         Ryosuke MIURA



Copyright © KLab Inc. All rights reserved.   0
目次

           DSAS全体の構成
           サーバの増設
               ネットワークブートについて
           WEBサーバ
               フロントエンドとバックエンドの構成...
DSAS全体の構成
         全体の
         全体
                                                        フロントエンドサービス
                LVS...
今回の
     今回のメインターゲット
                                                        フロントエンドサービス
                LVS              ...
サーバの増設について
     サーバの増設について
      環境構築手順
        1.     ハードウェア設置
        2.     OSのインストール
        3.     ディスクの同期
        4....
WEBサーバ増設の方法
         サーバ増設の
         サーバ増設
      DSASのマスターサーバ以外はネットワーク
      ブート(鶏と卵問題)
      1.     マスターサーバからInitramfs(ベー...
WEBサーバの増設・セットアップ(1)
        サーバの増設・セットアップ
        サーバ

       ●KLab用イメージをメモリに展開して起動
       ●マスターサーバからディスクをコピー




        ...
WEBサーバの増設・セットアップ(2)
        サーバの増設・セットアップ
        サーバ

       ●rebootしてWEB用イメージをメモリに展開して起動
       ●負荷分散対象に割りあてて増設完了       ...
実はWEBサーバの
       初期構築は事前に
       やってたりします…
Copyright © KLab Inc. All rights reserved.   8
実際の
     実際のWEBサーバの増設
           サーバの
           サーバ
●起動中の割り当てなしのWEBサーバが存在                                 ◯Makuosan
 ●実はC...
サーバ(Slave)の増設方法
       サーバ
     DBサーバ       の
      DSASのマスターサーバ以外がネットワーク
      ブート
      1.     マスターサーバからInitramfsで起動
   ...
サーバ(Slave)の増設・セットアップ
       サーバ
     DBサーバ       の増設・

       ●DBイメージをメモリに展開して起動
       ●MySQLのデータはローカルのディスク(RAID)に書く
    ...
サーバ(Slave)の増設 セットアップ
       サーバ
     DBサーバ       の増設-セットアップ
                     セットアップ(2)

         負荷分散
              My...
増設の話は終了
   次からは WEB サーバ


Copyright © KLab Inc. All rights reserved.   13
WEBサーバの構成について
        サーバの構成について
        サーバ
                                                        フロントエンドサービス
         ...
サーバ:フロントエンド
        サーバ フロントエンドと
     WEBサーバ フロントエンドとバックエンド

              WEBサーバが 2 段構成
                                 ...
Apache:リクエスト処理が大量に来た場合
            リクエスト処理が大量に
            リクエスト処理

             プロキシなしの設定
                 バックエンドのみで処理を行う...
Apache: フロントエンドの設定
            フロントエンドの
                             フロントエンド
                       httpd.conf in global c...
Apache: バックエンドの設定
            バックエンドの
                               バックエンド
                        httpd.conf in global c...
サーバ:PageView(PV)グラフ
        サーバ
     WEBサーバ         (   グラフ
                PVの算出
           1.     負荷分散対象のWEBサーバからログデータ取得...
サーバ:統計
        サーバ 統計グラフ
     WEBサーバ 統計グラフ




                                  PHPで処理したレスポンスタイム
                        ...
次からDBサーバ


Copyright © KLab Inc. All rights reserved.   21
サーバ:コネクション
       サーバ コネクションの
     DBサーバ コネクションの扱い方

                DBサーバのコネクションのはりかた
           1.     WEBサーバからコネクションはりっ...
サーバ:必要
       サーバ 必要に じてコネクション
                 コネクションの
     DBサーバ 必要に応じてコネクションの切断
               WEBサーバからコネクションはりっぱなし
   ...
サーバ:可能であればオンメモリ
       サーバ 可能であればオンメモリで
     DBサーバ 可能であればオンメモリで
      MySQLのメモリの扱い方
                利用するバッファ領域
           ...
サーバ:各種統計情報
     DBサーバ 各種統計情報
       サーバ




                内部クエリの識別と
                内部クエリの識別と数
                  クエリ    ...
まとめ

           ネットワークブートは便利
               用途に分けてイメージを変更することが可能
           WEBサーバ
               Apache は二段構成
           ...
Upcoming SlideShare
Loading in …5
×

Dsas周りのお話

3,048 views

Published on

2010年4月16日の開催された「KAYAC×KLab合同勉強会」のKLabセッションです。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,048
On SlideShare
0
From Embeds
0
Number of Embeds
600
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。
  • 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。
  • 人工衛星から DSAS をみるとこんな感じになります。 DSAS の内部は大きく2つに分類できます。 外部からのリクエストに対して応答する「フロントエンドサービス向け」のサーバ群と 内部用のサービスを提供する「バックエンドサービス向け」のサーバ群です ここでは、「フロントエンドサービス向け」のサーバ群の特徴についてお話したいと思います。
  • Dsas周りのお話

    1. 1. DSAS 周 り の お 話 Ryosuke MIURA Copyright © KLab Inc. All rights reserved. 0
    2. 2. 目次 DSAS全体の構成 サーバの増設 ネットワークブートについて WEBサーバ フロントエンドとバックエンドの構成の理由 ログ グラフ情報の見方 DBサーバ コネクション数一定の理由 グラフ情報の見方 Copyright © KLab Inc. All rights reserved. 1
    3. 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. 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. 5. サーバの増設について サーバの増設について 環境構築手順 1. ハードウェア設置 2. OSのインストール 3. ディスクの同期 4. 各種サービスの設定・確認 2-4の処理で作成したイメージはほぼ共通 あらかじめ作成してある あらかじめ作成してある 作成 各種イメージ イメージを 各種イメージを ネットワークブート! Copyright © KLab Inc. All rights reserved. 4
    6. 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. 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. 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. 9. 実はWEBサーバの 初期構築は事前に やってたりします… Copyright © KLab Inc. All rights reserved. 8
    10. 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. 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. 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. 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. 14. 増設の話は終了 次からは WEB サーバ Copyright © KLab Inc. All rights reserved. 13
    15. 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. 16. サーバ:フロントエンド サーバ フロントエンドと WEBサーバ フロントエンドとバックエンド WEBサーバが 2 段構成 HTTPリクエスト Why? HTTPレスポンス LVSサーバ Apache:フロントエンド プロキシ Apache:バックエンド WEBサーバ Copyright © KLab Inc. All rights reserved. 15
    17. 17. Apache:リクエスト処理が大量に来た場合 リクエスト処理が大量に リクエスト処理 プロキシなしの設定 バックエンドのみで処理を行う必要 PHPのアプリケーションで処理できる数は限定 プロキシありの設定 バックエンドでPHPのアプリケーションサービス フロントエンドではリクエストのみを受けつける処理 フロントエンドがバックエンドよりも多くの処理が来た場合 はWEBサーバの台数を増加させる指標 Copyright © KLab Inc. All rights reserved. 16
    18. 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. 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. 20. サーバ:PageView(PV)グラフ サーバ WEBサーバ ( グラフ PVの算出 1. 負荷分散対象のWEBサーバからログデータ取得 2. 時系列にマージ + パースして算出? 手間がかかる 手間がかかる たいときに即見 即見えない PVを見たいときに即見えない Apache のログ出力にはパイプ処理可能 リアルタイムにログをプログラムに渡して処理 Copyright © KLab Inc. All rights reserved. 19
    21. 21. サーバ:統計 サーバ 統計グラフ WEBサーバ 統計グラフ PHPで処理したレスポンスタイム 処理したレスポンスタイム した カスタムログの設定(backend のログ出力) バックエンド: Virtual Server Context CustomLog “|measure-prog “%{%H:%M:%S}t %>s %D” Copyright © KLab Inc. All rights reserved. 20
    22. 22. 次からDBサーバ Copyright © KLab Inc. All rights reserved. 21
    23. 23. サーバ:コネクション サーバ コネクションの DBサーバ コネクションの扱い方 DBサーバのコネクションのはりかた 1. WEBサーバからコネクションはりっぱなし 2. WEBサーバから必要に応じてコネクション切断 必要に じてコネクション 必要に応じてコネクション コネクションはりっぱなし例 コネクションはりっぱなし例 はりっぱなし 切断する する例 を切断する例 DBサーバ WEBサーバ Copyright © KLab Inc. All rights reserved. 22
    24. 24. サーバ:必要 サーバ 必要に じてコネクション コネクションの DBサーバ 必要に応じてコネクションの切断 WEBサーバからコネクションはりっぱなし 1. メリット:コネクションを接続するオーバヘッド存 在なし 2. デメリット:コネクションの個数がWEBサーバのプ ロセス数に依存 WEBサーバから必要に応じてコネクション切 断 1. メリット:コネクションを接続するオーバヘッド 2. デメリット:WEBサーバのプロセス数に非依存 DSASの場合は「2」 場合は 必要に じてコネクション コネクション切断 必要に応じてコネクション切断 Copyright © KLab Inc. All rights reserved. 23
    25. 25. サーバ:可能であればオンメモリ サーバ 可能であればオンメモリで DBサーバ 可能であればオンメモリで MySQLのメモリの扱い方 利用するバッファ領域 グローバルバッファ スレッドバッファ(コネクション) 利用するメモリ 利用するメモリ= する グローバルバッファ コネクション数 + スレッドバッファ x コネクション数 コネクションをはりっぱなしの場合 コネクションをはりっぱなしの場合 をはりっぱなしの コネクション数 コネクション数=WEBサーバのプロセス数 サーバのプロセス数 サーバを増設すると もしWEB サーバを増設すると つに使用できるメモリ 使用できるメモリ量 コネクション1つに使用できるメモリ量が制限24 Copyright © KLab Inc. All rights reserved.
    26. 26. サーバ:各種統計情報 DBサーバ 各種統計情報 サーバ 内部クエリの識別と 内部クエリの識別と数 クエリ キャッシュのヒット率 キャッシュのヒット率 Copyright © KLab Inc. All rights reserved. 25
    27. 27. まとめ ネットワークブートは便利 用途に分けてイメージを変更することが可能 WEBサーバ Apache は二段構成 DBサーバ Connection の考え方 可視化情報重要 Copyright © KLab Inc. All rights reserved. 26

    ×