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

[经验分享] 【转贴】lvs负载均衡+keepalived高可用性配置详解

[复制链接]

尚未签到

发表于 2015-9-4 09:42:47 | 显示全部楼层 |阅读模式
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。   

------------------------------------------------------------------------------------------------------------------------------------------------------------------  
  
  一: 一些名词解释 (利用下面的拓扑来理解名词)
  
      1; VIP: Virtual IP(虚拟ip, 主要是提供用户进行访问的);
      2; RIP: REAL SERVER IP(真实服务器ip, 主要是提供服务的, 主要的服务器有http服务器);
      3; CIP: CLIENT IP(客户端ip, 用来访问虚报ip);
      4; DIP: DEVICE IP(设备的ip, 作为REAL SERVER的Gateway, 这个最好也是用虚拟ip, 这个ip是在nat模式下才使用, 配置nat模式最好使用两张网卡);
      5; DIRECTOR: 调度器(是指安装ipvsadm的那台机器);
      6; RS: REAL SERVER(真实的服务器, 里面有安装服务器, 比如web, mail等等;)
           DSC0000.jpg
  
  
  二: lvs的三种模式(按照出现的时间顺序来排列);
      1; nat模式 (回复包要经过DIRECTOR, 这种模式最早出现, 最成熟, 但是调度器是瓶颈,所以这个模式现在比较少用; tunneling模式和直接路由模式是后来为了解决某些问题而出现的);            
      2; tunneling模式;(回复包不需要经过DIRECTOR, 这种模式只要调度器和真实服务器的路由可达即可, 所以应用起来比较广, 回复包的时候直接通过各自的路由器出去, 所以比较方便配置, 只要realserver支持tunneling即可)
      3; 直接路由模式;(回复包不需要经过DIRECTOR, 这种模式要求RS与DIRECTOR中间不能用路由器隔开, 回为这个模式只改变目标的mac地址)
  
  三: lvs的十种算法;
      1; 四种静态算法(假设服务器为a, b, c! 后面的数字代表服务器的权重);
  
  1: rr: abc, abc, abc
  2: wrr: a3b2c1, aababc aababc
             3: dh: 目标hash;(根据目标地址选择服务器)
  4: sh: 源hash;(根据源地址选择服务器)
  
      2; 六种动态算法;
  1: lc: ci最小, (ci指established状态的数量)处理能力比较强的计算机就一直回复;
  2: wlc: ci/wi最小, (wi指weight的值)针对处理能力强的计算机weight调大一点;
  3: lblc: 基于wlc, cache, 如果有一台已经跟服务器在连接, 那就一直使用这一台;如果负载太重(ci>wi), 则wlc选择一台, 就一直这台;
  4: lblcr: 基于lblc, 只是cache集群;如果每台负载都过重, wlc选一台; 如果一台没有用, remove掉;
  5: sed: (ci+1)/wi最小;一开始就把weight用上;
  6: nq: 基于sed选一台, 如果没过载, 一直就这台, 有过载, 再使用sed再选一台;(ci>wi)
  
  
  四: 需要实现的目标;
  1; 用户访问192.168.2.149, 192.168.2.149把服务请求一会儿转发到192.168.2.31, 一会儿转发到192.168.2.32;
      DIRECTOR: 192.168.2.23(VIP 192.168.2.149)
      REAL SERVERS: 192.168.2.31(lo:0 192.168.2.149)
  
  à        把上面的需要用三种模式各实现一遍, 调试算法使用wrr;
   DSC0001.jpg
  
  
  
  2; 使用两台机器192.168.2.23(DIRECTOR MASTER)和192.168.2.31(DIRECTOR BACKUP)作为调试器; 使用192.168.2.20, 192.168.2.21, 192.168.2.22, 192.168.2.31, 192.168.2.32作为真实服务器;
      DIRECTOR: 192.168.2.23, 192.168.2.31(VIP 192.168.2.149)
      REAL SERVERS: 192.168.2.21, 192.168.2.20, 192.168.2.22, 192.168.2.31, 192.168.2.32(lo:0 192.168.2.149);
  
  
  五: 第一个目标的实现;
  1; DIRECTOR的配置;
  1; 安装lvs软件ipvsadm; (确认有ip_vs模块, 使用lsmod | grep ip_vs)
  apt-get install ipvsadm
      2; 配置虚拟ip;
         ifconfig eth1:1 192.168.2.149 netmask 255.255.255.255 up
         route add –host 192.168.2.149 dev eth1:1
      3; 配置负载均衡(使用dr模式, 调度算法为wrr, weight统一配置成5);
         ipvsadm –A –t 192.168.2.149:80 –s wrr
         ipvsadm –a –t 192.168.2.149:80 –r 192.168.2.31:80 –g –w 5
         ipvsadm –a –t 192.168.2.149:80 –r 192.168.2.32:80 –g –w 5
  
      2; 真实服务器的配置(要注意arp问题, 分别在192.168.2.31和192.168.2.32上配置);
         1; 配置虚拟ip;
             ifconfig lo:0 192.168.2.149 netmask 255.255.255.255 up
             route add –host 192.168.2.149 dev lo:0
         2; 抑制arp广播;
             echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
             echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
             echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
             echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
             echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
             echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  
  六: 第二个目标的实现;
  1; DIRECTOR的配置(上面那个主要实现的是负载均衡, 这个主要实现的高可用性的配置, 这个是在192.168.2.23上的配置, 192.168.2.31只需要改变两个地址即可, 下面有注释);
      1; 高可用性软件的安装keepalived;
          apt-get install keepalived
         2; keepalived主要的配置文件如下(keepalived.conf)
             ! configuration file for keepalived
  global_defs {
          notification_email{
                  361589194@qq.com
          }
          notification_email_from 361589194@qq.com
          smtp_server smtp.163.com
          router_id lvs_director #邮件通知的标识, keepalived的日志文件在/var/log/syslog, 可以在这个文件查看状态即可;
  }
  
  vrrp_instance V1{
          state MASTER #在192.168.2.31配置为BACKUP
          interface eth1
          lvs_sync_daemon_interface eth1
          virtual_router_id 51   #虚拟路由的标识, 必须与BACKUP一样;
          priority 150 #在192.168.2.31配置为100(一般来说要小t50);
          advert_int 5
          authentication {
                  auth_type PASS
                  auth_pass 1111
          }
          virtual_ipaddress {
                  192.168.2.149
                   }
  }
  
  virtual_server 192.168.2.149 80 {
          delay_loop 10  #ping的超时时间;
          lb_algo wrr
          lb_kind DR
          #persistence_timeout 10 #这个是配置持久性连接的, 如果配置这个, 那要预防单台的突发性连接;
          protocol TCP
          real_server 192.168.2.20 80 {
                  weight 100
                  TCP_CHECK {
                          connect_timeout 10 #检测80的端口的超时时间;
                          nb_get_retry 3 #重试次数
                          delay_before_retry 3 #重试的延时
                          connect_port 80
                  }
          }
          real_server 192.168.2.22 80 {
                  weight 100
                  TCP_CHECK {
                          connect_timeout 10
                          nb_get_retry 3
             delay_before_retry 3
                          connect_port 80
                  }
          }
          real_server 192.168.2.21 80 {
                  weight 100
                  TCP_CHECK {
                          connect_timeout 10
                          nb_get_retry 3
                          delay_before_retry 3
                          connect_port 80
                  }
          }
          real_server 192.168.2.30 80 {
                  weight 100
                  TCP_CHECK {
                          connect_timeout 10
                          nb_get_retry 3
                          delay_before_retry 3
                          connect_port 80
                  }
          }
          real_server 192.168.2.32 80 {
                         weight 100
                  TCP_CHECK {
                          connect_timeout 10
                          nb_get_retry 3
                          delay_before_retry 3
                          connect_port 80
                  }
          }
          real_server 192.168.2.32 80 {
                  weight 100
                  TCP_CHECK {
                          connect_timeout 10
                          nb_get_retry 3
                          delay_before_retry 3
                          connect_port 80
                  }
          }
  }
         3; 启动keepalived;
             /etc/init.d/keepalived restart
      2; 真实服务器的配置与上面lvs的配置一样, 每台都要配置;
  
  六: 配置lvs或者lvs+keepalived需要注意的问题;
     1; 使用client机器ping一下虚拟ip(ping 192.168.2.149), 使用arp –n查看192.168.2.149的mac地址, 必须与调度器的mac地址一样, 如果不一样, 那就是真实服务器的欺骗了交换机, 调度器就失去了作用;
      2; tunnel模式的配置需要在真实服务器配置tunnel接口地址;
         ifconfig tunl0 192.168.2.149 netmask 255.255.255.255 up(同时如果在同一个局域网里面测试, 也要预防arp欺骗)
      3; nat模式下, 真实服务器基本不需要配置什么, 只需要把网关指向DIP即可;
  
  作者: whzhuang
  日期: 2013/4/20
  版本: first release
  
  参考网站:
  1; iyunv的lvs标签推荐博客; http://blog.iyunv.com/tagindex.php
  2; lvs的英文官方网站; http://www.linuxvirtualserver.org/
  3; lvs的中文官方网站; http://zh.linuxvirtualserver.org/
  4; arp问题的解决(教授亲自出手指点); http://zh.linuxvirtualserver.org/node/225
  4; lvs初学必看; http://os.iyunv.com/art/201202/319979.htm

运维网声明 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-109255-1-1.html 上篇帖子: 负载均衡--LVS+Keepalived 下篇帖子: LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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