LVS+KeepAlived心得


ここ数日lvs+keepalivedをしていますが、その過程を明日更新する詳細を大まかに書きます.
一、基礎環境の配置
  • は5台の仮想マシンを申請しましたテストだけなので構成は無視します
    ノードタイプ
    IPアドレス計画
    ホスト名
    を選択します.
    lvs-master
    eth0:10.240.210.41
    lvs-master
    public ip
    eth1:192.168.1.100
    priv1
    private ip
    eth0:0:10.240.210.46
    なし
    vitural ip
    lvs-master-back
    eth0:10.240.210.42
    lvs-master-back
    public ip
    eth1:192.168.1.101
    priv2
    private ip
    RealServerA
    eth0:10.240.210.43
    lvs-master-back
    public ip
    lo:0:10.240.210.46
    なし
    vitural ip
    RealServerB
    eth0:10.240.210.44
    RealServerB
    public ip
    lo:0:10.240.210.46
    なし
    vitural ip
    lvsスペア
     eth0:10.240.210.45
    RealServerB
    public ip

  • 2台のlvsはprivate ipであるeth 1を利用して心拍数をした.
    VIP、すなわち虚IPは、スクリプトを書くことができ、スクリプトは後で公表され、keepalivedサービスのみであれば、keepalivedのために書かなくてもよい.confで配合できます.                  
    lo:0:10.24.240.210.46(このipも虚ipスクリプトと注意事項は後述)
    簡単に説明すると、実はlvsを3台作るだけで十分で、ネットカードも1枚でいいです.結局、どの会社もそんなに多くの実力を持っているわけではありません.このように無駄なlvsをするのは実力があれば、ソフトとハードを結合することができます.F 5+lvsの効果はもっといいです.なぜかというと、主にこのlvsを系統的に理解したいと思っています.
    2台のlvsはデュアルマシンのホットスペアを行い、真ん中にeth 1がドキドキし、相手のマシンの在庫状態をリアルタイムで監視することができます.
    2台のRSサーバーも専門のethではなくlo:0を作ったのは、主に実際の状況と結びつけて、コストを下げて、1枚のネットカードで十分で、VIPをlo口に縛ることができて、しかもlo口はもっと安全で、downしにくいからです.
    lvs-masterエンドバインドVIPスクリプト:
    #!/bin/bash
    VIP=10.240.210.46
    /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.0 up
    /sbin/route add -host $VIP dev eth0:0

    そしてvip.shをrcに加える.local:
    echo "/root/vip.sh" >> /etc/rc.local

    lvs-master-backはVIPを縛る必要はありませんが、もちろん後期に問題が発生してデバッグをするときはバインドしなければなりません.後で話します.
    RSAおよびRSB側バインディングVIPスクリプト:
    #!/bin/bash
    VIP="10.240.210.46"
    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    /sbin/route add -host $VIP dev lo:0
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p >/dev/null 2>&1
    echo "RealServer Start OK"

    そしてlo.shをrcに加える.local:
    echo "/root/lo.sh" >> /etc/rc.local

     
    二、lvs+keepalived
    2.1.1 LVSはIPVSモジュールによって実現される.IPVSはLVSクラスタシステムのコアソフトウェアであり、主にユーザの要求がロードスケジューラに到達した後、どのように各RSノードに要求を送信するか、RSノードがどのようにユーザにデータを返すかなどに用いられる.
    私が使っているシステムはRedhat 6です.5,システムカーネルはデフォルトでLVS機能をサポートする.
    modprobe-l|grep ipvsでkernelがLVSのモジュールをサポートしているかどうかを確認できます
    [root@lvs_master ~]# modprobe -l | grep ipvs 
    kernel/net/netfilter/ipvs/ip_vs.ko
    kernel/net/netfilter/ipvs/ip_vs_rr.ko
    kernel/net/netfilter/ipvs/ip_vs_wrr.ko
    kernel/net/netfilter/ipvs/ip_vs_lc.ko
    kernel/net/netfilter/ipvs/ip_vs_wlc.ko
    kernel/net/netfilter/ipvs/ip_vs_lblc.ko
    kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
    kernel/net/netfilter/ipvs/ip_vs_dh.ko
    kernel/net/netfilter/ipvs/ip_vs_sh.ko
    kernel/net/netfilter/ipvs/ip_vs_sed.ko
    kernel/net/netfilter/ipvs/ip_vs_nq.ko
    kernel/net/netfilter/ipvs/ip_vs_ftp.ko
    kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko

    上記のような出力がある場合は、システムカーネルがIPVSモジュールをデフォルトでサポートしていることを示します.
    2.1.2 IPVS管理ソフトをインストールして、ここでyumを使って、手編みを使わないで、簡単で速いです.
    yum install ipvsadm

    そして実行
    ipvsadm --help

    ヘルプメッセージが表示されたら、IPVSが正常にインストールされたことを示します.
    2.2 keepalivedのインストール
    最新バージョンはkeepalived-1.2.13です.tar.gz
    tar keepalived-1.2.13.tar.gz
    cd keepalived-1.2.13
    ./configure --sysconf=/etc \
    >--with-kernel-dir=/usr/src/kernels/2.6.32-431.29.2.el6.x86_64
    make
    make install
    ln -s /usr/local/sbin/keepalived /sbin

    --sysconfはkeepalivedプロファイルのインストールパスを指定します.--with-kernel-dirというパラメータはkeepalivedをカーネルにコンパイルするのではなく、カーネルソースコードのヘッダファイル、すなわちincludeディレクトリを使用することを指定します.LVSを使用する場合のみ、このパラメータを使用する必要があります.他の場合は必要ありません.
    インストールが完了したら、次の操作を行います.
    keepalived --help

    keepalivedが正常にインストールされたことを示します.