Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27750
  • 博文数量: 6
  • 博客积分: 286
  • 博客等级: 二等列兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-11 19:27
文章分类
文章存档

2011年(6)

我的朋友

分类: LINUX

2011-08-17 11:35:29

意义:
lvs权重动态分配,能够实现lvs后端web服务器在高负载压力的情况下自动变化权重,以此达到平衡服务器承受能力的目的。此技术内容只意在解决服务器性能不一的情况下不用手工调节连接数量而对服务器实行连接数比例性变化。从而缓解高负载web服务器的工作压力。
实现:
lvs动态权重的配置一部分在keepalived中。一部分是自写脚本。通过keepalived的misc健康检查机制对服务器进行动态检查。
keepalived配置:
在keepalived虚拟服务器位置配置如下
  1. virtual_server 10.7.1.1 80 {
  2. delay_loop 6
  3. lb_algo wlc
  4. lb_kind DR
  5. persistence_timeout 3600
  6. protocol TCP
  7. real_server 10.7.1.10 80 {
  8. weight 100
  9. MISC_CHECK {
  10. misc_path "/etc/keepalived/script/check_http_ip 10.11.1.11 0.5 5 8 / 200"
  11. misc_timeout 5
  12. misc_dynamic
  13. }
  14. }
  15. real_server 10.7.1.11 80 {
  16. weight 100
  17. MISC_CHECK {
  18. misc_path "/etc/keepalived/script/check_http_ip 10.11.1.12 0.5 5 8 / 200"
  19. misc_timeout 5
  20. misc_dynamic
  21. }
  22. }
  23. }
配置中蓝字部分就是增加的MISC检测配置部分,其中misc_path是检查命令路径 misc_timout 5是检测超时时间 misc_dynamic是动态调整权重配置
自建脚本的编写(脚本写的很烂  见笑了)
创建自编写脚本,我是是用nagios监测套件中的命令进行重封装实现
  1. #!/bin/sh
  2. if [ -n "$1" ];then
  3. realip="-I $1"
  4. else
  5. echo "Usage: check_http_ip [IPaddress] [warningtime] [criticaltime] [timeout] [url] [expect]"
  6. fi
  7. if [ -n "$2" ];then
  8. warning_time="-w $2"
  9. fi
  10. if [ -n "$3" ];then
  11. criti_time="-c $3"
  12. fi
  13. if [ -n "$4" ];then
  14. timeout="-t $4"
  15. fi
  16. if [ -n "$5" ];then
  17. url="-u $5"
  18. fi
  19. if [ -n "$6" ];then
  20. expect="-e $6"
  21. fi
  22. time=`/usr/lib/nagios/plugins/check_http $realip $warning_time $criti_time $timeout $url $expect`
  23. #/usr/lib/nagios/plugins/check_http $realip $warning_time $criti_time $url $expect
  24. stat=`echo $?`
  25. if [ $stat == "0" ];then
  26. exit 102
  27. #awk '{if($time<$nomal_time){print "well";exit 52} else {exit 102;print "oh,no!"}}'
  28. else
  29. if [ $stat == "1" ];then
  30. exit 52
  31. else
  32. exit 1
  33. fi
  34. fi
        脚本封装原理很简单,就是通过命令精确检测http,如果返回返回值正确就重定义为102 (lvs默认权重是100)如果返回值是服务器压力过大就重定义为52.如果服务器挂掉或者返回值是503、404等,即刻会将该服务器踢下线
另外简单介绍一下lvs权重计算公式
当权重为100时,权重=返回值-2 (这个公式是从网上的说明的简略结果,网络上对于这块的东西很少很少)

实现效果:
无压力状态
TCP 10.7.1.1:80 wlc persistent 3600
-> 10.7.1.10:80 Route 100 0 0
-> 10.7.1.11:80 Route 100 0 0
有压力状态(压力通过AB测试工具对端口施压)
TCP 10.7.1.1:80 wlc persistent 3600
-> 10.7.1.10:80 Route 50 0 0
-> 10.7.1.11:80 Route 100 0 0
过压超载或者服务器挂掉(服务器拒绝连接)
TCP 10.7.1.1:80 wlc persistent 3600
-> 10.7.1.11:80 Route 100 0 0
一点说明,服务器权重比例决定服务器分配连接数比例。如果100:50也就是代表连接数分配比例为2:1从而有效降低服务器 压力。提高服务质量

 劣势:
任何技术手段都有优劣,优势前面已经说过了,缺点就是如果服务器比例严重失调,访问量与可承受量不匹配的情况下。可以通过适当增加配置参数增加容载量。但是如果失调严重可能造成所有服务器下线的不良后果
阅读(3476) | 评论(0) | 转发(0) |
0

上一篇:NANOBSD制作教程

下一篇:没有了

给主人留下些什么吧!~~