互联网服务Nginxlvs

keepalived+nginx+tomcat配置lvs疑问,直接通过vip访问时好时坏。

求助各位大神,小弟最近在学习lvs。简单环境如下:主机ip说明lvs-master192.168.0.31ipvsadm+keepalived+nginxlvs-backup192.168.0.32ipvsadm+keepalived+nginxrealserver01192.168.0.33tomcatrealserver02192.168.0.34tomcatlvs所使用的vip为192.168.0.30。系统版本均为rhe...显示全部

求助各位大神,小弟最近在学习lvs。

简单环境如下:

主机ip说明
lvs-master192.168.0.31ipvsadm+keepalived+nginx
lvs-backup192.168.0.32ipvsadm+keepalived+nginx
realserver01192.168.0.33tomcat
realserver02192.168.0.34tomcat

lvs所使用的vip为192.168.0.30。

系统版本均为rhel6.5。

所有服务器的防火墙及selinux都是关闭状态。


lvs-master中keepalived.conf文件内容如下:

! Configuration File for keepalived

global_defs {
   router_id LVS_TOMCAT
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 30
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.30
    }
}

virtual_server 192.168.0.30 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.0.31 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }
   
        real_server 192.168.0.32 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }
}


lvs-backup中keepalived.conf文件内容如下:

! Configuration File for keepalived

global_defs {
   router_id LVS_TOMCAT
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 30
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.30
    }
}

virtual_server 192.168.0.30 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP

    real_server 192.168.0.31 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }
   
        real_server 192.168.0.32 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_prot 80
        }
    }
}


nginx.conf文件内容如下:

user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;


    upstream tomcatpool{
        ip_hash;
        server 192.168.0.33:8080;
        server 192.168.0.34:8080;
    }

    server{
        listen   80;
        server_name  192.168.0.30;   
        location /{
            proxy_pass   http://tomcatpool;
        }
    }

}


在两台tomcat服务器上执行了以下脚本:

#!/bin/bash
#add for chkconfig  
#chkconfig: 2345 70 30
# description: Config realserver
SNS_VIP=192.168.0.30

source /etc/rc.d/init.d/functions

case "$1" in
start)
       /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_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"

       ;;
stop)
       /sbin/ifconfig lo:0 down
       /sbin/route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac

exit 0


现在情况是访问192.168.0.30时时好时坏,直接访问192.168.0.31或192.168.0.32就能直接访问到tomcat的8080端口。


各位大神大概知道什么原因吗?

收起
参与11

查看其它 4 个回答buxl2012的回答

buxl2012buxl2012  系统运维工程师 , linux aix

各位大神帮忙看下呗。

互联网服务 · 2017-04-11
浏览5357

回答者

buxl2012
系统运维工程师linux aix
擅长领域: 服务器AIXUnix

buxl2012 最近回答过的问题

回答状态

  • 发布时间:2017-04-11
  • 关注会员:3 人
  • 回答浏览:5357
  • X社区推广