3 Minutes Networking Step-by-Step
No.16

ネットワークなぜなに講座

構築第16回サーバへの負荷を軽減しよう(1)

■ 構築問題 第十六問

おねーさん

おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Step by Step !!

おねーさん

え〜っと、前回が高可用性の確保だったわね。

ほげたん

冗長化だね、内部ネットワークの。
HSRP……じゃなくって、VRRPで。

おねーさん

うんうん。じゃ、次の発展いきましょう。

ほげたん

発展?

おねーさん

基本形からの発展ね。
そうね〜、前回が高可用性だったから、それとからめて負荷分散やりましょう。

Webサーバの負荷を分散しなさい

第十六問

[FigureSS16-01:第十六問]

  • Webサーバを1台追加し、負荷を分散しなさい
    • 現在のネットワーク構成は第十四回の問題と同じとする
    • 現行のWebサーバと同スペック、同コンテンツのサーバを1台追加する
    • 可用性も考えなさい
ほげたん

ん? 構成図は前回の冗長化状態じゃないんだ。

おねーさん

そうね、アレのままだと構成図面倒だからね。
基本形に戻して、考えてみてね。

解答は非表示になっています。自分なりの答えができた方は表示させてください

■ 構築問題 第十六問 解答

ほげたん

負荷分散負荷分散……。
こういうのはどう?

ほげたんの解答

[FigureSS16-02:ほげたんの解答]

おねーさん

サーバを追加して? IPアドレスが違うけど、ホスト名は同じ?

ほげたん

そう、ゾーンはこんな感じ。
第14回のと見比べてね。

NameTypeRData
3min.jp.SOA-
3min.jp.NSns.3min.jp.
3min.jp.MXmx.3min.jp.
wwwA200.100.10.10
200.100.10.11
nsA200.100.10.12
mxA200.100.10.13

[TableSS16-01:ns.3min.jpのゾーンファイル]

おねーさん

ふ〜ん、つまり、DNSラウンドロビンね。
名前解決の問い合わせで返すIPアドレスを変えることによる負荷分散。

ほげたん

うぅぅぅ、おね〜さん、ひどいよ。

おねーさん

何が?

ほげたん

せっかく、僕が説明しようと思ってたのに。先に言っちゃうなんて。
鬼だよ、悪魔だよ、戦鬼だよ。まぁ、今に始まった話じゃないけど。

おねーさん

……。

ほげたん

ぐぐぅぅぅぅぅ。苦しい〜。

おねーさん

そこまで言うからには、DNSラウンドロビンによる負荷分散の弱点をわかってるんでしょうね?

ほげたん

うぐぐぐ、弱点? し、知らな……うぐっ!!

おねーさん

しばらくオチてなさい。
DNSラウンドロビンの弱点は、生存確認を行わないことにあるのよ。

[FigureSS16-03:DNSラウンドロビンの問題点]

おねーさん

なので、確かに負荷分散といえば負荷分散なんだけど、可用性を高めることができないわけね。
せっかくサーバが2台あるのに、ちょっとこれじゃね。

ほげたん

おね〜さんも僕の生存確認はしてくれないんだ。

おねーさん

で、ほげたん?
違う手段で負荷分散して。

ほげたん

僕は冗長化されてないんだから、もうちょっと優しくしてくれても…。

おねーさん

(ギロリ)

ほげたん

はい、ごめんなさい……。
じゃあ、負荷分散装置を導入するよ。

ほげたんの解答・2

[FigureSS16-04:ほげたんの解答・2]

おねーさん

配置はいいけど、これだけじゃ情報が足りないわ。
DNSやNATはどうするの? どう返して、どう変換するの?

ほげたん

う〜ん…。

ほげたんの解答・2 設定

[FigureSS16-05:ほげたんの解答・2 設定]

ほげたん

ゾーンはこう?

NameTypeRData
3min.jp.SOA-
3min.jp.NSns.3min.jp.
3min.jp.MXmx.3min.jp.
wwwA200.100.10.11
nsA200.100.10.12
mxA200.100.10.13

[TableSS16-02:ns.3min.jpのゾーンファイル・負荷分散]

おねーさん

NATは?

分類インタフェースIPアドレスインタフェースIPアドレス
NATWAN200.100.10.11DMZ172.16.10.14
WAN200.100.10.12DMZ172.16.10.12
WAN200.100.10.13DMZ172.16.10.13

