Linux (LVS) でつくるロードバランサー入門 研修コースに参加してみた

今回参加した研修コースは Linux でつくるロードバランサー (LVS) です。
サーバ構築が出来るようになってくると、次のステップとして可用性、耐障害性など実際の運用フェーズで必要となる知識や経験が必要になります。今回は負荷分散です。
参加してみると、ロードバランサーの知識や設定だけでなく実運用に近くなるので、設定するものが多く手順も増え、さらに検証にあたってどう再現するのか、このあたりは中級らしく工夫が必要になってくることを体験できました。(クラウド時代なので、逆に研修でしか手作業で設定することは無いのかも知れません)
初級の構築に慣れてきた方には、とても実運用に近い構築シリーズとして、とてもオススメです!
では、どんな内容だったのか、レポートします !!
もくじ
コース情報
想定している受講者 | サーバおよびネットワーク技術(主要なハードウェアとプロトコル)に関する基礎知識とLinuxの使用経験があること |
---|---|
受講目標 | LVSの機能と使用方法について理解する |
講師紹介
インフラの研修コースといえば、新谷 泰英さん です。

どうすれば技術を身につけられるか、理解できるか、研究しつづけるインフラ系の人気トレーナー
お名前の紹介とともに、このコースを紹介いただきました。
- あとで試せるように環境構築してます
- LVSはどんなものか?
- ロードバランサーの検証方法
LVS とは
まずは Load Balancer (LB) の背景や LVS の機能、基本構成を解説いただきました。
LVS
- Linux Virtual Server
- 2 つの主な機能
- IPVS
- こちらがロードバランサーとして使われる
- L4
- IP アドレスとポート番号を使って負荷分散する
- アプリケーション単位で負荷分散できる
- カーネルに入っている (簡単に使える)
- クラウドのロードバランサーサービスの幾つかがこれ
- (今日はここを話します)
- KTCPVS
- L7
- 2003年ぐらいから開発が止まっている
- IPVS
- リバースプロキシ
- ロードバランサーに近しいものとしてある
- キャッシュを使う
- Nginx / Pound / ATS
ロードバランサー (LB) をやる背景
- サーバの負荷は高く
- サーバは停めにくい (可用性を高めたい)
- 雑な解決方法だけど複数台で負荷を分ければ良い
- サーバの稼働状況を見ながら振り分けをする
- 最小限の構成はLB1台, サーバ2台
- SPoF (単一障害点) をなくそう
- LB も多重化するほうがよいです
構成と用語
- ディレクター
- ロードバランサー
- 実サーバ
- 実際のアプリケーションを提供するサーバ
- Real Server ともいう
- VIP (Virtual IP)
- 外向けに使うのでグローバルIPを使う
- 1つのロードバランシング機構 (LVSクラスタ) として考える
- 複数台の LB を使ったりするので
- DIP
- ディレクターに振られた IP アドレス
- 内部向け
- RIP
- Real Server ごとに振られた IP アドレス
- DGW
- LB からみたデフォルトゲートウェイ
環境構築
ここからは実際に環境を構築して、ロードバランサーを構築します。
今日の演習環境
- 単純なラウンドロビンで振り分けする
- VM として VirtualBox を使用
- LB ならびにサーバはすべて CentOS 6.5
- 実サーバはコピーするのでMACアドレスを自動変動する設定にする
作業手順
- ディレクターを 8 割ぐらい構築設定
- 実サーバ 1 を構築して停止
- 実サーバ 1 をコピーして実サーバ2を構築->IPなど設定
- 実サーバ 1 を再稼働
- ディレクターを起動し、実サーバ1, 2 で LB クラスタとして設定
なお、ディレクターは外向け内向けと IP を持って、ルーティングさせます (要は IP 転送設定を ON にする)。
1. ディレクターを8割ぐらい構築設定
- VM のネットワーク設定
- NAT: MACアドレス変更の設定
- IP アドレスを設定
- IP 転送設定を有効化
vi /etc/sysctl.conf
で編集
- FireWall の設定を変更
- ipvsadm をインストール
2. 実サーバ1を構築して停止
- VM のネットワークアダプターを設定
- ホスト名を変更
- FireWall の設定を変更
- Web サーバをインストール
- Apache (httpd)
- 簡単な Web ページを作成
-
/var/www/html/index.html
- ホスト名を記述
-
- IPアドレスを設定
-
vi /etc/sysconfig/netword-scripts/ifcfg-eth0
UUID=~
を削除BOOTPROTO=static
に変更IPADDR=10.0.0.10
などを追加
-
- 停止
3. 実サーバ 1 をコピーして実サーバ 2 を構築->IPなど設定
- コピー (クローン) 元のVMをネットワークアダプターの設定変更
- MACアドレスの初期化に注意
- ホスト名を変更
- IPアドレスを設定
vi /etc/sysconfig/netword-scripts/ifcfg-eth0
IPADDR=10.0.0.20
を追加
- Webページのホスト名を変更
- 再起動
4. ディレクターを起動し、実サーバ1, 2 でLBクラスタとして設定
- ディレクターのVMのネットワークアダプターの設定を変更
- IPアドレスを設定
-
vi /etc/sysconfig/netword-scripts/ifcfg-eth0
BOOTPROTO=static
に変更IPADDR=10.0.0.1
などを追加
-
- VIP の割り当て
ip addr add 192.168.56.50 label eth0-lvsvip dev eth0
- VIP の登録
ipvsadm -A -t 192.168.56.50:80 -s rr #rr はラウンドロビン ipvsadm -A -t 192.168.56.50:443 -s rr #rr はラウンドロビン
- 実サーバの登録 (ここでは 1 のみをサンプルとして)
ipvsadm -a -t 192.168.56.50:80 -r 10.0.0.10 -m #-m はNAT方式のオプション
- 確認
ipcsadm -ln
ipvsadm -a -t 192.168.56.50:443 -r 10.0.0.10 -m
検証
構築した LB 環境を実際に検証してみます。
- ブラウザで確認
- その他の検証
- ディレクターと実サーバ 1, 2 のアクセスログを確認
- DSR
- いま作ったものは LB を通してリクエストとレスポンスしている
- レスポンスだけ LB を通さず、実サーバから直接クライアントに返す方法が DSR
このロードバランサーの環境を検証できたところで、このコースは修了しました。
まとめ
このコースではロードバランサーを構築し、実際に負荷が分散できているか、検証まで行いました。
参加してみると、単純なWebサーバ構築などと比べて、実運用に近くなる分、設定対象が増え、手順も複雑になり、いかに効率よく進めるかも重要になることがわかりました。
一方で、これは研修という枠組みの問題ですが、個人で演習できる環境ではどうしても小規模になるので、実運用との差をどのようにして埋めるのか、研修として出来る余地があるように思いました。知識、というより体験かも知れません。
初級の構築とはまた違った色々なことが考えられるコースなので、脱初級するインフラエンジニアの方にはオススメです !!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!

IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!

SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。