底辺エンジニアの備忘録

30過ぎて、記憶力低下が著しい為、メモ代わりにしていく予定。 自身のスキルが低いので、内容の正確さは保障できません・・・OTL

LVS(DSR) 検証

LVS(DSR)の動作検証

LinuxLVSでのロードバランサを構築することになったので、メモ
Keepalivedで冗長構成したLVSで、DSR(Direct Server Return)方式での負荷分散を構築

 

  • 検証構成
    今回は、WebサーバをLVSで負荷分散させる。
    LVS1&2はKeepalivedで冗長構成を実施し、Webサーバ用VIPを保持
    PCからは「http://192.168.10.110/」へアクセス
     ※各サーバのIP(第4オクテットは下記図へ記載)

     f:id:klock_3rd:20160124154002p:plain

  • 通信の流れ
    PCからLVS上のVIP(110)へアクセス
    LVSにて負荷分散先のリアルサーバへ転送
     →LVSから受信したリアルサーバは、LVSを経由することなく直接PCへ返送
  • 各サーバの設定
    LVS1&2
     1.keepalived.conf

    global_defs {
    notification_email {
    }
    router_id LVS_DEVEL
    }

    vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 120
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    192.168.10.110
    }
    }

    include web_servers.conf

     2.web_servers.conf

    virtual_server_group web_servers {
    192.168.10.110 80
    }

    virtual_server group web_servers {
    delay_loop 3
    lvs_sched wrr
    lvs_method DR
    protocol TCP

    real_server 192.168.10.103 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
    url {
    path /health_check.html
    status_code 200
    }
    connect_port 80
    connect_timeout 3
    }
    }
    real_server 192.168.10.104 80 {
    weight 1
    inhibit_on_failure
    HTTP_GET {
    url {
    path /health_check.html
    status_code 200
    }
    connect_port 80
    connect_timeout 3
    }
    }
    }

     3.sysctl.conf を編集してカーネルパラメータ変更

    # Controls IP packet forwarding
    net.ipv4.ip_forward = 1

     Web1&2
    1.loopbackインターフェースを作成し、VIP用のアドレスを割り当てる
    2.sysctl.conf を編集してカーネルパラメータ変更

    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2 

 
まぁ、LVSのDSRは割と良くある方式らしいので、他を調べればいいのがあるはず。

個人的にはこっからが本当に気になる点
自分が気になったのはルータのARPテーブルがどうなっているかという点。

1、KeepalivedVRRPパケットは仮想MAC
2、リアルサーバのループバックIPはARPテーブルに載るのか?


そんなわけで、ルータをCiscoで確認
Router#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.110 30 000c.293e.???? ARPA Vlan10
→これは、LVS1のMACアドレス

 

どうやら、KeepalivedVRRPパケットはCiscoVRRPとはちょっと違い、仮想MACを作らない模様。 となると、Keepalivedでの切り替わりはGARPを送出する事で代用しているっぽい。