サーバ/インフラを支える技術

「サーバ/インフラを支える技術」を読了した。
約2年半前に出版されて本だけど、今読んでもとても興味深く、参考になることが多かった。


僕はJavaを得意にしているけれども、Linuxを中心としたサーバ構築も担当してきた。数台の小規模なものから、全体としては100台近い大規模なPJも体験した。

もちろんはてなやKLabのシステムとはずいぶんと異なるけれども、すでに知っている内容も多少あった。はてなのシステムなどには前々から興味があったので、すでに公開されている断片的な情報もあった。

そんななかで、いちばん驚いたのはVLANの章だった。もともとネットワークについてあまり詳しくなかったので知らない事が多かった。特にタグVLANを利用するところでびっくり。
Webサーバとロードバランサ(LB)のHWを同一構成(不要なNICは構成に含めず最小構成で)でL2SWに繋げる。LBになにか起きたらWebサーバをLBにしてVLANの設定変更を変更するだけで対応する。するとLANの繋ぎ替えは不要になる。


これだけだとなにがなんだかだと思うので、続きはこっちを。「DSAS開発者の部屋:「DSASのあれこれ」の資料を公開します」の「発表資料」の52ページから77ページあたりに詳しく書いてある。
あとは「DSAS開発者の部屋:Linuxルータのタコ足配線を解消しよう 〜 タグVLAN(IEEE 802.1Q)の活用」とか「DSAS開発者の部屋:LinuxでのタグVLANの利用 〜 vconfigの使い方」あたり。


本書は「サーバ/インフラを支える技術」であって、サーバ/インフラに限った内容ではない。「24時間365日 サーバ/インフラを支える技術」は多岐に渡るから、(僕のような)知識に偏りのあるアプリケーションエンジニアや、インフラエンジニアは、本書からは自分の知らない分野を学べると思う。
そんなわけで、ちょっと長いけど目次も引用する。

1章 サーバ/インフラ構築入門 ……冗長化/負荷分散の基本
1.1 冗長化の基本
1.2 Webサーバを冗長化する ……DNSラウンドロビン
1.3 Webサーバを冗長化する ……IPVSでロードバランサ
1.4 ルータやロードバランサの冗長化
2章 ワンランク上のサーバ/インフラの構築 ……冗長化、負荷分散、高性能の追求
2.1 リバースプロキシの導入 ……Apacheモジュール
2.2 キャッシュサーバの導入 ……Squidmemcached
2.3 MySQLレプリケーション ……障害から短時間で復旧する
2.4 MySQLのスレーブ+内部ロードバランサの活用例
2.5 高速で軽量なストレージサーバの選択
3章 止まらないインフラを目指すさらなる工夫 ……DNSサーバ、ストレージサーバ、ネットワーク
3.1 DNSサーバの冗長化
3.2 ストレージサーバの冗長化 ……DRBDでミラーリング
3.3 ネットワークの冗長化 ……Bondingドライバ、RSTP
3.4 VLANの導入 ……ネットワークを柔軟にする
4章 性能向上、チューニング ……Linux単一ホスト、ApacheMySQL
4.1 Linux単一ホストの負荷を見極める
4.2 Apacheのチューニング
4.3 MySQLのチューニングのツボ
5章 省力運用 ……安定したサービスへ向けて
5.1 サービスの稼働監視 ……Nagios
5.2 サーバリソースのモニタリング ……Ganglia
5.3 サーバ管理の効率化 ……Puppet
5.4 デーモンの稼働管理 ……daemontools
5.5 ネットワークブートの活用 ……PXE、initramfs
5.6 リモートメンテナンス ……メンテナンス回線、シリアルコンソール、IPMI
5.7 Webサーバのログの扱い ……syslog、syslog-ng、cron、rotatelogs
6章 あのサービスの舞台裏 ……自律的なインフラへ、ダイナミックなシステムへ
6.1 はてなのなかみ
6.2 DSASのなかみ
Appendix
mymemcheck(4.3節)
apache-status(5.2節)
ganglia.patch(5.2節)

サーバー/インフラを支える技術