Home

技術系のメモと日々の雑感

LVS(Linux Virtual Server)環境を作ってみる

ロードバランサと聞くとまず最初に箱モノが頭に浮かんで、とにかく難しいイメージがあったので今まで近寄ることすらしてなかったけど、あるところで LVS(Linux Virtual Server)が実際に動いているのを見てコロッと考えが変わってしまった。
で、自分でも設定方法ぐらいは知っておきたいと思ったので、暇を見つけてトライしてみた。

LVS 用マシンの環境は CentOS 5。
この手の環境を作ろうと思うと、漠然とリアルサーバ(Webサーバ)2台と LVS 用に1台マシンが必要、なんてことが頭に浮かぶけど、今回は設定方法を確認したいだけなので、いかに横着するかという点にこだわってみた。
って、こだわるところがズレてるけど。
で、リアルサーバは、1台で Apache の VirtualHost を使ってサイトを2つ作ってしまうのがいちばん簡単だと思ったのでこれでいくことにした。
ロードバランスの本来の目的をまったく無視してるけど、それはさておき・・・。
IP Alias でアドレスを2つ(192.168.1.101 と 192.168.1.102)振ってから Apache の設定に移る。
敢えて書かないくてもいいんだけど、必要な設定は次の部分ぐらい。(IP ベースなので NameVirtualHost は不要)

<VirtualHost 192.168.1.101:80>
    ServerAdmin webmaster@www1.example.com
    DocumentRoot /home/www1
    ServerName www1.example.com
    ErrorLog logs/www1-error_log
    CustomLog logs/www1-access_log common
</VirtualHost>

<VirtualHost 192.168.1.102:80>
    ServerAdmin webmaster@www2.example.com
    DocumentRoot /home/www2
    ServerName www2.example.com
    ErrorLog logs/www2-error_log
    CustomLog logs/www2-access_log common
</VirtualHost>

構成は手っ取り早い NAT にするので、デフォルトゲートウェイは LVS のサーバ(192.168.1.200)に向けておく。
あとは動きを確認しやすいように /home/www1 と /home/www2 に適当な html ファイルを置くぐらいかな。(それぞれ内容を別のものにしておく)
続いてキモの LVS の設定。
まずは NIC を2枚差して、リアルサーバのセグメント用(192.168.1.200)と名目上の外側の IP(192.168.0.200)を振る。
外側はロードバランス用の IP を別に用意するのが正しいやり方みたいだけど、1つの IP を使い回しても設定できないわけではないのでやっぱりここでも楽な方を選択。
忘れないうちに IP forward を有効にしておこう。

echo 1 > /proc/sys/net/ipv4/ip_forward

CentOS 5 のデフォルトのカーネルには LVS に必要な設定が入っているらしいのでこっちはそのままで ipvsadm をソースからインストールする。

# ln -s /usr/src/kernels/2.6.18-53.el5-i686 /usr/src/linux
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# make
# make install

コンパイル時に /usr/src/linux を見にいくので、エラーが出ないように先にシンボリックリンクを張っておくのを忘れずに。
ひと通り準備ができたので ipvsadm の設定を追加する。

# ipvsadm -A -t 192.168.0.200:80 -s lc
# ipvsadm -a -t 192.168.0.200:80 -r 192.168.1.101 -m
# ipvsadm -a -t 192.168.0.200:80 -r 192.168.1.102 -m

これで、ブラウザで 192.168.0.200 にアクセスすると 192.168.1.102 のページが表示された。
ステータスを確認すると

# ipvsadm -Ln
P Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80  lc
  -> 192.168.1.102:80        Masq    1      1          0
  -> 192.168.1.101:80        Masq    1      0          0

192.168.1.102 側の ActiveConn が 1 になっているのが分かる。
試しに 192.168.1.102 側の設定を削除して強制的に切り替えてみると

# ipvsadm -d -t 192.168.0.200:80 -r 192.168.1.102
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  192.168.0.200:80  lc
  -> 192.168.1.101:80        Masq    1      1          0

うまくいった!

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/18(水) 02:56:04

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/10(火) 23:57:45

-

管理人の承認後に表示されます

  • From: |
  • 2013/12/07(土) 06:16:19

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/29(金) 18:02:23

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/26(火) 15:43:41

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/15(金) 17:00:30

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/13(水) 06:35:05

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/12(火) 13:45:14

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 11:00:44

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 08:33:04

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/04(月) 19:26:53

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 06:57:04

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/03(日) 02:43:59

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 22:34:37

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/01(金) 04:19:20

-

管理人の承認後に表示されます

  • From: |
  • 2013/08/12(月) 20:22:59

-

管理人の承認後に表示されます

  • From: |
  • 2013/08/05(月) 11:54:38

-

管理人の承認後に表示されます

  • From: |
  • 2013/07/09(火) 21:11:30

-

管理人の承認後に表示されます

  • From: |
  • 2013/04/16(火) 03:04:52

-

管理人の承認後に表示されます

  • From: |
  • 2013/04/16(火) 03:04:51

-

管理人の承認後に表示されます

  • From: |
  • 2012/06/18(月) 14:00:44

-

管理人の承認後に表示されます

  • From: |
  • 2012/02/02(木) 00:58:05

-

管理人の承認後に表示されます

  • From: |
  • 2011/02/26(土) 20:21:57

この記事に対するコメント

承認待ちコメント

このコメントは管理者の承認待ちです

  • 投稿者: -
  • 2011/03/06 00:18:02
  • [編集]

この記事にコメントする

管理者にだけ表示を許可する