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

[经验分享] LVS+Keepalived+httpd

[复制链接]

尚未签到

发表于 2018-12-29 07:47:49 | 显示全部楼层 |阅读模式
  LVS简介
  lvs有三种工作模式NAT(地址转换),IP Tunneling(IP隧道)、Direct Routing(直接路由)。 工作效率最低的是NAT模式,但NAT模式可以用于各种系统,各种环境的负载均衡,只需要一个公网ip即可实现 IP Tunneling模式调度器将连接分发到不同的后端real server,然后由real server处理请求直接相应给用户,大大提高了调度器的调度效率,后端real server没有物理位置和逻辑关系的限制,后端real server可以在Lan/Wlan,但是后端real server必须支持IP隧道协议. DR(Direct Routing)是效率最高的,与IP Tunneling类似,都是处理一般连接,将请求给后端real server,然后由real server处理请求直接相应给用户,Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层,所以DR模式的调度器和后端realserver必须在一个物理网段里,中间不能过路由器(也就是一个交换机相连).
  lvs支持8种不同的调度算法轮叫(rr)、加权轮叫(wrr)、最小连接(lc)、加权最小连接(wlc)、基于局部性最小连接(lblc)、带复制的基于局部性最少链接(lblcr)、目标地址散列(dh)和源地址散列(sh).
  Keepalived是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败 切换,提高系统的可用性
  系统平台:Centos6.4
  Keepalived版本:keepalived-1.2.4.
  LVS版本:ipvsadm-1.2
  LVS_Master:192.168.10.51
  LVS_Slave:192.168.10.40
  Apache1:192.168.10.41
  Apache2:192.168.10.49
一、安装apache
  1.1我们采用yum安装
  #yum –y installhttpd
  #/etc/init.d/httpdstart
  1.2分别在两台web上建立测试页
  # echo  "zhangfang111111">/var/www/html/index.html
  # echo  "zhangfang222222">/var/www/html/index.html
  1.3 测试是否正常
  Web1

  Web2

  访问都ok
  
  1.3执行lvs.sh脚本绑定VIP
  #catlvs.sh
  #!/bin/bash
  #description:Config lvs.sh
  VIP=192.168.10.180
    
  /etc/rc.d/init.d/functions
    
  case"$1" in
  start)
         /sbin/ifconfig lo:0 $VIP netmask255.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
         sysctl -p >/dev/null 2>&1
         echo "RealServer Start OK"
         ;;
  stop)
         /sbin/ifconfig lo:0 down
         /sbin/route del $VIP >/dev/null2>&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
  #lvs.sh start
  


  二、安装lvs+keepalievd(两台调度器都安装)
  2.1安装之前系统需要安装popt-statickernel-devel make gcc openssl-devel lftp libnl* popt*
  2.2 开启路由转发功能
  #vim /etc/sysctl.conf
  net.ipv4.ip_forward= 1
  #sysctl -p
  2.3.安装ipvsadm
  #wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  2.4做软连接,防止make时出错,找不到kernel文件
  #ln -s/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/ /usr/src/linux/
  #tar ipvsadm-1.26.tar.gz
  #cd ipvsadm
  #make &&make install
  Ipvsadm安装完成
  2.5安装keepalived
  #wgethttp://www.keepalived.org/software/keepalived-1.2.4.tar.gz
  # tar zxvfkeepalived-1.2.4.tar.gz
  #cdkeepalived-1.2.4
  # ./configure&& make && make install
  三、keepalived做成启动服务,方便管理
  # cp/usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
  # cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  # mkdir/etc/keepalived/
  cp /usr/local/etc/keepalived/keepalived.conf/etc/keepalived/
  # cp/usr/local/sbin/keepalived /usr/sbin/
  # servicekeepalived start | stop
  3.1修改keepalived配置文件如下
  ! ConfigurationFile for keepalived
  
  global_defs {
     notification_email {
     18801457794@139.com
     }
     notification_email_from root@localhost
     smtp_server 127.0.0.1
     smpt_connect_timeout 30
     router_id zhangfang
  }
  
  vrrp_instanceVI_1 {
      state MASTER  
      interface eth0 #指定HA监测网络的接口
      virtual_router_id 20 #虚拟路由标示,这是标示是一个数字,同一个vrrp实例使用唯一的标示,即同一vrrp_instance下,MASTER和BACKUP必须是一致的
      priority 100 #定义优先级,数字越大,优先级越高
      advert_int 1 #设置MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
      authentication { #设置验证类型和密码
          auth_type PASS #设置认证类型,主要有PASS和AH两种
          auth_pass 1111 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通行
      }
      virtual_ipaddress {
          192.168.10.180
      }
  }
  
  virtual_server192.168.10.180 80 {
      delay_loop 6 #设置运行状况的检查时间
      lb_algo rr
      lb_kind DR
      #persistence_timeout 50 #会话保持时间
      protocol TCP #转发协议类型
      real_server 192.168.10.41 80 {
          weight 3
      TCP_CHECK {    #realserver的状态检测设置部分
              connect_timeout 10 #标示10s无响应超时
              nb_get_retry 3 #重试次数
              delay_before_retry 3 #重试间隔
         connect_port 80
          }
      }
      real_server 192.168.10.49 80 {
          weight 3
          TCP_CHECK {
              connect_timeout 10
              nb_get_retry 3
             delay_before_retry 3
              connect_port 80
          }
}
}
  3.2将配置文件同步到LVS_Slave上
  #scp  /etc/keepalived/keepalived.conf root@192.168.10.40:/etc/keepalived/
  修改内容如下:
  state BACKUP #状态
  priority 100 #修改优先级
  3.3分别启动两台lvs,我们来查看日志
  LVS_Master

  注意,从划红线区域看到这台主机绑定了VIR
  通过ip  addr 查看下VIP是否绑定

  LVS_Slave:日志信息

  3.4我们在LVS_Master上看下群集状态

  四、进行测试
  在浏览器里面输入http://192.168.10.180


  说明按照轮询的算法,分别转后至节点,从而达到负载均衡的效果
  五、模拟故障
  5.1停掉节点1
  #/etc/init.d/httpdstop
  5.2查看lvs状态
  #ipvsadm -ln
  IP VirtualServer version 1.2.1 (size=4096)
  ProtLocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  192.168.10.180:80 rr
    ->192.168.10.41:80             Route   3     0          2  
  注意出现故障的那台机器,已经被踢出了,从而实现了健康检查
  测试一下


  查看邮件

  5.3 关掉MASTER上的keepalived
  #/etc/init.d/keepalivedstop
  5.4 查看SLAE的状态

  已经正常接管过来,
  测试一下

  访问正常
  注意,大家可以看到,经过上面的演示我们实现了LVS的高可用及前端负载均衡的高可用,同时实现对后端realserer监控,也实现后端resalserver宕机时会给管理员发送邮件,但是我们还有几个问题没有解决,问题如下
