Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1650|回复: 1

LVS+Keepalived负载均衡配置

[复制链接]

217

主题

331

帖子

4695

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4695
QQ
发表于 2015-4-4 22:22:03 | 显示全部楼层 |阅读模式
随着互联网飞速的发展,互联网WEB服务器,必须要保证每天7x24x365不间断服务~~~~~~~~~~~~~~~~~~~~Duang~~~~~`
随着人数不断的增加,有什么好的WEB前端架构呢?既能实现高可用、负载均衡、成本有最低廉呢?答案有木有呢?LVS+Keepalived是一个非常不错的前端均衡选择。(今天来研究一下如何快速配置LVS及日常的维护,供参考!)
一、系统环境
  1. LVS-Master 192.168.2.108
  2. LVS-BACKUP 192.168.2.109
  3. LVS-DR-VIP 192.168.2.100
  4. WEB1-Realserver 192.168.2.79
  5. WEB2-Realserver 192.168.2.80
复制代码
130430677.gif
二、Keepalived安装
由于我们使用的是lvs+keepalived,所以这里不需要配置lvs-dr脚本,直接在keepalived.conf里面配置即可.
  1. #!/bin/sh
  2. ###脚本编写目的:自动安装lvs+keepalived
  3. ###编写时间: 2011年7月6日17:25:39
  4. ###初稿人:wugk
  5. ###定义变量
  6. DIR1=/usr/src
  7. DIR2=/usr/local
  8. cat << EOF
  9. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10. ++++Welcome to use Linux installed a key LVS+KEEPALIVED shells scripts
  11. +++++++++++++++++++++*************************++++++++++++++++++++++++
  12. EOF
  13. if
  14. [ $UID -ne 0 ];then
  15. echo “This script must use root user ,please exit……”
  16. sleep 2
  17. exit 0
  18. fi
  19. download ()
  20. {
  21. cd $DIR1 && wget -c http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
  22. if
  23. [ $? = 0 ];then
  24. echo "Download LVS Code is OK!"
  25. else
  26. echo "Download LVS Code is failed,Please check!"
  27. exit 1
  28. fi
  29. }
  30. ipvsadm_install ()
  31. {
  32. ln -s $DIR1/kernels/2.6.* $DIR1/linux
  33. cd $DIR1 && tar xzvf ipvsadm-1.24.tar.gz &&cd ipvsadm-1.24 && make && make install
  34. if
  35. [ $? -eq 0 ];then
  36. echo "Install ipvsadm success,please waiting install keepalived ..............."
  37. else
  38. echo "Install ipvsadm failed ,please check !"
  39. exit 1
  40. fi
  41. }
  42. keepalived_install ()
  43. {
  44. cd $DIR1 && tar -xzvf keepalived-1.1.15.tar.gz &&cd keepalived-1.1.15 && ./configure && make && make install
  45. if
  46. [ $? -eq 0 ];then
  47. echo "Install keepalived success,please waiting configure keepalived ..............."
  48. else
  49. echo "Install keepalived failed ,please check install version !"
  50. exit 1
  51. fi
  52. }
  53. ######如果以上软件包编译报错的话,请检查相关的版本跟系统版本之间的关系,然后手动下载安装.
  54. keepalived_config ()
  55. {
  56. cp $DIR2/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ && cp $DIR2/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p /etc/keepalived &&cp $DIR2/etc/keepalived/keepalived.conf /etc/keepalived/ && cp $DIR2/sbin/keepalived /usr/sbin/
  57. if
  58. [ $? -eq 0 ];then
  59. echo "Keepalived system server config success!"
  60. else
  61. echo "Keepalived system server config failed ,please check keepalived!"
  62. exit 1
  63. fi
  64. }
  65. PS3="Please select Install Linux Packages:"
  66. select option in download ipvsadm_install keepalived_install keepalived_config
  67. do
  68. $option
  69. done
复制代码
以上脚本分别在lvs-master和lvs-backup上执行安装。
三、Keepalived配置
也可以参考配置:http://chinaapp.sinaapp.com/download/keepalived.conf 可以直接打开
  1. ! Configuration Filefor keepalived
  2. global_defs {
  3.   notification_email {
  4.    wgkgood@163.com
  5.   }
  6.   notification_email_from wgkgood@163.com
  7.   smtp_server 127.0.0.1
  8.   smtp_connect_timeout 30
  9.   router_id LVS_DEVEL
  10. }
  11. # VIP1
  12. vrrp_instance VI_1 {
  13.   state MASTER
  14.   interface eth0
  15.   lvs_sync_daemon_inteface eth0
  16.   virtual_router_id 51
  17.   priority 100
  18.   advert_int 5
  19.   authentication {
  20.     auth_type PASS
  21.     auth_pass 1111
  22.   }
  23.   virtual_ipaddress {
  24.     192.168.2.100
  25.   }
  26. }
  27. #REAL_SERVER_1
  28. virtual_server 192.168.2.100 80 {
  29.   delay_loop 6
  30.   lb_algo wlc
  31.   lb_kind DR
  32.   persistence_timeout 60
  33.   protocol TCP
  34.   real_server 192.168.2.79 80 {
  35.     weight 100
  36.     TCP_CHECK {
  37.     connect_timeout 10
  38.     nb_get_retry 3
  39.     delay_before_retry 3
  40.     connect_port 80
  41.     }
  42. }
  43. #REAL_SERVER_2
  44.   real_server 192.168.2.80 80 {
  45.     weight 100
  46.     TCP_CHECK {
  47.     connect_timeout 10
  48.     nb_get_retry 3
  49.     delay_before_retry 3
  50.     connect_port 80
  51.     }
  52.   }
  53. }
复制代码
注意***Lvs-backup端同样配置,只需要更改state MASTER为state BACKUP,修改priority 100为priority 90即可。

四、WEB服务端配置
如下的VIP1指的是lvs-dr-vip地址,及对外提供访问的虚拟ip:
  1. #!/bin/sh
  2. PS3="Please Choose whether or not to start a realserver VIP1 configuration:"
  3. select i in"start""stop"
  4. do
  5. case"$i"in
  6. start)
  7. read -p "Please enter the virtual server IP address:" VIP1
  8. ifconfig lo:0 $VIP1 netmask 255.255.255.255 broadcast $VIP1
  9. /sbin/route add -host $VIP1 dev lo:0
  10. echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  11. echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  12. echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  13. echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  14. sysctl -p >/dev/null 2>&1
  15. echo "RealServer Start OK"
  16. exit 0
  17. ;;
  18. stop)
  19. ifconfig lo:0 down
  20. route del $VIP1 >/dev/null 2>&1
  21. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  22. echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  23. echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  24. echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  25. echo "RealServer Stoped"
  26. exit 1
  27. ;;
  28. *)
  29. echo "Usage: $0 {start|stop}"
  30. exit 2
  31. esac
  32. done
复制代码
脚本会提示是否启动,按1即启动,然后输入vip地址 192.168.2.100 ,用ifconfig你会看到:lo:0的ip即表示配置ip成功。
  1. lo:0  Link encap:Local Loopback
  2.    inet addr:192.168.2.100 Mask:255.255.255.255
  3.    UP LOOPBACK RUNNING MTU:16436 Metric:1
复制代码
五、测试LVS+keepalived
/etc/init.d/keepalived restart 查看lvs-master日志:
在浏览器里面访问 http://192.168.2.100/ 即可!当你宕掉lvs-master后,lvs-backup会接管变成lvs-master提供服务,当lvs-master故障恢复后,lvs-backup又会变成原来的状态!
所安装的脚本可以在这里下载:
在lvs-master和lvs-backup上执行http://chinaapp.sinaapp.com/download/lvs-keepalived.sh
在web服务器端执行http://chinaapp.sinaapp.com/download/realserver.sh
六、实战建议
为了解决脑裂问题,需要把主MASTER和备BACKUP各自的keepalived.conf配置文件里面的state 状态都改成BACKUP,优先级分别设置100和90。
我们常听说脑裂问题,到底什么是脑裂问题呢?
在集群配置中的split-brain现象是指,主从之间互相检测不到心跳,同时抢占资源,导致
服务无法正常访问的情况。所以我们还需要在主备keepalived.conf添加nopreempt 指令!
附realserver.sh脚本文件:
  1. #!/bin/sh
  2. #LVS Client Server
  3. VIP=192.168.111.138
  4. case  $1  in
  5.                                                                                                                                                                                                                                                          
  6. start)
  7.                                                                                                                                                                                                                                                          
  8.     ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
  9.     /sbin/route add -host $VIP dev lo:0
  10.     echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  11.     echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  12.     echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  13.     echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  14.     sysctl -p >/dev/null 2>&1
  15.     echo "RealServer Start OK"
  16.     exit 0
  17. ;;
  18.                                                                                                                                                                                                                                                          
  19. stop)
  20.     ifconfig lo:0 down
  21.     route del $VIP >/dev/null 2>&1
  22.     echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  23.     echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  24.     echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  25.     echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  26.     echo "RealServer Stoped OK"
  27.     exit 1
  28. ;;
  29. *)
  30.     echo "Usage: $0 {start|stop}"
  31. ;;
  32. esac
复制代码
京峰Linux教育出品,必属精品:www.jfedu.net
京峰Linux教育创始人之一,只为有梦想的人!任何事情只要去行动,就会收获结果!
回复

使用道具 举报

63

主题

161

帖子

2628

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2628
发表于 2015-4-4 22:42:58 | 显示全部楼层
顶,写得非常不错。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-6-16 08:57 , Processed in 0.048671 second(s), 13 queries , Apc On.

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