13719654321 发表于 2019-1-6 07:22:06

LVS DR模式安装配置

  目录
  前言
  1 、 LVS 环境组网

  2 、 ipvsadm 安装前准备

  3 、 httpd 与 ipvsadm 下载

  4 、 LVS 负载均衡配置

  5 、真实 WEB 服务器配置及 arp 抑制

  6 、 LVS 负载均衡测试

  7 、附: arp 抑制参数

  

  前言
  本文主要讲解 centos5.x LVS DR 模式,环境搭建,理论知识请参考 LVS 中文官网
  http://www.linuxvirtualserver.org/zh/index.html
  1 、 LVS 环境组网
  由于是使用的 VM 环境,自己 PC 当作客户机(即公网地址),调度器与服务器都是 VM 中虚拟机,所以客户和所有服务器之间都是物理直接相连网络 , 逻辑拓扑图如下:
  
  

  2 、 ipvsadm 安装前准备(也可以使用 yum -y install ipvsadm 安装)
  外部IP地址      内部IP地址         角色
  10.0.0.30/24      192.168.1.1/24       LVS 调度器(虚拟机)
  10.0.0.237/24   192.168.1.2/24       RS1 (虚拟机)
  10.0.0.238/24    192.168.1.3/24       RS2 (虚拟机)
  10.0.0.130/24    无            客户机(自己电脑)
  注:实际应用中 RS1 RS2 没有外部地址,当前环境中,没有物理双网卡环境,都采用一个网卡配置多个 IP 地址。
  3 、 httpd 与 ipvsadm 下载
  1 )在各服务器上修改主机名:
  # hostname LVS1
  # hostname RS1
  # hostname RS2
  2 )在 RS1 RS2 上安装 httpd 服务
  # yum install httpd -y
  # /etc/init.d/httpd start
  ps -ef|grephttpd
  # yum install httpd –y
  # /etc/init.d/httpdstart
  ps -ef|grephttpd /var/www/html/index.html
  Httpd 服务测试:
  测试成功!
  3 )下载 ipvsadm
  wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
  wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  我所使用的源包下载目录 /usr/local/src
  我的 LVS 环境:
  # cat/etc/redhat-release
  CentOS release 5.8 (Final)
  # uname -rm
  2.6.18 -308.el5 x86_64
  ipvsadm-1.26 对内核有要求,要求内核版本在 2.6.28 及以后的版本,如果符合了系统环境,还要安装依赖包 yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static。
  我的内核版本不满足,使用 ipvsadm-1.24 。
  # tar -zxfipvsadm-1.24.tar.gz
  # ln -s /usr/src/kernels/2.6.18-348.12.1.el5-x86_64 /usr/src/linux /usr/src/kernels/2.6.18-348.12.1.el5-x86_64 RemoteAddress:Port         Forward Weight ActiveConn InActConn
  TCP10.0.0.30:80 wrr persistent 20
  -> 192.168.1.2:80               Route   1    0         0
  -> 192.168.1.3:80               Route   1    0         0
  由于有会话保持功能,接下来修改权重值
  # ipvsadm -d -t10.0.0.30:80 -r 192.168.1.3:80   192.168.1.3:80               Route   2    0         0
  -> 192.168.1.2:80               Route   1    0         0
  再次进行测试:
  7 、附: arp 抑制参数
  arp 响应限制
  1 ) arp_ignore:
  定义对目标地址为本地 IP 的 ARP 询问不同的应答模式 0
  0 - ( 默认值 ): 回应任何网络接口上对任何本地 IP 地址的 arp 查询请求
  1 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
  2 - 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求 , 且来访 IP 必须在该网络接口的子网段内
  3 - 不回应该网络界面的 arp 请求,而只对设置的唯一和连接地址做出回应
  4-7 - 保留未使用
  8 - 不回应所有(本地地址)的 arp 查询
  2 ) arp_announce:
  对网络接口上,本地 IP 地址的发出的, ARP 回应,作出相应级别的限制 : 确定不同程度的限制 , 宣布对来自本地源 IP 地址发出 Arp 请求的接口
  0 - ( 默认 ) 在任意网络接口( eth0,eth1 , lo )上的任何本地地址
  1 - 尽量避免不在该网络接口子网段的本地地址做出 arp 回应 . 当发起 ARP 请求的源 IP 地址是被设置应该经由路由达到此网络接口的时候很有用 . 此时会检查来访 IP是否为所有接口上的子网段内 ip 之一 . 如果改来访 IP 不属于各个网络接口上的子网段内 , 那么将采用级别 2 的方式来进行处理 .
  2 - 对查询目标使用最适当的本地地址 . 在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址 . 首要是选择所有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址 . 如果没有合适的地址被发现 , 将选择当前的发送网络接口或其他的有可能接受到该 ARP 回应的网络接口来进行发送 .
  

  LVS脚本:
vi lvs  #!/bin/sh
  #
  # Startup script for the Keepalived daemon
  #
  # processname: keepalived
  # pidfile: /var/run/keepalived.pid
  # config: /etc/keepalived/keepalived.conf
  # chkconfig: - 21 79
  # description: Start and stop Keepalived
  

  # Source function library
  . /etc/rc.d/init.d/functions
  

  # Source configuration file (we set KEEPALIVED_OPTIONS there)
  . /etc/sysconfig/keepalived
  

  RETVAL=0
  

  prog="keepalived"
  

  start() {
  echo -n $"Starting $prog: "
  daemon keepalived ${KEEPALIVED_OPTIONS}
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
  }
  

  stop() {
  echo -n $"Stopping $prog: "
  killproc keepalived
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
  }
  

  reload() {
  echo -n $"Reloading $prog: "
  killproc keepalived -1
  RETVAL=$?
  echo
  }
  

  # See how we were called.
  case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  reload)
  reload
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f /var/lock/subsys/$prog ]; then
  stop
  start
  fi
  ;;
  status)
  status keepalived
  ;;
  *)
  echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
  exit 1
  esac
  

  exit $RETVAL
  #########
  

  centos 7
  /usr/lib/systemd/system/keepalived.service
  #####
  
  Description=LVS and VRRP High Availability Monitor
  After=syslog.target network.target
  

  
  Type=forking
  KillMode=process
  EnvironmentFile=-/etc/sysconfig/keepalived
  ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
  ExecReload=/bin/kill -HUP $MAINPID
  

  
  WantedBy=multi-user.target
  #####
  

  ##########################################
  realServer脚本:
  vi realserver
  #!/bin/bash
  #
  # Add for chkconfig
  # chkconfig: 2345 70 30
  # description: RealServer's script
  # processname: realserver.sh
  

  VIP=192.168.1.1
  

  # Source function library.
  . /etc/init.d/functions
  

  

  case "$1" in
  start)
  ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
  /sbin/route add -host $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
  echo "RealServer Start OK"
  ;;
  stop)
  ifconfig lo:0 down
  route del $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
  

  




页: [1]
查看完整版本: LVS DR模式安装配置