LVS + Keepalived #12013/08/20 |
|
LVS の設定のみでは、負荷分散先として設定したサーバーのどれかがダウンしても、
コネクションをダウンサーバーへ振り分ける可能性があります。
Keepalived を使って転送先サービスの死活監視をすると、そのような状態を回避して、
サービスの冗長化をすることができます。
ここでは以下のような環境を例に設定してみます。
|
VIP|192.168.0.99
eth0|192.168.0.100
+----------+
--------------------| LVS |----------------------
+----------+
eth1|10.0.0.100
|
+----------+ | +----------+
| |10.0.0.30 | 10.0.0.31| |
| Backend1 |------------------------------| Backend2 |
| Web | eth0 eth0| Web |
+----------+ +----------+
|
|
LVS + Keepalived サーバーの eth0 側へ VIP を設定し、VIP宛へ来た HTTP パケットを Backend1, Backend2 の WebサーバーへNAT転送してみます。
なお、バックエンドWebサーバーの両方で、デフォルトゲートウェイを LVS の内側アドレスに設定しておく必要があります。
(例では「10.0.0.100」)
|
|
| [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 インストール |
|
[root@gw ~]# yum -y install keepalived
|
| [3] | Keepalived 設定 |
|
[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 MASTER
# 監視させるインターフェース
interface eth0
# 仮想ルータのID
virtual_router_id 51
virtual_ipaddress {
# 仮想IPアドレス
192.168.0.99
}
}
virtual_server 192.168.0.99 80 {
# 監視する間隔
delay_loop 3
# 負荷分散方式
lvs_sched rr
# パケットの転送方式
lvs_method NAT
protocol TCP
# バックエンドサーバー#1
real_server 10.0.0.30 80 {
weight 1
HTTP_GET {
url {
# 監視先URL
path /
# 正常な場合のステータスコード
status_code 200
}
# タイムアウト時間(秒)
connect_timeout 3
}
}
# バックエンドサーバー#2
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 start Starting keepalived: [ OK ] [root@gw ~]# chkconfig keepalived on
# Keepalived で振られたVIPは ifconfig では出ないので、以下で確認 [root@gw ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:36:92:b5:dd brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0
inet 192.168.0.99/32 scope global eth0
inet6 fe80::216:36ff:fe92:b5dd/64 scope link
valid_lft forever preferred_lft forever
|
| [4] |
以上で設定完了です。クライアントからWebブラウザで設定したVIPにアクセスして動作確認してください。
|
| Sponsored Link |
|
|