keepalivedで冗長化

  • 2008/08/17

この前の LVS の構成では落ちているサーバにもお構いなしにリクエストを
転送してしまうので keepalived を使って冗長化してみました

ちなみに、今回も動作を見たかっただけなので必要最低限のことしか
やってませんが、あしからず

まずは keepalived をソースからインストールします


# tar zxvf keepalived-1.1.15.tar.gz
# cd keepalived-1.1.15
# ./configure --prefix=/usr/local
# make
# make install


特に引っかかるところはありませんでした
続いて最低限の keepalived.conf を作ります


virtual_server 192.168.0.200 80 {
  delay_loop 5
  lb_algo lc
  lb_kind NAT
  nat_mask 255.255.255.0
  protocol TCP

  sorry_server 127.0.0.1 80
  virtualhost 127.0.0.1

  real_server 192.168.1.101 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path /index.html
        status_code 200
      }
      connect_timeout 3
    }
  }
  real_server 192.168.1.102 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
      url {
        path /index.html
        status_code 200
      }
      connect_timeout 3
    }
  }
}


これで環境ができました
早速実行してみます


# /usr/local/sbin/keepalived -n -S 1 ¥
  -f /usr/local/etc/keepalived/keepalived.conf --check -d


まず両方のリアルサーバが生きている状態で確認


# 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.102:80        Masq    1      0          0
  -> 192.168.1.101:80        Masq    1      0          0


ここで 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.102:80        Masq    0      0          0
  -> 192.168.1.101:80        Masq    1      0          0


自動的に Weight が 0 に変わって転送されなくなりました

素晴らしい〜

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

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

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

この記事にコメントする

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