QA@IT

LVS+KeepAlivedでロードバランサを作りたいのですが、通信が通らない。

6338 PV

CentOS6.8でロードバランサの作成を試みております。

一通り設定したのですが、パソコンからロードバランサ経由でリアルサーバまで通信が通りません。
なお、リアルサーバのログからは、ロードバランサからのヘルスチェックが届いているのは確認しています。

また、ipvsadm -lnの実行結果から、「InActConn」に、数字の1が表示されるまでにはなっています。
原因と解決方法をご教示いただけないでしょうか?

ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:58 SYN_RECV 192.168.10.10:60054 192.168.20.11:25 192.168.20.15:25

ロードバランサ

 仮想IP 192.168.20.11

ロードバランサ#1

LBVM1 192.168.20.12

GATEWAY=192.168.20.1

DNS=設定しない

ロードバランサ#2

LBVM2 192.168.20.13

GATEWAY=192.168.20.1

DNS=設定しない

リアルサーバ1号機

HOSTVM1 192.168.20.14

(ループバック) 192.168.20.11 ← LBのVip

リアルサーバ2号機

HOSTVM2 192.168.20.15

(ループバック) 192.168.20.11 ← LBのVip

 keepalived.conf

! Configuration File for keepalived

# cat /etc/keepalived/keepalived.conf   
! Configuration File for keepalived 

global_defs {   
   notification_email { 
    tantou@hoge.hoge
   }    
   notification_email_from LB@hoge.hoge 
   smtp_server xxx.xxx.xxx.xxx  
   smtp_connect_timeout 30  
   router_id LVS_1  
}   

vrrp_instance VI_1 {    
    state BACKUP    
    interface eth0  
    #   
    virtual_router_id 1 
    priority 100    
    advert_int 1    
    authentication {    
        auth_type PASS  
        auth_pass 1111  
    }   
    virtual_ipaddress { 
       192.168.20.11/24 dev eth0    
    }   
}   

virtual_server 192.168.20.11 25 {   
    delay_loop 30 
    lvs_sched rr    
    lvs_method DR   


    protocol TCP    

    real_server 192.168.20.14 25{   
        weight 1    
        inhibit_on_failure  

        TCP_CHECK { 
            connect_port 25 
            connect_timeout 30  
            nb_get_retry 3  
            delay_before_retry 3    
        }   
    }   

    real_server  192.168.20.15 25{  
        weight 1    
        inhibit_on_failure  
        TCP_CHECK { 
            connect_port 25 
            connect_timeout 30  
            nb_get_retry 3  
            delay_before_retry 3    
        }   
    }   
}   

回答

ロードバランサ側は
 iptablesを見直し

リアルサーバ側に以下の設定を入れて、おまじないをする。
 1.ループバックのNICを追加
 2.ループバックのアドレスをロードバランサの仮想IPへ
Windowsであれば、以下のおまじない。
netsh interface ipv4 set interface "ローカル エリア接続" weakhostreceive=enabled
OK
netsh interface ipv4 set interface "ループバック" weakhostreceive=enabled
OK
netsh interface ipv4 set interface "ループバック" weakhostsend=enabled
OK

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。