求助各位大神,小弟最近在学习lvs。
简单环境如下:
主机 | ip | 说明 |
lvs-master | 192.168.0.31 | ipvsadm+keepalived+nginx |
lvs-backup | 192.168.0.32 | ipvsadm+keepalived+nginx |
realserver01 | 192.168.0.33 | tomcat |
realserver02 | 192.168.0.34 | tomcat |
lvs所使用的vip为192.168.0.30。
系统版本均为rhel6.5。
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端口。
各位大神大概知道什么原因吗?