孤独海岸线 发表于 2019-1-3 12:08:59

LVS 三种工作模式基本配置(不含HA)

  类别:原创 服务器
  本文参考
  LVS三种工作模式简介及案例参考http://www.sxt.cn/u/324/blog/3188
  LVS DR模式基本配置参考http://www.21ops.com/ops/26717.html
  LVS TUN模式配置参考(其它的文档全都少了内容) http://outofmemory.cn/wr/?u=http%3A%2F%2Fwww.jizhuomi.com%2Fsoftware%2F365.html
  ipvsadm 命令详细参数参考 http://blog.csdn.net/huaishu/article/details/17023061
  LVS的分类
  LVS-DR: 直接路由,此种方式是最常用的方式,所有的Director和RealServer都在同一个物理网络中(交换机)并且都只有一块网卡。
  LVS-NAT:地址转换,数据包来回都要经过NAT转换,所以Director Server(即LVS服务器)将成为系统瓶颈。使用NAT模式将需要两个不同网段的IP,一个IP接受外部请求服务,一般为外网ip,此IP称为VIP,一个IP与后端realserver同一地址段,负责相互通信,称为DIP。后端realserver的网关地址需指向DIP。同时需开启linux内核的数据包转发功能。
  LVS-TUN:隧道 ,LVS/TUN与 LVS/DR 类似。只是在报文外面再加一层IP封装,整个过程比LVS/DR模式多一次报文的封装/解封过程。LVS/DR只支持本地网络,LVS/TUN却可以跨机房。
一、说明
  目的:使用LVS对两台web服务器进行负载设置,本方暂不涉及LVS本身的HA设置
  VIP:10.10.6.200
  DIP:10.10.6.201
  web1:10.10.6.211
  web2:10.10.6.212
  操作系统:CentOS release 6.6 (Final)
  关闭了selinux和iptables
# getenforce
Disabled
# chkconfig iptables off
# service iptables stop
#二、安装配置web服务(以web1为例,web2相同)
(一)安装apache和php
# yum install httpdphp php-fpm
# vi /etc/httpd/conf/httpd.conf
ServerName:80
# service httpd restart
# service php-fpm restart
#
#
# more/var/www/html/phpinfo.php

#
# more/var/www/html/index.html\\web2 这里全部要做相应的修改


web1


hostname:       Web1ip      :       10.10.6.211


#
#
#  (二)测试web站点:
  http://10.10.6.211/phpinfo.php
http://s3.运维网.com/wyfs02/M01/5C/9B/wKioL1UeWwWB6Rl5AADlEA6i4Jw443.jpg
  http://10.10.6.212/phpinfo.php
http://s3.运维网.com/wyfs02/M02/5C/9B/wKioL1UeWwbT-5JOAAEcyzzDZFA310.jpg
  http://10.10.6.211
http://s3.运维网.com/wyfs02/M02/5C/A0/wKiom1UeWcWC0u9eAABReKZ6xos948.jpg
  http://10.10.6.212
http://s3.运维网.com/wyfs02/M00/5C/A0/wKiom1UeWcXxFA6qAABIp4jexOs289.jpg
三、LVS配置(DR、NAT、TUN三种模式任选其一)
(一)安装ipvsadm
# yum install ipvsadm
# chkconfig ipvsadm on
# service ipvsadm start
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
#(二)DR模式配置(最常用)
1.LVS server 配置
  在eth0:0上设置对外提供的地址
# ifconfig eth0:0 10.10.6.200 netmask 255.255.255.255 broadcast 10.10.6.200 up  设置路由
# route add -host 10.10.6.200 dev eth0:0
# route
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.6.200   *               255.255.255.255 UH    0      0      0 eth0
10.10.6.0       *               255.255.255.0   U   0      0      0 eth0
link-local      *               255.255.0.0   U   1002   0      0 eth0
default         10.10.6.254   0.0.0.0         UG    0      0      0 eth0
# ifconfig
eth0      Link encap:EthernetHWaddr 00:50:56:AE:32:1E
          inet addr:10.10.6.201Bcast:10.10.6.255Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:feae:321e/64 Scope:Link
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:73055 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7458 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4799348 (4.5 MiB)TX bytes:779840 (761.5 KiB)
eth0:0    Link encap:EthernetHWaddr 00:50:56:AE:32:1E
          inet addr:10.10.6.200Bcast:10.10.6.255Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
lo      Link encap:Local Loopback
          inet addr:127.0.0.1Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNINGMTU:65536Metric:1
          RX packets:48 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2522 (2.4 KiB)TX bytes:2522 (2.4 KiB)
