hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

ラベル keepalived の投稿を表示しています。 すべての投稿を表示
ラベル keepalived の投稿を表示しています。 すべての投稿を表示

2009-08-27

NAT構成ネットワークでkeepalivedによるロードバランサの実験

libvirtでNAT構成にするための設定ApacheのServer-Side Includesの設定の準備ができたところで、いよいよロードバランサの実験です。

ホストOS上の/etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state BACKUP
    interface br0
    virtual_router_id 50
    priority 200
    advert_int 1
    garp_master_delay 10
    virtual_ipaddress {
        192.168.11.100
    }
}

virtual_server 192.168.11.100 80 {
    delay_loop 1
    lvs_sched rr
    lvs_method NAT #DR
    protocol TCP
    real_server 192.168.122.11 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status 200
            }
            connect_timeout 3
        }
    }
    real_server 192.168.122.12 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status 200
            }
            connect_timeout 3
        }
    }
}

実験用スクリプト

$ while :; do curl http://192.168.11.100; env LANG=C date; sleep 1; done

実行結果はこんな感じ。

Hello, this is vm11.
Thu Aug 27 02:47:03 JST 2009
Hello, this is vm10.
Thu Aug 27 02:47:05 JST 2009
Hello, this is vm11.
Thu Aug 27 02:47:06 JST 2009
Hello, this is vm10.
...(略)...

vm10でhttpdを止めてみるとvm11のみにいくようになりました。その前に

curl: (52) Empty reply from server

が1回出るときと1回も出ずにスムーズにvm11に切り替わるときがありました。

その後、vm10でhttpdを再開してみたのですが、引き続きvm11にしかいきません。ホストOSで

# /etc/init.d/keepalived reload

と実行してみると再びvm10とvm11に交互に投げるようになりました。inhibit_on_failureというオプションがあるぐらいなので指定しない場合は復活するのかと思っていたのですが。これはこういうものなのかは今後調査したいと思います。

2009-08-22

CentOS-Testingからkeepalivedを入れてVRRPの実験

インストール

# yum --enablerepo=c5-testing install keepalived

ファイアウォール設定

keepalivedを利用する際に気をつけておくこと - よかろうもん!を参考にしました。

iptables設定変更

# vi /etc/sysconfig/iptables

変更内容

--- /etc/sysconfig/iptables     2009/08/23 00:54:44     1.3
+++ /etc/sysconfig/iptables     2009/08/23 07:47:37
@@ -15,6 +15,7 @@
 -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+-A RH-Firewall-1-INPUT -m state --state NEW -p 112 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

man iptablesして確認したところ、-pの後にしているのはプロトコル番号。/etc/protocolsに

vrrp    112     VRRP            # Virtual Router Redundancy Protocol

という行があるので112ではなくvrrpとも書けるが、他が数値での指定なので合わせた。ちなみにRFC3768によると使用するポート番号も112。

iptables再起動

# /etc/init.d/iptables restart

VRRPによる仮想IP設定

# vi /etc/keepalived/keepalived.conf

作成内容

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 200
    advert_int 1
    garp_master_delay 5
    virtual_ipaddress {
        192.168.11.240
    }
}

実IPアドレスが192.168.11.241, 192.168.11.242の2台で仮想IPアドレスが192.168.11.240という想定です。priorityはもう1台では100などと違う値にします。

RFC3768によるとAuthentication Type 1, Authentication Type 2はRFC2338との互換性のために残されているが使用されないとのこと。なので、Authentication Type 0つまり認証無しということでkeepalivedのauthentication {}の部分は指定しない。

keepalived起動およびサービス設定

# /etc/init.d/keepalived start
# chkconfig keepalived on

ブログ アーカイブ