设为首页 收藏本站
查看: 1605|回复: 0

[经验分享] LVS DR模式安装配置

[复制链接]

尚未签到

发表于 2019-1-6 07:22:06 | 显示全部楼层 |阅读模式
  目录
  前言
  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 )在各服务器上修改主机名:
  [root@LVS1 ~]# hostname LVS1
  [root@RS1 ~]# hostname RS1
  [root@RS2 ~]# hostname RS2
  2 )在 RS1 RS2 上安装 httpd 服务
  [root@RS2 ~]# yum install httpd -y
  [root@RS2 ~]# /etc/init.d/httpd start
  [root@RS2 ~# ps -ef|grephttpd
  [root@RS1 ~]# yum install httpd –y
  [root@RS1 ~]# /etc/init.d/httpdstart
  [root@RS1 ~# 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 环境:
  [root@RS1 src]# cat/etc/redhat-release
  CentOS release 5.8 (Final)
  [root@RS1 src]# 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 。
  [root@LVS1 src]# tar -zxfipvsadm-1.24.tar.gz
  [root@LVS1 src]# 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
  TCP  10.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
  由于有会话保持功能,接下来修改权重值
  [root@LVS1 ~]# 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
  #####
  [Unit]
  Description=LVS and VRRP High Availability Monitor
  After=syslog.target network.target
  

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

  [Install]
  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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659798-1-1.html 上篇帖子: LVS 持久连接学习笔记 下篇帖子: LVS实现负载均衡(nat,dr,tun)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表