#
# ipvsadm -A -t 10.10.6.200:80 -s rr  【添加ipvsadm条目,-A表示追加条目,-t表示使用tcp协议,-s rr表示使用轮询算法】
# ipvsadm -a -t 10.10.6.200:80 -r 10.10.6.211 -g  【-a表示追加规则,-t表示使用tcp协议,-r表示real-server,-g表示使用DR模型】
# ipvsadm -a -t 10.10.6.200:80 -r 10.10.6.212 -g
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.10.6.200:http rr
-> 10.10.6.211:http             Route   1      0          0      
-> 10.10.6.212:http             Route   1      0          0      
#2.后台两个Real Server服务器的配置(以web1为例,web2相同)
  设置网卡只对有eth0网卡上的ip地址做通告
#
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
在lo上设置集群服务的ip地址和路由
# ifconfig lo:0 10.10.6.200 netmask 255.255.255.255 broadcast 10.10.6.200
# route add -host 10.10.6.200 dev lo:0
# ifconfig
eth0      Link encap:EthernetHWaddr 00:50:56:AE:70:6E
          inet addr:10.10.6.211Bcast:10.10.6.255Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:feae:706e/64 Scope:Link
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:74398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7263 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:11103638 (10.5 MiB)TX bytes:1076981 (1.0 MiB)
lo      Link encap:Local Loopback
          inet addr:127.0.0.1Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNINGMTU:65536Metric:1
          RX packets:106 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:95140 (92.9 KiB)TX bytes:95140 (92.9 KiB)
lo:0      Link encap:Local Loopback
          inet addr:10.10.6.200Mask:255.255.255.255
          UP LOOPBACK RUNNINGMTU:65536Metric:1
# route
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.6.200   *               255.255.255.255 UH    0      0      0 lo
10.10.6.0       *               255.255.255.0   U   0      0      0 eth0
link-local      *               255.255.0.0   U   1002   0      0 eth0
default         10.10.6.254   0.0.0.0         UG    0      0      0 eth0
#3.测试
  http://10.10.6.200
  第一次访问
http://s3.运维网.com/wyfs02/M00/5C/9B/wKioL1UeWwfx4mhpAABA9FMCK8k525.jpg
  第二次访问
http://s3.运维网.com/wyfs02/M00/5C/A0/wKiom1UeWcaiG8W_AABYNmthXGk575.jpg
  第三次访问
http://s3.运维网.com/wyfs02/M02/5C/9B/wKioL1UeWwfi0sbdAABA9FMCK8k787.jpg
  第四次访问
http://s3.运维网.com/wyfs02/M00/5C/9B/wKioL1UeWwij0k-KAABYNmthXGk449.jpg
http://s3.运维网.com/wyfs02/M01/5C/9B/wKioL1UeWwiwwDXsAADDDb_9L0k000.jpg
  LVS /DR 模式设置成功
  
4.相关脚本
(1)Director脚本
# vi dr.sh
# more dr.sh
#!/bin/bash
#
# LVS script for VS/DR
#
. /etc/rc.d/init.d/functions
#
VIP=10.10.6.200
RIP1=10.10.6.211
RIP2=10.10.6.212
PORT=80
#
case "$1" in
start)      
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
# Since this is the Director we must be able to forward packets
echo 1 > /proc/sys/net/ipv4/ip_forward
# Add an IP virtual service for VIP 10.10.6.200 port 80
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
/sbin/ipvsadm -A -t $VIP:80 -s rr
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
# Stop forwarding packets
echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
/sbin/ipvsadm -C
# Bring down the VIP interface
/sbin/ifconfig eth0:0 down
/sbin/route del $VIP
/bin/rm -f /var/lock/subsys/ipvsadm
echo "ipvs is stopped..."
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ]; then
    echo "ipvsadm is stopped ..."
else
    echo "ipvs is running ..."
    ipvsadm -L -n
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
;;
esac
#
# chmod +x dr.sh
# ./dr.sh status
ipvs is running ...
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.10.6.200:80 rr
-> 10.10.6.211:80               Route   1      0          5      
-> 10.10.6.212:80               Route   1      0          5      
#
# ./dr.sh stop
SIOCDELRT: No such process
ipvs is stopped...
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
# ./dr.sh start
# ipvsadm   
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.10.6.200:http rr
-> 10.10.6.211:http             Route   1      0          0      
-> 10.10.6.212:http             Route   1      0          0      
#
# echo "/root/dr.sh start" >>/etc/rc.local
#(2)Real Server启动脚本(以web1为例,web2相同)
# vi dr-rs.sh
# more dr-rs.sh
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
./etc/rc.d/init.d/functions
VIP=10.10.6.200
host=`/bin/hostname`
case "$1" in
start)
       # Start LVS-DR real server on this machine.
      /sbin/ifconfig lo down
      /sbin/ifconfig lo up
      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
      /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
      /sbin/route add -host $VIP dev lo:0
