2008年07月22日
『サーバ/インフラを支える技術』出版と発売記念Tech Talk開催のお知らせ
KLab(株)のDSASチームと(株)はてなさんのインフラチームとで書いていた本が、とうとう8/8(ごろに)発売されます!
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
作者: 安井真伸, 横川和哉, ひろせまさあき, 伊藤直也, 田中慎司, 勝見祐己
出版社/メーカー: 技術評論社
発売日: 2008/08/07
メディア: 単行本(ソフトカバー)
出版社/メーカー: 技術評論社
発売日: 2008/08/07
メディア: 単行本(ソフトカバー)
また、発売を記念して、(株)技術評論社様の主催で、Tech Talk イベントを開催します。
詳しくは、開催のアナウンス
をご覧ください。
もちろんスピーカはこの本の執筆者陣で、インフラにまつわるお話をする予定です。
このようなサーバ/インフラ関係のTech Talkイベントは比較的少なく、苦労話やノウハウの共有もしたいなーと思っているので、休憩時間やQ&Aの時間などに気軽に声をかけてもらえるとうれしいです。イベント会場でお会いするのを楽しみに待っています!
このエントリの末尾に、長いですが書籍の目次を掲載します。この目次を眺めてもらえば、どんなことが書いてある本なのかはつかめるんじゃないかと思います。
- 1章 サーバ/インフラ構築入門 - 冗長化/負荷分散の基本
- 1.1 冗長化の基本
- 冗長化とは
- 冗長化の本質
- 障害を想定する
- 予備の機材を準備する
- 運用体制の整備 ……障害発生の際、予備機材に切り替える
- ルータが故障した場合の対応
- コールドスタンバイ
- Webサーバが故障した場合の対応
- ホットスタンバイ
- フェイルオーバ
- VIP
- IPアドレスの引き継ぎ
- 障害を検出する ……ヘルスチェック
- Webサーバのヘルスチェック
- ルータのヘルスチェック
- Active/Backup構成を作ってみる
- IPアドレスを引き継ぐしくみ
- サーバを有効活用したい ……負荷分散へ
- 1.2 Webサーバを冗長化する ……DNSラウンドロビン
- DNSラウンドロビン
- DNSラウンドロビンの冗長構成例
- もっと楽にシステムを拡張したい ……ロードバランサへ
- 1.3 Webサーバを冗長化する ……IPVSでロードバランサ
- DNSラウンドロビンとロードバランサの違い
- IPVS ……Linuxでロードバランサ
- ロードバランサの種類とIPVSの機能
- スケジューリングアルゴリズム
- IPVSを使う
- ipvsadm
- keepalived
- ロードバランサを構築する
- Webサーバの設定
- keepalivedを起動する
- 負荷分散を確認する
- 冗長構成を確認する
- L4スイッチとL7スイッチ
- ●Column L7スイッチと柔軟な設定
- L4スイッチのNAT構成とDSR構成
- 同じサブネットのサーバを負荷分散する場合の注意
- ●Column LinuxベースのL7スイッチ
- 1.4 ルータやロードバランサの冗長化
- ロードバランサの冗長化
- 冗長化プロトコルVRRP
- VRRPのしくみ
- VRRPパケット
- 仮想ルータID
- プライオリティ
- プリエンプティブモード
- 仮想MACアドレス
- keepalivedの実装上の問題
- gratuitous ARP(GARP)の遅延送出
- keepalivedを冗長化する
- VIPの確認
- VRRPの動作確認
- VRRPインスタンスを分離する
- VRRPインスタンスを同期する
- keepalivedの応用
- 1.1 冗長化の基本
- 2章 ワンランク上のサーバ/インフラの構築 - 冗長化、負荷分散、高性能の追求
- 2.1 リバースプロキシの導入 ……Apacheモジュール
- リバースプロキシ入門
- HTTPリクエストの内容に応じたシステムの動作の制御
- IPアドレスを用いた制御
- User-Agentによる制御
- URLの書き換え
- システム全体のメモリ使用効率の向上
- 例:動的ページにおけるリクエストの詳細
- Webサーバが応答するデータのバッファリングの役割
- HTTPのKeep-Alive
- 例:メモリ消費とKeep-Aliveのオン/オフ
- Apacheモジュールを利用した処理の制御
- リバースプロキシの導入の判断
- リバースプロキシの導入
- Apache 2.2を使う
- workerでhttpdを起動
- httpd.confの設定
- 最大プロセス/スレッド数の設定
- Keep-Aliveの設定
- 必要なモジュールのロード
- RewriteRuleを設定
- 一歩進んだRewriteRuleの設定例
- 特定ホストからのリクエストを禁止
- ロボットからのリクエストに対してはキャッシュサーバを経由させる
- mod_proxy_balancerで複数ホストへの分散
- mod_proxy_balancerの利用例
- 2.2 キャッシュサーバの導入 ……Squid、memcached
- キャッシュサーバの導入
- HTTPとキャッシュ
- Live HTTP Headersで知るキャッシュの効果
- Squidキャッシュサーバ
- Squidでリバースプロキシ
- Squidは何をキャッシュするのか
- Squidの設定例
- memcachedによるキャッシュ
- キャッシュサーバの導入
- 2.3 MySQLのレプリケーション ……障害から短時間で復旧する
- DBサーバが止まったら?
- DBサーバが停止するケース
- 短時間で復旧する方法
- MySQLのレプリケーション機能の特徴と注意点
- シングルマスタ、マルチスレーブ
- 非同期のデータコピー
- レプリケーションされるデータの内容
- レプリケーションのしくみ
- スレーブのI/OスレッドとSQLスレッド
- バイナリログとリレーログ
- ポジション情報
- レプリケーション構成を作るまで
- レプリケーションの条件
- my.cnf
- レプリケーション用ユーザの作成
- レプリケーション開始時に必要なデータ
- レプリケーションの開始
- マスタ、スレーブのmy.cnfの比較
- スレーブの動作開始&確認
- レプリケーションの状況確認
- マスタの状況確認
- スレーブの状況確認
- DBサーバが止まったら?
- 2.4 MySQLのスレーブ+内部ロードバランサの活用例
- MySQLのスレーブの活用方法
- スレーブ参照
- 複数のスレーブに分散する方法
- スレーブ参照をロードバランサ経由で行う方法
- 概略図
- 内部ロードバランサの設定
- MySQLスレーブの設定
- スレーブ参照のロードバランスを体験
- 内部ロードバランサの注意点 ……分散方法はDSRにする
- MySQLのスレーブの活用方法
- 2.5 高速で軽量なストレージサーバの選択
- ストレージサーバの必要性
- ストレージサーバは単一故障点になりやすい
- ストレージサーバはボトルネックになりやすい
- 理想的なストレージサーバ
- 負荷を軽くする工夫
- HTTPをストレージプロトコルとして利用する
- 軽量なWebサーバの選択
- HTTPを利用するメリット
- 残る課題
- ●Column 小さくて軽いWebサーバの選択
- ストレージサーバの必要性
- 2.1 リバースプロキシの導入 ……Apacheモジュール
- 3章 止まらないインフラを目指すさらなる工夫 - DNSサーバ、ストレージサーバ、ネットワーク
- 3.1 DNSサーバの冗長化
- DNSサーバの冗長化の重要性
- レゾルバライブラリを利用した冗長化と、問題
- レゾルバライブラリの問題点
- 性能低下の危険性 ……メールサーバの例
- DNS障害の影響は大きい
- サーバファームにおけるDNSの冗長化
- VRRPを利用した構成
- DNSサーバの負荷分散
- まとめ
- 3.2 ストレージサーバの冗長化 ……DRBDでミラーリング
- ストレージサーバの故障対策
- ストレージサーバの同期は困難
- DRBD
- DRBDの構成
- DRBDの設定と起動
- DRBDのマスタサーバを起動する
- DRBDのバックアップサーバを起動する
- DRBDのフェイルオーバ
- 手動で切り替える
- keepalivedの設定
- keepalivedをdaemontoolsで制御する
- NFSサーバをフェイルオーバする際の注意点
- バックアップの必要性
- 3.3 ネットワークの冗長化 ……Bondingドライバ、RSTP
- L1/L2構成要素の冗長化
- 故障するポイント
- リンクの冗長化とBondingドライバ
- Bondingドライバ
- スイッチの冗長化
- リンク故障時の動作
- スイッチ故障時の動作
- スイッチ間接続の故障時の動作
- スイッチの増設
- さらなる冗長化を目指して
- RSTP
- ブリッジの優先順位とルートブリッジ
- RSTPにおけるポートの役割
- RSTPの動作
- おわりに
- 3.4 VLANの導入 ……ネットワークを柔軟にする
- サーバファームにおける柔軟性の高いネットワーク
- VLANの導入がもたらすメリットを考える
- スイッチの有効利用
- 故障したサーバの復旧体制 ……1台の代替機を活用したい
- 1台の代替機による復旧と、VLANの使いどころ
- VLANの基本
- VLANの種類
- ポートVLAN
- タグVLAN
- サーバファームでの利用
- VLANを使わない場合の構成
- ポートVLANを利用した構成
- タグVLANを利用した構成
- 複雑なVLAN構成でも物理構成はシンプルさが鍵
- 3.1 DNSサーバの冗長化
- 4章 性能向上、チューニング - Linux単一ホスト、Apache、MySQL
- 4.1 Linux単一ホストの負荷を見極める
- 単一ホストの性能を引き出すために
- 性能とは何か、負荷とは何かを知る
- 推測するな、計測せよ
- ボトルネック見極め作業の基本的な流れ
- ロードアベレージを見る
- CPU、I/Oのいずれがボトルネックかを探る
- CPU負荷が高い場合
- I/O負荷が高い場合
- 負荷とは何か
- 二種類の負荷
- マルチタスクOSと負荷
- 負荷の正体を知る=カーネルの動作を知る
- プロセススケジューリングとプロセスの状態
- プロセスの状態遷移の具体例
- プロセスの状態遷移のまとめ
- ロードアベレージに換算される待ち状態
- ロードアベレージが報告する負荷の正体
- ●Column プロセスの状態をツールで見る ……ps
- ロードアベレージ計算のカーネルのコードを見る
- ロードアベレージの次はCPU使用率とI/O待ち率
- sarでCPU使用率、I/O待ち率を見る
- CPUのユーザモードとシステムモード
- I/Oバウンドな場合のsar
- マルチCPUとCPU使用率
- CPU使用率の計算はどのように行われているか
- プロセスアカウンティングのカーネルコードを見る
- スレッドとプロセス
- psとスレッド
- LinuxThreadsとNPTL
- ps、sar、vmstatの使い方
- ps ……プロセスが持つ情報を出力する
- VSZとRSS ……仮想メモリと物理メモリの指標
- TIMEはCPU使用時間
- ブロッキングとビジーループの違いをpsで見る
- sar ……OSが報告する各種指標を参照する
- sar -u ……CPU使用率を見る
- sar -q ……ロードアベレージを見る
- sar -r ……メモリの利用状況を見る
- I/O負荷軽減とページキャッシュ
- ページキャッシュによるI/O負荷の軽減効果
- ページキャッシュは一度readしてから
- sar -W ……スワップ発生状況を見る
- vmstat ……仮想メモリ関連情報を参照する
- OSのチューニングとは負荷の原因を知り、それを取り除くこと
- 単一ホストの性能を引き出すために
- 4.2 Apacheのチューニング
- Webサーバのチューニング
- Webサーバがボトルネック?
- Apacheの並行処理とMPM
- preforkとworker、プロセスとスレッド
- プログラミングモデルから見たマルチプロセス/マルチスレッドの違い
- パフォーマンスの観点で見たマルチプロセス/マルチスレッドの違い
- 1クライアントに対して1プロセス/スレッド
- httpd.confの設定
- Apacheの安全弁MaxClients
- preforkの場合
- 親子でメモリを共有するコピーオンライト
- コピーオンライトで共有しているメモリサイズを調べる
- MaxRequestsPerChild
- workerの場合
- 過負荷でMaxClientsを変更する、その前に
- Keep-Alive
- Apache以外の選択肢の検討
- lighttpd
- 4.3 MySQLのチューニングのツボ
- MySQLチューニングのツボ
- チューニングの切り口での分類
- 1サーバサイド
- 2サーバサイド以外
- 3周辺システム
- 本節でこれから扱う内容
- メモリ関係のパラメータチューニング
- バッファの種類 ……チューニングの際の注意点(1)
- 割り当て過ぎない ……チューニングの際の注意点(2)
- メモリ関連のパラメータ
- メモリ関連のチェックツール ……mymemcheck
- MySQLチューニングのツボ
- 4.1 Linux単一ホストの負荷を見極める
- 5章 省力運用 - 安定したサービスへ向けて
- 5.1 サービスの稼働監視 ……Nagios
- 安定したサービス運営と、サービスの稼働監視
- 稼働監視の種類
- 1死活状態の監視
- 2負荷状態の監視
- 3稼働率の計測
- Nagiosの概要
- Nagiosのインストール
- Nagiosの設定
- 設定ファイル
- host ……ホストの設定
- service ……サービスの定義
- command ……コマンド定義
- contactとcontactgroup ……通知先と通知先グループ
- 設定のテスト
- Web管理画面
- Nagiosの基本的な使い方
- ホストとサービスの定義
- 通知
- 応用的な使い方
- 稼働率の測定
- 独自プラグイン
- おわりに
- 5.2 サーバリソースのモニタリング ……Ganglia
- サーバリソースのモニタリング
- モニタリングの目的
- モニタリングのツールの検討
- Ganglia - 大量ノード向けのグラフ化ツール
- Apacheプロセスの状態をグラフ化
- Gangliaにグラフを追加する方法
- 実際に複合グラフを追加してみる
- そのほかのカスタムグラフ
- サーバリソースのモニタリング
- 5.3 サーバ管理の効率化 ……Puppet
- 効率的なサーバ管理を実現するツールPuppet
- Puppetの概要
- Puppetの設定
- ノードの定義
- クラスの定義
- 設定の反映
- 設定ファイルの書き方
- リソースの定義
- リソース
- サーバごとの設定の微調整
- リソース間の依存関係
- テンプレートによるマニフェストの定義
- 動作ログの通知
- tagmail
- puppetmaster.log
- report
- puppetdでのログ
- 運用
- 自動設定管理ツールの功罪
- 5.4 デーモンの稼働管理 ……daemontools
- デーモンが異常終了してしまったら
- daemontools
- daemontoolsを使う理由
- デーモンになるための条件 ……フォアグラウンドで動作する
- デーモンの管理方法
- デーモンの新規作成
- デーモンの開始
- デーモンの停止、再開、再起動
- デーモンの削除
- シグナル送信
- keepalived ……runファイルの例(1)
- 自作の監視スクリプト ……runファイルの例(2)
- daemontoolsのTips
- 依存するサービスの起動順序の制御
- 便利シェル関数
- 5.5 ネットワークブートの活用 ……PXE、initramfs
- ネットワークブート
- ネットワークブートの特徴と利点
- ネットワークブートの動作 ……PXE
- ネットワークブートの活用例
- ロードバランサ
- DBサーバ/ファイルサーバ
- メンテナンス用ブートイメージ
- ネットワークブートを構成するために
- initramfsの共通化と役割の識別
- ディスクレス構成にする際に考慮すべき点
- ネットワークブート
- 5.6 リモートメンテナンス ……メンテナンス回線、シリアルコンソール、IPMI
- 楽々リモートログイン
- ネットワークトラブルに備えて
- メンテナンス回線
- スイッチのトラブルに対する備え
- シリアルコンソール
- シリアルコンソールの実現
- IPMI
- IPMIでできること
- IPMIを使うには
- おわりに
- 5.7 Webサーバのログの扱い ……syslog、syslog-ng、cron、rotatelogs
- Webサーバのログの集約・収集
- 集約と収集
- ログの集約 ……syslogとsyslog-ng
- syslogを使ったログの集約
- syslog-ng
- ログの収集
- Apacheログのローテート ……cronとrotatelogs
- ログサーバの役割と構成
- おわりに
- 5.1 サービスの稼働監視 ……Nagios
- 6章 あのサービスの舞台裏 - 自律的なインフラへ、ダイナミックなシステムへ
- 6.1 はてなのなかみ
- はてなのインフラ
- スケーラビリティと安定性
- リバースプロキシ
- DB
- ファイルサーバ
- 運用効率の向上
- キックスタートによるインストール
- パッケージ管理とPuppet
- サーバの管理と監視
- Capistranoによるデプロイ
- 電源効率・リソース利用率の向上
- 1Aあたりのパフォーマンスを重視する
- 1台あたりのサーバ能力をできるだけ使い切る
- 不要なパーツは載せない
- 自律的なインフラに向けて
- 6.2 DSASのなかみ
- DSASとは
- DSASの特徴
- 一つのシステムに複数のサイトを収容
- OSSで構築
- どこが切れても止まらないネットワーク
- サーバ増設が簡単
- 故障時の復旧が簡単
- システム構成の詳細
- Bondingドライバを利用する理由
- DRBDをフェイルオーバする際の注意点
- SSLアクセラレータ
- ヘルスチェック機能の拡張
- 簡単で安全に運用できるロードバランサ
- セッションデータの取り扱い
- memcached
- repcached
- DSASの今後
- 6.1 はてなのなかみ
トラックバックURL
この記事へのトラックバック
1. KLabさんから面白そうな本が出るとのこと!(・∀・)イイ!! [ マンダリンケーキのレシピ ] 2008年07月23日 02:48
DSAS開発者の部屋:『サーバ/インフラを支える技術』出版と発売記念Tech Talk開催のお知らせ
速攻で予約注文してしまいました。
っていうか、どストライク。明日にでもすぐに読みたい。
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマン...
2. [book][event]『サーバ/インフラを支える技術』とな [ kirara_397の日記 ] 2008年07月23日 14:23
DSAS開発者の部屋:『サーバ/インフラを支える技術』出版と発売記念Tech Talk開催のお知らせ 欲しい。行きたい。 できれば、イベント会場で割引販売なんかしてくれちゃうと最高ですね。
3. 『サーバ/インフラを支える技術』 [ valda's diary ] 2008年07月24日 15:06
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用
安井 真伸/横川 和哉/ひろせ まさあき/伊藤 直也/田中 慎司/勝見 祐己
技術評論社
¥ 2,919
この本とっても欲しいんですけど、なにかのツテで安く買えたりしないか...
4. 負荷分散・冗長化のすごい本が出る [ ベンチャー企業のSEのひとりごと ] 2008年07月25日 10:42
[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用(安井 真伸/横川 和哉/ひろせ まさあき/伊藤 直也/田中 慎司/勝見 祐己)
DSASの中の人ほか数名の方の共著でとんでもない本が出ます。
目次の項目を見る限り最近の負荷分散・冗長...
5. [24時間365日] サーバ/インフラを支える技術 と言う本が出るらしい [ サーバーインフラSEのBlog ] 2008年07月27日 01:45
[24時間365日] サーバ/インフラを支える技術 と言う本が出るらしいです。 サーバインフラ関連の本は非常に少ないので貴重です。 http://dsas.blog.klab.org/archives/51290015.html こちらは、概論ばかりであんまり面白くなかったので余計に期待しています。 システム基盤...