[TableSS16-03:NATテーブル・負荷分散]

おねーさん

DNSでは「www」に対し、200.100.10.11を返す。基本的に前と同じよね。
その代わり、NATテーブルで200.100.10.11を負荷分散装置のアドレスに変換するわけね。

ほげたん

そう、それで負荷分散装置にデータを流すようにするんだ。
で、ファイアウォールのパケットフィルタも変える必要があるよね。

プロトコル送信元IPアドレス送信元ポート宛元IPアドレス宛元ポート方向動作
TCP**172.16.10.1180WAN→DMZ許可
TCP**172.16.10.1253WAN→DMZ許可
TCP**172.16.10.1325WAN→DMZ許可
IP**172.16.10.0/24*WAN→DMZ禁止

[TableSS14-04:フィルタリングテーブル(抜粋)]

ほげたん

これの、webサーバへのフィルタ許可を…。

プロトコル送信元IPアドレス送信元ポート宛元IPアドレス宛元ポート方向動作
TCP**172.16.10.1480WAN→DMZ許可
TCP**172.16.10.1253WAN→DMZ許可
TCP**172.16.10.1325WAN→DMZ許可
IP**172.16.10.0/24*WAN→DMZ禁止

[TableSS16-04:フィルタリングテーブル・負荷分散]

ほげたん

こう変える。

おねーさん

ま、いいでしょ。

ほげたん

ほっ。

おねーさん

そういえば、ほげたん?
一口に負荷分散装置っていっても、どうやって負荷分散するかで違いがあるのはわかるわね。

方式割り振り
ラウンドロビンアクセスごと交互に振り分ける
優先度・重みつけ設定した値により振り分ける度合いを変える
接続数同時接続数が少ないサーバへ割り振る
応答時間もっとも早く応答するサーバへ割り振る
CPU使用率もっともCPU負荷が軽いサーバへ割り振る
しきい値接続数・応答時間・CPU使用率のどれかで設定
しきい値を超えるまでは1台に、超えたらもう1台に割り振る

[TableSS16-05:負荷分散の方式]

おねーさん

どれか1つじゃなくて、複数を組み合わせる方式もあるわね。

ほげたん

なるほどだよ。

おねーさん

あとは……、負荷分散装置にも弱点があるのは知ってるわね?

ほげたん

え? 負荷分散装置にも弱点があるの?

おねーさん

セッション維持の問題があるのよ。WebだとCGIとかのサーバサイドスクリプトで問題が発生することがあるの。

[FigureSS16-06:セッション維持の問題]

ほげたん

は〜。なんか前回のNATの問題みたいだね。
これって対処法あるの?

おねーさん

そうね、基本的に同じサーバへ割り振るようにすればいいのよ。
送信元IPアドレスが同じパケットは同じサーバに割り振るとか。

ほげたん

プロキシとか、NATとか使われてたら?
同じアドレスでも別のがくるよね。

おねーさん

それなら、Cookieに識別用のIDかなんかを書いておいて、それで識別すればいいのよ。
あとは、SSL使ってる場合なら、SSLのセッションIDとか。

ほげたん

なるほどなるほど。

おねーさん

そういえば、「可用性も考えなさい」って言ってたけど。
負荷分散装置で冗長性を確保するにはどうすればいいの? さっきのDNSラウンドロビンみたいなことが起きないようにするには?

ほげたん

ん〜、さっきの話からいくと、生存確認をすればいいのかな?

おねーさん

そうね、サーバの生存を確認し、応答のあるサーバだけに割り振るようにすればいいわけよね。

ほげたん

だよね。

おねーさん

つまり、負荷分散装置には、「割り振り」「生存確認」「セッション維持」などの機能が必要だ、ってことね。

ほげたん

負荷分散と同時に、冗長も行うんだね。

おねーさん

そうね、普通は組み合わせて使うわよね。
今回のポイントは負荷分散装置をどう使って、どんな機能や制限があるかってこと、かな?

ほげたん

うん、了解だよ。

おねーさん

よしよし。じゃまた次回ね。
おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Step by Step !! でした〜〜〜っ!!
まったね〜〜〜!!

負荷分散装置
[Load-Balancer]
レイヤ4・7スイッチなど。
図では「LB」と省略します。

3 Minutes Networking Step-by-Step No.16

管理人:aji-ssz(at)selene.is.dream.jp