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

[经验分享] LVS+keepalived 实现高可用与负载均衡实施方案

[复制链接]

尚未签到

发表于 2018-12-31 13:34:59 | 显示全部楼层 |阅读模式
LVS+keepalived 实现高可用与负载均衡实施方案


目录

  一、安装LVS1
  1.1、环境IP描述:1
  1.2、所需软件2
  1.3、安装步骤主备操作2
  1.4、配置主备LVS启动脚本2
  二、安装Keepalived4
  2.1、所需软件4
  2.2、安装步骤4
  2.3、修改主keepalived配置文件5
  2.4、修改从keepalived配置文件6
  三、配置WEB服务器脚本7
  3.1、配置sysctl文件7
  3.2、脚本内容显示如下:8
  四、测试9
  4.1、WEB条件9
  4.2、按以上配置无误9
  



  

  

  

  

  

  

  

  

  

  

  

  

  

  

  



一、 安装LVS
1.1、环境IP描述:
  LVS-DR-Master          192.168.1.3
  LVS-DR-herbat              192.168.2.1
  

  LVS-DR-BACKUP          192.168.1.4
  LVS-DR-herbat              192.168.2.2
  

  LVS-DR-VIP            192.168.1.254
  

  WEB1-Realserver        192.168.1.5
  

  WEB2-Realserver        192.168.1.6
  

  GateWay                192.168.1.1
  

  注意:所有集群服务器时间要一致
1.2、所需软件

1.3、安装步骤主备操作
  注意此步,否则编译回出错,
  #: ln -s /usr/src/kernels/2.6.18-194.el5-i686/  /usr/src/linux
  #:tar –zxvf   ipvsadm-1.24.tar.gz
  #:make && make install
  #find / -name ipvsadm
  

  

  

1.4、配置主备LVS启动脚本
  #脚本文件,

  #:然后将此脚本拷贝到主备的/etc/init.d/下面加上权限 chmod 755 /etc/inint.d/lvs-dr.sh
  #:ipvsadm –L 查看规则
  #:watch ipvsadm –ln 查实时规则变化
  #:vi lvs-dr.sh               #:只需修改红色区域
  #!/bin/bash
  #description: start LVS of DirectorServer
  #Written by :NetSeek
  #http://www.linuxtone.org
  GW="192.168.1.1"
  # website director vip.
  WEB_VIP="192.168.1.254"
  WEB_RIP1="192.168.1.5"
  WEB_RIP2="192.168.1.6"
  . /etc/rc.d/init.d/functions
  

  logger $0 called with $1
  

  case "$1" in
  

  start)
          # Clear all iptables rules.
          /sbin/iptables -F
          # Reset iptables counters.
          /sbin/iptables -Z
          # Clear all ipvsadm rules/services.
          /sbin/ipvsadm -C
  

  #set lvs vip for dr
          /sbin/ipvsadm --set 30 5 60
          /sbin/ifconfig eth0:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
          /sbin/route add -host $WEB_VIP dev eth0:0
          /sbin/ipvsadm -A -t $WEB_VIP:80 -s rr
          /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
          /sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1
          touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
  

          # set Arp
          /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1
         ;;
  stop)
          /sbin/ipvsadm -C
          /sbin/ipvsadm -Z
          ifconfig eth0:0 down
          route del $WEB_VIP  >/dev/null 2>&1
          rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
          /sbin/arping -I eth0 -c 5 -s $WEB_VIP $GW
          echo "ipvsadm stoped"
         ;;
  

  status)
  

          if [ ! -e /var/lock/subsys/ipvsadm ];then
                  echo "ipvsadm is stoped"
                  exit 1
          else
                  ipvsadm -ln
                  echo "..........ipvsadm is OK."
          fi
        ;;
  

  *)
          echo "Usage: $0 {start|stop|status}"
          exit 1
  ;;
  esac
  exit 0
  

  

二、 安装Keepalived
2.1、所需软件

2.2、安装步骤
  #:tar –zxvf  keepalived-1.1.20.tar.gz
  #:cd keepalvied-1.1.20
  #./concfigure  -- -- prefix=/usr/local/keepalived
  #: make && make install
  #cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
  # cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/
  #:mkdir /etc/keepalived
  #cpusr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
  #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
