CentOS 6
Sponsored Link

LVS + Keepalived #2
2013/08/20
 
LVS + Keepalived 構成で、LVS + Keepalived 自身のサーバーも冗長化する構成で設定してみます。
                              |
             +----------------+----------------+
             |                                 |
192.168.0.100|eth0 ----VIP:192.168.0.99--- eth0|192.168.0.101
     +----------------+               +----------------+
     | LVS+Keepalived |               | LVS+Keepalived |
     +----------------+               +----------------+
   10.0.0.100|eth1 -----VIP:10.0.0.99----- eth1|10.0.0.101
             |                                 |
             +----------------+----------------+
                              |
    +----------+              |               +----------+
    |          |10.0.0.30     |      10.0.0.31|          |
    | Backend1 |------------------------------| Backend2 |
    |   Web    | eth0                     eth0|    Web   |
    +----------+                              +----------+

 
LVS + Keepalived サーバーの eth0, eth1 双方へ VIP を設定し、eth0 側の VIP宛へ来た HTTP パケットを Backend1, Backend2 の WebサーバーへNAT転送してみます。
なお、バックエンドWebサーバーの両方で、デフォルトゲートウェイを LVS の内側 VIPに設定しておく必要があります。 (例では「10.0.0.99」)
[1] LVS の設定は Keepalived で制御されるので、まずは LVSの設定をクリアしておきます。
[root@gw ~]#
ipvsadm -C

[root@gw ~]#
/etc/rc.d/init.d/ipvsadm save

ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[2] Keepalived 設定
両方のサーバーで1箇所を除いて同じ設定でOKです。「priority」の箇所のみ両方のサーバーで同じにならないように適当に値をかえてください。
[root@gw ~]#
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bk

[root@gw ~]#
vi /etc/keepalived/keepalived.conf
# 新規作成

global_defs {
    notification_email {
        cent@srv.world
    }
    notification_email_from root@srv.world
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_Server
}
vrrp_instance VI_1 {
# 両方でバックアップとする(プライオリティで制御する)

    state BACKUP
# 監視させるインターフェース

    interface eth0
# 仮想ルータのID

    virtual_router_id 51
# プライオリティ (ここだけ両方のサーバーで値をかえる)

# (値の大きい方が優先度が高くなる)

    priority 100
# VRRP送信間隔

    advert_int 1
# VRRPをやり取りする際の認証情報

    authentication {
        auth_type PASS
        auth_pass password
    }

    virtual_ipaddress {
# 仮想IPアドレス

        192.168.0.99 dev eth0
        10.0.0.99 dev eth1
    }
}
virtual_server 192.168.0.99 80 {
    delay_loop 3
    lvs_sched rr
    lvs_method NAT
    protocol TCP

    real_server 10.0.0.30 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
        }
    }
    real_server 10.0.0.31 80 {
        weight 1
        HTTP_GET {
            url {
                path /
                status_code 200
            }
            connect_timeout 3
        }
    }
}

[root@gw ~]#
/etc/rc.d/init.d/keepalived restart

Stopping keepalived: [ OK ]
Starting keepalived: [ OK ]
[3]
以上で設定完了です。クライアントからWebブラウザで設定したVIPにアクセスして動作確認してください。
 
Tweet