■ 構築問題 第十六問
おね〜さんと、
ほげたんのっ!!
3 Minutes Networking、
Step by Step !!
え〜っと、前回が高可用性の確保だったわね。
冗長化だね、内部ネットワークの。
HSRP……じゃなくって、VRRPで。
うんうん。じゃ、次の発展いきましょう。
発展?
基本形からの発展ね。
そうね〜、前回が高可用性だったから、それとからめて負荷分散やりましょう。
Webサーバの負荷を分散しなさい
[FigureSS16-01:第十六問]
- Webサーバを1台追加し、負荷を分散しなさい
- 現在のネットワーク構成は第十四回の問題と同じとする
- 現行のWebサーバと同スペック、同コンテンツのサーバを1台追加する
- 可用性も考えなさい
ん? 構成図は前回の冗長化状態じゃないんだ。
そうね、アレのままだと構成図面倒だからね。
基本形に戻して、考えてみてね。
■ 構築問題 第十六問 解答
負荷分散負荷分散……。
こういうのはどう?
[FigureSS16-02:ほげたんの解答]
サーバを追加して? IPアドレスが違うけど、ホスト名は同じ?
そう、ゾーンはこんな感じ。
第14回のと見比べてね。
Name | Type | RData |
---|---|---|
3min.jp. | SOA | - |
3min.jp. | NS | ns.3min.jp. |
3min.jp. | MX | mx.3min.jp. |
www | A | 200.100.10.10 |
200.100.10.11 | ||
ns | A | 200.100.10.12 |
mx | A | 200.100.10.13 |
[TableSS16-01:ns.3min.jpのゾーンファイル]
ふ〜ん、つまり、DNSラウンドロビンね。
名前解決の問い合わせで返すIPアドレスを変えることによる負荷分散。
うぅぅぅ、おね〜さん、ひどいよ。
何が?
せっかく、僕が説明しようと思ってたのに。先に言っちゃうなんて。
鬼だよ、悪魔だよ、戦鬼だよ。まぁ、今に始まった話じゃないけど。
……。
ぐぐぅぅぅぅぅ。苦しい〜。
そこまで言うからには、DNSラウンドロビンによる負荷分散の弱点をわかってるんでしょうね?
うぐぐぐ、弱点? し、知らな……うぐっ!!
しばらくオチてなさい。
DNSラウンドロビンの弱点は、生存確認を行わないことにあるのよ。
[FigureSS16-03:DNSラウンドロビンの問題点]
なので、確かに負荷分散といえば負荷分散なんだけど、可用性を高めることができないわけね。
せっかくサーバが2台あるのに、ちょっとこれじゃね。
おね〜さんも僕の生存確認はしてくれないんだ。
で、ほげたん?
違う手段で負荷分散して。
僕は冗長化されてないんだから、もうちょっと優しくしてくれても…。
(ギロリ)
はい、ごめんなさい……。
じゃあ、負荷分散装置を導入するよ。
[FigureSS16-04:ほげたんの解答・2]
配置はいいけど、これだけじゃ情報が足りないわ。
DNSやNATはどうするの? どう返して、どう変換するの?
う〜ん…。
[FigureSS16-05:ほげたんの解答・2 設定]
ゾーンはこう?
Name | Type | RData |
---|---|---|
3min.jp. | SOA | - |
3min.jp. | NS | ns.3min.jp. |
3min.jp. | MX | mx.3min.jp. |
www | A | 200.100.10.11 |
ns | A | 200.100.10.12 |
mx | A | 200.100.10.13 |
[TableSS16-02:ns.3min.jpのゾーンファイル・負荷分散]
NATは?
分類 | インタフェース | IPアドレス | インタフェース | IPアドレス |
---|---|---|---|---|
NAT | WAN | 200.100.10.11 | DMZ | 172.16.10.14 |
WAN | 200.100.10.12 | DMZ | 172.16.10.12 | |
WAN | 200.100.10.13 | DMZ | 172.16.10.13 |
[TableSS16-03:NATテーブル・負荷分散]
DNSでは「www」に対し、200.100.10.11を返す。基本的に前と同じよね。
その代わり、NATテーブルで200.100.10.11を負荷分散装置のアドレスに変換するわけね。
そう、それで負荷分散装置にデータを流すようにするんだ。
で、ファイアウォールのパケットフィルタも変える必要があるよね。
プロトコル | 送信元IPアドレス | 送信元ポート | 宛元IPアドレス | 宛元ポート | 方向 | 動作 |
---|---|---|---|---|---|---|
TCP | * | * | 172.16.10.11 | 80 | WAN→DMZ | 許可 |
TCP | * | * | 172.16.10.12 | 53 | WAN→DMZ | 許可 |
TCP | * | * | 172.16.10.13 | 25 | WAN→DMZ | 許可 |
IP | * | * | 172.16.10.0/24 | * | WAN→DMZ | 禁止 |
[TableSS14-04:フィルタリングテーブル(抜粋)]
これの、webサーバへのフィルタ許可を…。
プロトコル | 送信元IPアドレス | 送信元ポート | 宛元IPアドレス | 宛元ポート | 方向 | 動作 |
---|---|---|---|---|---|---|
TCP | * | * | 172.16.10.14 | 80 | WAN→DMZ | 許可 |
TCP | * | * | 172.16.10.12 | 53 | WAN→DMZ | 許可 |
TCP | * | * | 172.16.10.13 | 25 | WAN→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」と省略します。