2.3、修改主keepalived配置文件

  1:主服务器配置文件内容
  

  #vi /etc/keepalived/keepalived.conf
  

  ! Configuration File for keepalived
  global_defs {
     router_id LVS_DEVEL
KeepAlive = false          记加上此段,否则每次在第一次访问的时候,会提示找不到也面,只有刷新一下,才好
  }
  vrrp_instance VI_1 {
      state MASTER   #主服务器为MASTER
      interface eth1    #检测心跳网口
    virtual_router_id 51   #ID值主备要保持一致
      priority 100          #:优先级值越大,成为主服务器的优先级就越高
      advert_int 1          #:广播周期秒数
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
  192.168.1.254     #:虚拟VIP地址
      }
  }
  

  

  virtual_server 192.168.1.254 80 {   #:虚拟VIP地址 与 端口
      delay_loop 6
     lb_algo rr                 #:调度算法为RR轮询
      lb_kind DR               #:体系架构为 DR架构
    persistence_timeout 0        #:同一IP 50秒内的请求都发到同个real server
      protocol TCP
  

    real_server 192.168.1.5 80 {   #:真实WEB服务器地址与端口
          weight 3               #:转发伐值,越高调用的越多
          TCP_CHECK {
          connect_timeout 10     #:连接超时为10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
  }
      }
      real_server 192.168.1.6 80 {
          weight 3
          TCP_CHECK {
          connect_timeout 10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
       }
  }
  

2.4、修改从keepalived配置文件
  


  1:从务器配置文件内容
  #vi /etc/keepalived/keepalived.conf
  

  ! Configuration File for keepalived
  global_defs {
     router_id LVS_DEVEL
  }
  vrrp_instance VI_1 {
      state BACKUP        #:从服务器为BACKUP
      interface eth1         #检测心跳网口
    virtual_router_id 51   #ID值主备要保持一致
      priority 99          #:优先级值越大,成为主服务器的优先级就越高,从为99
      advert_int 1          #:广播周期秒数
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
  192.168.1.254     #:虚拟VIP地址
      }
  }
  

  

  virtual_server 192.168.1.254 80 {   #:虚拟VIP地址 与 端口
      delay_loop 6
     lb_algo rr                 #:调度算法为RR轮询
      lb_kind DR               #:体系架构为 DR架构
    persistence_timeout 0        #:同一IP 50秒内的请求都发到同个real server
      protocol TCP
  

    real_server 192.168.1.5 80 {   #:真实WEB服务器地址与端口
          weight 3               #:转发伐值,越高调用的越多
          TCP_CHECK {
          connect_timeout 10     #:连接超时为10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
  }
      }
      real_server 192.168.1.6 80 {
          weight 3
          TCP_CHECK {
          connect_timeout 10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
       }
  }
  

三、 配置WEB服务器脚本

3.1、配置sysctl文件
  #:vi /etc/sysctl.conf
  net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
  #:sysctl –p 生效
  

3.2、脚本内容显示如下:
  #!/bin/bash
  # Written by NetSeek
  # description: Config realserver lo and apply noarp
  WEB_VIP="192.168.1.254"        #:修改VIP,其它的地方不动,
  

  . /etc/rc.d/init.d/functions
  

  case "$1" in
  start)
         ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
         /sbin/route add -host $WEB_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)
         ifconfig lo:0 down
         route del $WEB_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"
         ;;
  status)
          # Status of LVS-DR real server.
          islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
          isrothere=`netstat -rn | grep "lo:0" | grep $web_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 Running."
          Fi
  ;;
  *)
          # Invalid entry.
          echo "$0: Usage: $0 {start|status|stop}"
          exit 1
  ;;
  esac
  exit 0
四、 测试
4.1WEB条件
  WEB服务器能通过内网正常访问,
  然后在两台WB服务器启动relser.sh 脚本
  #:/etc/init.d/relser  start
4.2、按以上配置无误
  在主服务器上启动lvs-dr.sh 脚本
  #:/etc/init.d/lvs-dr      start
  #:ipvsadm –L          查看策略是否生效,正常之后,/etc/init.d/lvs-dr stop  关闭掉
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  192.168.1.254:http rr
    -> 192.168.1.6:http             Route   3      0          0         
    -> 192.168.1.5:http             Route   3      0          0   
  在主服务与备服务器启动keepalived 脚本
  #:etc/init.d/lvs-dr stop  LVS脚本关闭掉
  #: /etc/init.d/keepalived start
  #/etc/init.d/keepalived start  启动keepalived 服务,keepalived就能利用keepalived.conf 配置文件,实现负载均衡和高可用.
  #:ipvsadm –L          查看keepalvied 是否在停止lvs-dr.sh 脚本后,重新加载策略,
  最后:停Master服务器的keepalived服务,查看BAKCUP服务器是否能正常接管服务。
  #:watch ipvsadm 查看连接时时状态
  

  





运维网声明 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-657990-1-1.html 上篇帖子: keepalived+nginx的nginx高可用(个人简单不详细记录) 下篇帖子: 用NginX+keepalived实现高可用的负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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