上海isp 发表于 2019-1-3 14:09:37

手工配置LVS

  部署 lvs
  

  部署环境
  LVS :   10.0.0.5
  RS1节点 :10.0.0.3
  RS1节点 :10.0.0.3
  

  # cat /etc/redhat-release
  CentOS release 6.5 (Final)
  # uname -a
  Linux LVS 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
  # uname -r
  2.6.32-431.el6.x86_64
  #
  #########################################################
  #########################################################
  下面在LVS下操作
  1.做软连接
  ls -ld /usr/src/kernels/`uname -r`/
  ln -s /usr/src/kernels/`uname -r`/ /usr/src/linux
  ls /usr/src/linux -l
  =========================================================
  # ls -ld /usr/src/kernels/`uname -r`/
  /usr/src/kernels/2.6.32-431.el6.x86_64/
  # ln -s /usr/src/kernels/`uname -r`/ /usr/src/linux
  # ls /usr/src/linux -l
  lrwxrwxrwx. 1 root root 39 Oct 12 09:08 /usr/src/linux -> /usr/src/kernels/2.6.32-431.el6.x86_64/
  

  说明:
  如果第一步ls -ld /usr/src/kernels/`uname -r`/没有结果,那就用下面命令安装kernel
  yum install kernel-devel -y
  也可以不做ln做软连接,但是可以编译的时候需要指定kernel路径
  2.下载安装LVS
  

  lsmod | grep ip_vs
  先查看是否有ip_vs模块,如果没有就继续安装
  [ ! -d /home/lvnian/tools ] && mkdir /home/lvnian/tools -p
  cd /home/lvnian/tools
  wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  tar xf ipvsadm-1.26.tar.gz
  cd ipvsadm-1.26
  yum install libnl* libpopt* -y
  yum install popt-static -y
  make
  make install
  lsmod | grep ip_vs
  /sbin/ipvsadm(或者modprobe ip_vs(把命令放进内核的意思))
  lsmod | grep ip_vs
  ##########################################################
  安装完上面的ipvsadmin软件,以出现下面内容为安装正确
  # lsmod | grep ip_vs
  ip_vs               1252200
  libcrc32c               12461 ip_vs
  ipv6                  317340142 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
  #
  出现上面的内容才标明安装成功
  

  错误解决:
  故障1:
  make后的故障如下
  

  libipvs.c:1072: error: too many arguments to function ‘ipvs_nl_send_message’
  make: *** Error 1
  make: Leaving directory `/home/lvnian/tools/ipvsadm-1.26/libipvs'
  make: *** Error 2
  解决
  # yum install libnl* libpopt* -y
  =================================
  故障2:
  make后的故障如下
  ipvsadm.c: In function ‘print_largenum’:
  ipvsadm.c:1383: warning: field width should have type ‘int’, but argument 2 has type ‘size_t’
  make: *** Error 1
  解决:
   yum install popt-static -y
  

  安装LVS小结
  1、centos5.x 安装lvs使用1.24版本
  2、centos6.x 使用1.26版本
  3、安装lvs,要执行ipvsadm(modprobe ip_vs)把ip_vs模块加载到内核中
  ###########################################################################
  ###########################################################################
  

  3.手工添加LVS转发
  

  a、手工配置VIP
  ifconfig eth0:10 10.0.0.100 netmask 255.255.255.0
  ifconfig
  =================
  # ifconfig eth0:10 10.0.0.100 netmask 255.255.255.0
  # ifconfig eth0:10
  eth0:10   Link encap:EthernetHWaddr 00:0C:29:04:9C:CB
  inet addr:10.0.0.100Bcast:10.0.0.255Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
  ##########
  添加主机路由(不是必须的)
  

  route add -host 10.0.0.100 dev eth0
  route -n
  =================
  # route add -host 10.0.0.100 dev eth0
  # route -n
  Kernel IP routing table
  Destination   Gateway         Genmask         Flags Metric Ref    Use Iface
  10.0.0.100      0.0.0.0         255.255.255.255 UH    0      0      0 eth0
  10.0.0.0      0.0.0.0         255.255.255.0   U   0      0      0 eth0
  0.0.0.0         10.0.0.2      0.0.0.0         UG    0      0      0 eth0
  #
  

  在客户端windows是PING 看能不能通
  ###########################################
  b、手工执行配置添加lvs
  ipvsadm -h
  ipvsadm -C
  ipvsadm --set 30 5 6            ##设置超时的命令,分别是tcp tcpfin udp的超时
  ipvsadm -A -t 10.0.0.100:80 -s rr -p 20
  ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.3 -g
  ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.4 -g -w 1
  ipvsadm -L -n
  ipvsadm -L -n --stats
  

  上面的命令都是临时生效的,如果要永久生效,那就写脚本,放在让其开机自动生效
  

  

  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP10.0.0.100:80 rr persistent 20
  -> 10.0.0.5:80                  Route   1      0          0
  -> 10.0.0.6:80                  Route   1      0          0
  #
  

  

  # ipvsadm -d -t 10.0.0.100:80 -r 10.0.0.6
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP10.0.0.100:80 rr persistent 20
  -> 10.0.0.5:80                  Route   1      0          0
  #
  

  # ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.6 -g -w 3
  # ipvsadm -L -n
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP10.0.0.100:80 rr persistent 20
  -> 10.0.0.5:80                  Route   1      0          0
  -> 10.0.0.6:80                  Route   3      0          0
  #
  

  ###########################################################################
  ###########################################################################
  4、配置RS服务器
  每台RS配置VIP
  ifconfig lo:100 10.0.0.100 netmask 255.255.255.255 up
  ifconfig lo:100
  ifconfig
  route add -host 10.0.0.100 dev lo
  每台RS上抑制ARP响应
  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
  

  ##############################################################
  配置成功
  

  这个实验,高可用功能实现效果很差,测试的时候可以用多台客户机测试,负载均衡方面还是挺不错的。
  

  测试 结果
  客户端1:(这服务器不能是lvs和RS)
  # for n in `seq 100 `;do curl 10.0.0.100 ; sleep 5;done
  10.0.0.4
  10.0.0.4
  ...
  客户端2:
http://s3.运维网.com/wyfs02/M02/74/5A/wKiom1YbFoWwrIkaAADEC8UDXHo988.jpg
  客户端3:
http://s3.运维网.com/wyfs02/M02/74/57/wKioL1YbFqKjfWDZAABWqJ6msvs116.jpg
  

  

  




页: [1]
查看完整版本: 手工配置LVS