;;
stop)
      # Stop LVS-DR real server loopback device(s).
      /sbin/ifconfig lo:0 down
      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
;;
status)
      # Status of LVS-DR real server.
      islothere=`/sbin/ifconfig lo:0 | grep $VIP`
      isrothere=`netstat -rn | grep "lo:0" | grep $VIP`
      if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR real server Stopped."
      else
            echo "LVS-DR real server Running."
      fi
;;
*)
            # Invalid entry.
            echo "$0: Usage: $0 {start|status|stop}"
            exit 1
;;
esac
# chmod +x dr-rs.sh
# ./dr-rs.sh status
LVS-DR real server Running.
# ./dr-rs.sh stop
# ./dr-rs.sh start
#
# echo "/root/dr-rs.sh start" >>/etc/rc.local
#(三)NAT模式配置
1.LVS server 配置
  增加一块网卡,作为外网网卡,ip为 192.168.0.200,此ip即为对外的VIP,并将默认网关设置成VIP段的网关,本地的内网ip不设置网关
# route
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.200   *               255.255.255.0U   0      0      0 eth1
10.10.6.0       *               255.255.255.0   U   0      0      0 eth0
link-local      *               255.255.0.0   U   1002   0      0 eth0
link-local      *               255.255.0.0   U   1003   0      0 eth1
default         192.168.0.1   0.0.0.0         UG    0      0      0 eth1
#
# cat /proc/sys/net/ipv4/ip_forward      
0
#echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward      
1
#
# ipvsadm -A -t 192.168.0.200:80 -s rr
【添加ipvsadm条目,-A表示追加条目,-t表示使用tcp协议,-s rr表示使用轮询算法】
# ipvsadm -a -t 192.168.0.200:80 -r 10.10.6.211 -m
【-a表示追加规则,-t表示使用tcp协议,-r表示real-server,-m表示使用NAT模型】
# ipvsadm -a -t 192.168.0.200:80 -r 10.10.6.212 -m
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.0.200:http rr
-> 10.10.6.211:http             Masq    1      0          1      
-> 10.10.6.212:http             Masq    1      0          1  

2.更改后端realserver的网关(以web1为例,web2相同)
# route add default gw 10.10.6.201;route del default gw 10.10.6.254
# route   
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.6.0       *               255.255.255.0   U   0      0      0 eth0
link-local      *               255.255.0.0   U   1002   0      0 eth0
default         10.10.6.201   0.0.0.0         UG    0      0      0 eth0
#3.测试
  第一次访问
http://s3.运维网.com/wyfs02/M02/5C/9B/wKioL1UeWwjCnBBpAABFcP7KT5o736.jpg
  第二次访问
http://s3.运维网.com/wyfs02/M02/5C/A0/wKiom1UeWcjD4VhlAABFTmu3_ZY913.jpg
# ipvsadm -Lc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:10TIME_WAIT   192.168.0.201:24093 192.168.0.200:http 10.10.6.211:http
TCP 00:26TIME_WAIT   192.168.0.201:24539 192.168.0.200:http 10.10.6.212:http
#  LVS /NAT 模式设置成功
  