1.  所以realserver都宕机,怎么处理,是不是用户就没法打开,还是提供一下为何页面
2.  怎么完成为何模式keepalived切换?
3.  如何在keepalived故障时,发送邮件给指定的管理员
  六、我们在负载均衡器上提供维护页面,这样比较靠谱,也比较常用
  6.1 分别在MASTER和SLAVE安装httpd
  #yum –y installhttpd
  6.2配置维护页面
  #echo"Website is currently under maintenance, please come back later"  >/var/www/html/index.html
  6.3启动httpd
  #/etc/init.d/httpdstart
  6.4修改配置文件
!Configuration File for keepalived

global_defs{
   notification_email {
   18801457794@139.com
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smpt_connect_timeout 30
   router_id zhangfang
}

vrrp_instanceVI_1 {
    state MASTER  
    interface eth0 #指定HA监测网络的接口
    virtual_router_id 20 #虚拟路由标示,这是标示是一个数字,同一个vrrp实例使用唯一的标示,即同一vrrp_instance下,MASTER和BACKUP必须是一致的
    priority 100 #定义优先级,数字越大,优先级越高
    advert_int 1 #设置MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication { #设置验证类型和密码
        auth_type PASS #设置认证类型,主要有PASS和AH两种
        auth_pass 1111 #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通行
    }
    virtual_ipaddress {
        192.168.10.180
    }
  }

virtual_server192.168.10.180 80 {
    delay_loop 6 #设置运行状况的检查时间
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50 #会话保持时间
    protocol TCP #转发协议类型
    real_server 192.168.10.41 80 {
        weight 3
TCP_CHECK {   #realserver的状态检测设置部分
            connect_timeout 10 #标示10s无响应超时
            nb_get_retry 3 #重试次数
            delay_before_retry 3 #重试间隔
   connect_port 80
        }
    }
real_server 192.168.10.49 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
   sorry_server 127.0.0.1 80
}
增加sorry_server选项
6.5关闭所有的realserver,并重启下MASTER和SLAVE的keepalived
#/etc/init.d/httpdstop
#/etc/init.d/keepalivedrestart
6.6查看lvs
# ipvsadm-ln
IPVirtual Server version 1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.180:80 rr
  ->127.0.0.1:80                 Local   1     0          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-657010-1-1.html 上篇帖子: Keepalived 高可用 下篇帖子: HA Cluster和KeepAlived
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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