

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
この記事では、ipvsとは何かを、初心者にも分かるように丁寧に解説します。ipvsはLinuxカーネルの機能の一部で、複数のサーバへトラフィックを分散する「ロードバランサー」です。仮想IP(VIP)を使って、同じアドレスにアクセスしてきたクライアントのリクエストを、背後にある複数の実サーバへ均等に割り振ります。これにより、サービスの信頼性と処理能力を向上させることができます。
ipvsの基礎と仕組み
ipvsは、LVS(Linux Virtual Server)の中核となるコンポーネントです。主な要素として、仮想サーバ(Virtual Server)と、実際に処理を担当する実サーバ(Real Server)があります。クライアントは仮想IPにアクセスしますが、IPVSが受け取ったリクエストを実サーバへ分散させ、実サーバからの応答をクライアントへ返します。
動作モードには主に以下のようなものがあります。
- NAT(Network Address Translation)モード:パケットの送信元情報を変換して実サーバへ送る方式。設定は比較的簡単ですが、パケット処理がやや重くなりやすいです。
- DR(Direct Routing)モード:仮想IPと実サーバの間で直接応答が返る方式。高い処理性能が得られますが、ネットワーク設計の要件が厳しくなります。
- TUN( tunneling )モード:IP層でルーティングを行う方式。柔軟性があり、複雑な環境に適しています。
これらのモードはいずれも、IPレベルでの負荷分散を実現し、アプリケーション層の詳細に左右されずにトラフィックをさばくことができます。
実際の設定と運用の流れ
実際にipvsを使ってロードバランスを構築する基本的な流れを、コマンド例とともに紹介します。
前提として、Linux環境にて ipvsadm というツールが用いられます。これはIPVSの設定を行うためのコマンド群です。
1) ipvsadm のインストールと準備
例: Debian系なら sudo apt-get install ipvsadm、RedHat系なら sudo yum install ipvsadm を実行します。インストール後、IPVSが有効になっていることを確認します。
2) 仮想サーバの追加
例: ipvsadm -A -t 192.168.1.100:80 -s rr
ここで 192.168.1.100:80 は仮想IPとポート、-s rr はラウンドロビン方式を指定しています。
3) 実サーバの登録
例: ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.101:80 -m、ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.102:80 -m
ここで -a は追加、-r は実サーバの追加、-m は NAT 方式を意味します(DR/ Tunを使う場合は -g や -t の組み合わせを選択します)。
4) 状態の確認と管理
例: ipvsadm -L -n で現在の設定を一覧表示します。ipvsadm -Z で設定の保存・再ロードを行うことも可能です。
5) 実運用時の注意点
・ヘルスチェック:実サーバの健全性を定期的に監視し、停止したサーバを自動的に除外する設定が重要です。
・セキュリティ:VIPを守る適切なファイアウォール設定と、不要なポートの開放を避けましょう。
・監視とログ:トラフィックの分散状況や障害時の挙動を把握できる監視ツールを組み合わせると安定運用がしやすくなります。
ipvs の利点と他の技術との違い
IPVSはL4(トランスポート層)ロードバランシングに強く、NginxやHAProxyのようなL7ロードバランサに比べてオーバーヘッドが小さい場合があります。そのため、Web サービスの基盤において高い処理能力が求められる場面で選択されることが多いです。一方で、L7 レベルの機能(URL ベースの分岐、ヘッダ情報の詳細な検査など)が必要な場合は、NginxやHAProxy などのL7ロードバランサと組み合わせて使うことが一般的です。
まとめ
ipvsは Linux カーネルの強力なロードバランサ機能で、仮想IPを通じて複数の実サーバへリクエストを分散します。NAT/DR/TUNといったモードがあり、用途に応じて使い分けることができます。設定は ipvsadm というツールで行い、実サーバの追加、仮想サーバの設定、ヘルスチェックの構成を順に行います。適切な監視とセキュリティ対策を合わせることで、高可用性と高い処理能力を両立させることが可能です。この記事を機に、テスト環境で実際に試してみると理解が深まります。
ipvsの同意語
- IP Virtual Server (IPVS)
- Linux Virtual Server(LVS)の中核機能の一つで、複数のバックエンドにトラフィックを分散する“仮想サーバ”を作るための仕組み。IPアドレスを基準にしたロードバランシングを実現します。
- IPVS
- IP Virtual Serverの略称。IP-basedロードバランシングを担当するモジュールで、IPVSとして動作することでトラフィックをバックエンドへ分配します。
- アイピーブイエス
- IPVSの読み方(日本語表記)。
- IP-based load balancing
- IPアドレスを基準にしたロードバランシングの考え方。IPVSはこの機能を技術的に実現します。
- IPロードバランサ
- IPアドレスを用いて負荷分散を行うソフトウェア・機能の総称。IPVSはその代表的な実装の一つです。
- Linux Virtual Server (LVS) のロードバランシング機能
- LVSに含まれるロードバランシング機能の総称。IPVSはLVSのコアモジュールとして動作します。
- LVS
- Linux Virtual Serverの略称。IPVSを含むロードバランシング技術の総称として使われます。
- 仮想サーバー (Virtual Server)
- IPVSが扱う“仮想サーバ”。実バックエンドサーバを抽象化してトラフィックを分散するための論理的なサーバです。
- 仮想サービス (Virtual Service)
- IPVS内で定義される、仮想IPとポートで表されるサービス単位。バックエンドの実サーバへ振り分ける対象です。
ipvsの対義語・反対語
- 直接接続
- IPVSを介さず、クライアントとバックエンドサーバが直接通信する状態のこと。IPVSによる分散は行われない。
- 単一サーバー構成
- 複数のリアルサーバを使わず、1台のサーバーのみで運用する構成のこと。
- ロードバランシングなし
- IPVSや他の負荷分散機構を利用せず、負荷を分散しない状態のこと。
- DNSラウンドロビン
- DNSレベルで複数のバックエンドを返して負荷を分散する手法。IPVSのネットワーク層負荷分散とは別のアプローチ。
- アプリケーション層負荷分散
- L7(アプリケーション層)で負荷を分散する設計。IPVSが主にL4で動作するのに対し、対比として挙げられることがある。
- クラスタリングなし
- 複数ノードをクラスタとして統合して運用する機能を使わない状態。
ipvsの共起語
- IPVS
- Linux Virtual Server のコア機能。カーネルレベルで動作するロードバランシング機構の総称。
- LVS
- Linux Virtual Server の略称。IPVS を核としたロードバランシング技術全体を指すことが多い。
- ipvsadm
- IPVS の設定・運用を行うコマンドラインツール。仮想サーバ・実サーバの登録・削除を管理する。
- VIP
- 仮想IPアドレス。クライアントからのアクセス先として機能し、ロードバランサの入口となるIP。
- 仮想サーバ
- VIP:port に対応する、公開されるサービスエンドポイントの設定単位。
- 実サーバ
- バックエンドの実体サーバ。IPVS が負荷分散の対象として扱う。
- DR
- Direct Routing。VIP をフロントに置き、パケットを直接実サーバへ送るモード。
- NAT
- NAT モード。VIP と実サーバ間でアドレス変換を行い、クライアントからは実サーバのIPが見えない状態にする。
- TUN
- TUN(トンネリング)モード。パケットをトンネル経由で実サーバへ運ぶモード。
- RR
- Round Robin。順番にリクエストを割り振っていく基本アルゴリズム。
- WRR
- Weighted Round Robin。サーバごとに重みを設定して割り当てるアルゴリズム。
- LC
- Least Connections。最も接続数が少ない実サーバへ割り当てるアルゴリズム。
- WLC
- Weighted Least Connections。接続数と重みを組み合わせて分散を最適化するアルゴリズム。
- DH
- Destination Hash。宛先情報をハッシュして分散先を決定するアルゴリズム。
- SH
- Source Hash。クライアントの送信元IPをハッシュして分散先を決定するアルゴリズム。
- SED
- Shortest Expected Delay。遅延の予測を最適化して振り分けるアルゴリズム。
- ヘルスチェック
- RS(実サーバ)の生存・状態を監視する機能。故障時には自動的に振り分けを変更する。
- Keepalived
- 高可用性を実現するデーモン。VRRP による VIP のフェイルオーバーを支援する。
- VRRP
- Virtual Router Redundancy Protocol。VIP の冗長化・可用性を高めるプロトコル。
- kube-proxy (IPVS mode)
- Kubernetes で IPVS を用いたサービス負荷分散を実現するモード。
- IPv4
- IPv4 アドレス空間を使う場合に適用される。
- IPv6
- IPv6 アドレス空間を使う場合に適用される。
- iptables
- NAT やフィルタ設定を行うツール。LVS NAT などで併用されることがある。
- ロードバランシング
- 複数のサーバへトラフィックを分散して処理性能を向上させる技術。
- 高可用性
- HA。障害発生時もサービスを継続する設計思想と仕組み。
ipvsの関連用語
- IPVS
- IP Virtual Server の略。Linuxカーネル機能として、TCP/UDPトラフィックを仮想サーバへ分散するL4ロードバランシングを実現します。
- LVS
- Linux Virtual Server の略。IPVSを中心としたロードバランシステム全体の名称です。
- NATモード
- LVS NATモードでは、ディレクターが受けたパケットの宛先をRSの実IPに変換して返します。クライアントはVIPをそのまま見る前提です。
- DRモード
- Direct Routing。ディレクターはパケットをRSへ転送し、RSがクライアントへ直接応答します。ネットワーク設定がやや複雑です。
- TUNモード
- TUNモード(トンネリング)では、ディレクターとRS間をIPトンネルで結び、RSが応答します。
- VIP
- Virtual IP。クライアントが接続する仮想IPアドレスで、実サーバには直接割り当てません。
- Real Server
- 実サーバー。負荷分散の対象となる実際のサーバです。
- Virtual Service
- 仮想サービス。VIPとポートの組み合わせで定義され、IPVSがこのサービスにトラフィックを配布します。
- ipvsadm
- ipvsadm。IPVSを設定・監視するためのコマンドラインツールです。
- Keepalived
- 高可用性を実現するツール。VRRPでVIPのフェイルオーバーを管理し、IPVS設定を保護します。
- VRRP
- Virtual Router Redundancy Protocol。VIPのフェイルオーバーを実現する冗長化プロトコルです。
- 健康チェック
- RSの生存確認。TCP/HTTP/ICMPなどを用いてRSが稼働しているかを監視します。
- セッションアフィニティ
- セッションの継続性。同じクライアントの接続を同じRSに割り当てる設定です。
- Round Robin
- RR。基本アルゴリズムで、順番にRSへ割り当てます。
- Weighted Round Robin
- WRR。RSごとに重みを設定して割り当ての比率を調整します。
- Least Connections
- LC。接続数が最も少ないRSを選択します。
- Weighted Least Connections
- WLC。接続数と重みを考慮して割り当てます。
- Destination Hashing
- DH。宛先のハッシュ値に基づきRSを決定します。
- TLSパススルー
- TLSを終端せずにパススルーする運用。L4ロードバランサーでよく使われます。



