4.相关脚本
# vi nat.sh
# more nat.sh
#!/bin/bash
#
# chkconfig: - 88 12
# description: LVS script for VS/NAT
#
. /etc/rc.d/init.d/functions
#
VIP=192.168.0.200
DIP=10.10.6.201
RIP1=10.10.6.211
RIP2=10.10.6.212
#
case "$1" in
start)      
#/sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up
# Since this is the Director we must be able to forward packets
echo 1 > /proc/sys/net/ipv4/ip_forward
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
# Add an IP virtual service for VIP 192.168.0.200 port 80
# In this recipe, we will use the round-robin scheduling method.
# In production, however, you should use a weighted, dynamic scheduling method.
/sbin/ipvsadm -A -t $VIP:80 -s rr
# Now direct packets for this VIP to
# the real server IP (RIP) inside the cluster
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m
/bin/touch /var/lock/subsys/ipvsadm.lock
;;
stop)
# Stop forwarding packets
echo 0 > /proc/sys/net/ipv4/ip_forward
# Reset ipvsadm
/sbin/ipvsadm -C
# Bring down the VIP interface
#ifconfig eth0:0 down
rm -rf /var/lock/subsys/ipvsadm.lock
;;
status)
[ -e /var/lock/subsys/ipvsadm.lock ] && echo "ipvs is running..." || echo "ipvsadm is stopped..."
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
#
# chmod +x nat.sh
# ./nat.sh start
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.0.200:http rr
-> 10.10.6.211:http             Masq    1      0          0      
-> 10.10.6.212:http             Masq    1      0          0      
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.0.200:http rr
-> 10.10.6.211:http             Masq    1      0          4      
-> 10.10.6.212:http             Masq    1      0          4   
#
#(四)TUN 模式配置
1.LVS server 配置
# ifconfig tunl0 10.10.6.200 broadcast 10.10.6.200 netmask 255.255.255.255 up
# ipvsadm -A -t 10.10.6.200:80 -s rr  【添加ipvsadm条目,-A表示追加条目,-t表示使用tcp协议,-s rr表示使用轮询算法】
# ipvsadm -a -t 10.10.6.200:80 -r 10.10.6.211 -i  【-a表示追加规则,-t表示使用tcp协议,-r表示real-server,-i表示使用tun模型】
# ipvsadm -a -t 10.10.6.200:80 -r 10.10.6.212 -i
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP10.10.6.200:http rr
-> 10.10.6.211:http             Tunnel1      0          0      
-> 10.10.6.212:http             Tunnel1      0          0      
#2.后台两个Real Server服务器的配置(以web1为例,web2相同)
# ifconfig tunl0 10.10.6.200 broadcast 10.10.6.200 netmask 255.255.255.255 up
# echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  \\ 对于centos6.6系统,一定下面两行一定要加上,否则,real server会认为收到的数据包非法,直接丢弃。对于其它系统没有做过测试。网上很多资料上都没有这一点,因此花费了我很长时间来解决TUN失败的问题。
# echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter  \\ 网上很多资料说要加上下面这一行,不过我没加,也能正常使用。可能和我的real server 是单网卡,使用默认路由有关系
# route add -host 10.10.6.200 dev tunl0
# route
Kernel IP routing table
Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.6.200   *               255.255.255.255 UH    0      0      0 tunl0
10.10.6.0       *               255.255.255.0   U   0      0      0 eth0
link-local      *               255.255.0.0   U   1002   0      0 eth0
default         10.10.6.254   0.0.0.0         UG    0      0      0 eth0
#3.测试
  http://10.10.6.200
  第一次访问
http://s3.运维网.com/wyfs02/M00/5C/A0/wKiom1UeWcjyvx-YAABA9FMCK8k810.jpg
  第二次访问
http://s3.运维网.com/wyfs02/M01/5C/A0/wKiom1UeWcmByz0DAABYNmthXGk817.jpg
# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:57ESTABLISHED 192.168.19.63:65441 10.10.6.200:80   10.10.6.211:80
TCP 14:57ESTABLISHED 192.168.19.63:65440 10.10.6.200:80   10.10.6.212:80
TCP 14:57ESTABLISHED 192.168.19.63:65442 10.10.6.200:80   10.10.6.212:80
#  LVS /TUN 模式设置成功
  
4.相关脚本
(1)Director脚本
# vi tun.sh
# more tun.sh
#!/bin/sh
# description: start LVS of Directorserver
VIP=10.10.6.200
DIP=10.10.6.201
RIP1=10.10.6.211
RIP2=10.10.6.212
GW=10.10.6.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.0 up
/sbin/route add -host $VIP dev tunl0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#
# chmod +x tun.sh
# ./tun.sh start(2)Real Server启动脚本(以web1为例,web2相同)
# vi tun-rs.sh
# more tun-rs.sh
#!/bin/bash
#
# Script to start LVS TUN real server.
# description: LVS TUN real server
#
./etc/rc.d/init.d/functions
VIP=10.10.6.200
case "$1" in
start)
       # Start LVS-TUN real server on this machine.
      /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
#      /sbin/route add -host $VIP dev tunl0
      echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
      echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce
      echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
      echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
      echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
      echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
;;
stop)
      # Stop LVS-TUN real server loopback device(s).
      /sbin/ip addr flush tunl0
      /sbin/ifconfig tunl0 down
      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
;;
status)
      # Status of LVS-TUN real server.
      islothere=`/sbin/ifconfig tunl0 | grep $VIP`
      isrothere=`netstat -rn | grep "tunl0" | grep $VIP`
      if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the tunl0 device
            # not found.
            echo "LVS-TUN real server Stopped."
      else
            echo "LVS-TUN real server Running."
      fi
;;
*)
            # Invalid entry.
            echo "$0: Usage: $0 {start|status|stop}"
            exit 1
;;
esac
#
# chmod +x tun-rs.sh
# ./tun-rs.sh start
#  




页: [1]
查看完整版本: LVS 三种工作模式基本配置(不含HA)