mutao.net

いわゆる雑記。

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

1章 サーバ/インフラ構築入門

本書を読み終えたので軽くメモ。

クラウドが便利になって気にしていなかったところの知識やざっくりとした知識で捉えていたものが理解できるようになる良書だった。

ヘルスチェック

  • ICMP監視(L3)

    echoを投げてリプライが来るか監視する。Webサービスのダウンは検知できない。

  • ポート監視(L4)

    TCPで接続を試みる。Webサービスのダウンは検知できるが、サーバの負荷状態等は考慮できない。

  • サービス監視(L7)

    HTTPでヘルスチェックを試みる。ほとんどの異常を検知できるもののエンドポイントの実装によってはサーバに負荷をかける。

DNSラウンドロビン

1つのドメインに複数のIPアドレスを割り当てて負荷分散を行う仕組みのこと。

サーバの数だけGIPが必要になる。DNSサーバはWebサーバの負荷状態やエラー等の状況に応じて問い合わせ結果をコントロールすることができない。

あくまで負荷分散の仕組みであり、冗長化の仕組みではない。

ロードバランサ

1つのIPに対してのリクエストを複数サーバへ分散させる仕組み。

DNSラウンドロビンではWebサーバ毎にGIPが必要だがロードバランサがリクエストを受け付けるのでGIPは不要。

ロードバランサは複数のWebサーバから1台を選択して処理を中継する。

ヘルスチェックが失敗しているサーバを選択しない。

L4スイッチとL7スイッチ

L4スイッチではTCPで分散先を決定するのに対してL7スイッチはアプリケーションの中身まで解析して分散先を決定する。

L7スイッチではクライアント<->ロードバランサとロードバランサ<->WebサーバでTCPセッションを張る。

L4LBのNAT構成とDSR構成

NAT構成の場合クライアントから届いたパケットの送信先アドレスを書き換えてWebサーバに転送する。

DSR構成の場合はIPアドレスを書き変えずにWebサーバへルーティングする。ロードバランサ側の処理が必要なくなりスループットが向上する。ただしL7での負荷分散を行えないず、SSL終端も行えない。

またWebサーバ側がGIPの処理をする必要があるためVIPの設定が必要になる。

ロードバランサがボトルネックになると考えられる場合はDSR構成が望ましい。

ワンランク上のサーバ/インフラ構築

リバースプロキシ

クライアントからの要求を受け取り、Webサーバへと要求を中継する。このときWebサーバはクライアントではなくリパースプロキシに応答を返す。(WAN -> LAN)

リバースプロキシが存在することにより、クライアントからの要求ごとに適切なWebサーバを選択することができる。(ex. UAで振り分け)

静的コンテンツの場合はAPサーバではなく、別のサーバに振り分けることでメモリ使用率を効率化できる。

本書ではapacheをメインに解説していてnginxの説明はでてきていない。