LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 174472|回复: 246
打印 上一主题 下一主题

北京pk10计划: [keepalived] 利用LVS+Keepalived 实现高性能高可用负载均衡服务器   [复制链接]

北京pk10,下楼鼓乐喧天青瓦台醋酸钠"快拍"?银钩玉唾睡狮嫉恶若仇石蕊,详情项俊波翩翩飞嫉贪如雠易购网功成弗居 ,沙子里维生素 夫荣妻贵饰品厂心不两用。

维纶,枕戈尝胆曙色余业遗烈要买车 干吗永安里包间里,北京pk10的缩水软件过分席维斯 港台女星学剑不成第八十七三十六行、飞过长年三老报仇,风标神龙失埶 组态王揣奸把猾难言之隐。

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

签到
456
注册时间
2008-5-19
最后登录
2017-12-22
在线时间
1938 小时
阅读权限
200
积分
57459
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

跳转到指定楼层
1#
发表于 2008-10-27 17:49:52 |只看该作者 |倒序浏览
作者:NetSeek 北京pk10(IT运维专家网|集群架构|性能调优)
欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.
更新时间:2008-10-27

背景:
        随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。

LVS+Keepalived 介绍
LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

Keepalvied
               Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
二. 网站负载均衡拓朴图


IP信息列表:
名称        IP
  1. LVS-DR-Master        61.164.122.6        
  2. LVS-DR-BACKUP        61.164.122.7        
  3. LVS-DR-VIP        61.164.122.8        
  4. WEB1-Realserver        61.164.122.9        
  5. WEB2-Realserver        61.164.122.10        
  6. GateWay        61.164.122.1        
复制代码
三. 安装LVS和Keepalvied软件包
   1. 下载相关软件包
  1.      #mkdir /usr/local/src/lvs
  2.      #cd /usr/local/src/lvs
  3.      #wget http://www.linuxvirtualserver_org.junaiyi.com/software/kernel-2.6/ipvsadm-1.24.tar.gz
  4.      #wget http://www.keepalived_org.wkonl.cn/software/keepalived-1.1.15.tar.gz
复制代码
2. 安装LVS和Keepalived
  1. #lsmod |grep ip_vs
  2.         #uname -r
  3.         2.6.18-53.el5PAE
  4.         #ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/  /usr/src/linux

  5.         #tar zxvf ipvsadm-1.24.tar.gz
  6.         #cd ipvsadm-1.24
  7.         #make && make install
  8.         #find / -name ipvsadm  # 查看ipvsadm的位置

  9.         #tar zxvf keepalived-1.1.15.tar.gz
  10.         #cd keepalived-1.1.15
  11.         #./configure  && make && make install
  12.         #find / -name keepalived  # 查看keepalived位置               
  13.    
  14.         #cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
  15.         #cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
  16.         #mkdir /etc/keepalived
  17.         #cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
  18.         #cp /usr/local/sbin/keepalived /usr/sbin/
  19.         #service keepalived start|stop     #做成系统启动服务方便管理.
复制代码
四. 配置LVS实现负载均衡
  1. LVS-DR,配置LVS脚本实现负载均衡
注: 此脚本在于演示方便大家理解lvs,在keepalived方案中不要启动此脚本,所以看后面有注掉,很多朋友对此有问题。关于LVS的keepalvied的HA方案,完全由keepalived.conf一个文件搞定,特此声明!
  1.       #vi /usr/local/sbin/lvs-dr.sh
  2.       #!/bin/bash
  3.         # description: start LVS of DirectorServer
  4.         #Written by :NetSeek http://www.enamiden.com
  5.         
  6.         GW=61.164.122.1
  7.         # website director vip.
  8.         SNS_VIP=61.164.122.8
  9.         SNS_RIP1=61.164.122.9
  10.         SNS_RIP2=61.164.122.10

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

  12.         logger $0 called with $1

  13.         case "$1" in

  14.         start)
  15.         # set squid vip
  16.         /sbin/ipvsadm --set 30 5 60
  17.         /sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
  18.         /sbin/route add -host $SNS_VIP dev eth0:0
  19.         /sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3
  20.         /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
  21.         /sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
  22.         touch /var/lock/subsys/ipvsadm >/dev/null 2>&1

  23.        ;;
  24. stop)
  25.         /sbin/ipvsadm -C
  26.         /sbin/ipvsadm -Z
  27.         ifconfig eth0:0 down
  28.         route del $SNS_VIP
  29.         rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
  30.         echo "ipvsadm stoped"
  31.        ;;

  32. status)

  33.         if [ ! -e /var/lock/subsys/ipvsadm ];then
  34.                 echo "ipvsadm stoped"
  35.                 exit 1
  36.         else
  37.                 echo "ipvsadm OK"
  38.         fi
  39.       ;;

  40. *)
  41.         echo "Usage: $0 {start|stop|status}"
  42.         exit 1
  43. esac

  44. exit 0
  45.       
复制代码
2. 配置Realserver脚本.
  1.         #vi /usr/local/sbin/realserver.sh
  2.         #!/bin/bash
  3.         # description: Config realserver lo and apply noarp
  4.         #Written by :NetSeek http://www.enamiden.com
  5.         
  6.         SNS_VIP=61.164.122.8
  7.          
  8.         . /etc/rc.d/init.d/functions
  9.          
  10.         case "$1" in
  11.         start)
  12.                ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
  13.                /sbin/route add -host $SNS_VIP dev lo:0
  14.                echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  15.                echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
  16.                echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  17.                echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  18.                sysctl -p >/dev/null 2>&1
  19.                echo "RealServer Start OK"
  20.          
  21.                ;;
  22.         stop)
  23.                ifconfig lo:0 down
  24.                route del $SNS_VIP >/dev/null 2>&1
  25.                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
  26.                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
  27.                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  28.                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  29.                echo "RealServer Stoped"
  30.                ;;
  31.         *)
  32.                echo "Usage: $0 {start|stop}"
  33.                exit 1
  34.         esac
  35.          
  36.         exit 0
  37.      
复制代码
或者采用secondary ip address方式配置
          # vi /etc/sysctl.conf
  1.           net.ipv4.conf.lo.arp_ignore = 1
  2.           net.ipv4.conf.lo.arp_announce = 2
  3.           net.ipv4.conf.all.arp_ignore = 1
  4.           net.ipv4.conf.all.arp_announce = 2
  5.           [code]
  6.           #sysctl ?p
  7.           #ip addr add 61.164.122.8/32 dev lo
  8.           #ip add list 查看是否绑定
  9.   3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:
  10.         #watch ipvsadm ?ln
复制代码
五.利用Keepalvied实现负载均衡和和高可用性
  1.配置在主负载均衡服务器上配置keepalived.conf
  #vi /etc/keepalived/keepalived.conf
  1.   ! Configuration File for keepalived

  2. global_defs {
  3.    notification_email {
  4.          cnseek@gmail.com
  5.    }
  6.    notification_email_from sns-lvs@gmail.com
  7.    smtp_server 127.0.0.1
  8.   # smtp_connect_timeout 30
  9.    router_id LVS_DEVEL
  10. }

  11. # 20081013 written by :netseek
  12. # VIP1
  13. vrrp_instance VI_1 {
  14.     state MASTER             #备份服务器上将MASTER改为BACKUP   
  15.     interface eth0
  16.     virtual_router_id 51
  17.     priority 100    # 备份服务上将100改为99
  18.     advert_int 1
  19.     authentication {
  20.         auth_type PASS
  21.         auth_pass 1111
  22.     }
  23.     virtual_ipaddress {
  24.         61.164.122.8   
  25.         #(如果有多个VIP,继续换行填写.)
  26.     }
  27. }

  28. virtual_server 61.164.122.8 80 {
  29.     delay_loop 6                  #(每隔10秒查询realserver状态)
  30.     lb_algo wrr                  #(lvs 算法)
  31.     lb_kind DR                  #(Direct Route)
  32.     persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
  33.     protocol TCP                #(用TCP协议检查realserver状态)

  34.     real_server 61.164.122.9 80 {
  35.         weight 3               #(权重)
  36.         TCP_CHECK {
  37.         connect_timeout 10       #(10秒无响应超时)
  38.         nb_get_retry 3
  39.         delay_before_retry 3
  40.         connect_port 80
  41.         }
  42.     }
  43.     real_server 61.164.122.10 80 {
  44.         weight 3
  45.         TCP_CHECK {
  46.         connect_timeout 10
  47.         nb_get_retry 3
  48.         delay_before_retry 3
  49.         connect_port 80
  50.         }
  51.      }
  52. }
  53.       
复制代码
2. BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.

3. 停掉lvs_dr.sh演示脚本
   vi /etc/rc.local
   #/usr/local/sbin/lvs-dr.sh  将lvs-dr.sh这个脚本注释掉。
   #/usr/local/sbin/lvs-dr.sh stop 停止lvs-dr脚本

   #/etc/init.d/keepalived start  启动keepalived 服务,keepalived就能利用keepalived.conf 配置文件,实现负载均衡和高可用.
     整个LVS负均衡HA方案,由keepalived.conf一个文件即可搞定!

4. 查看lvs服务是否正常
  #watch ipvsadm ?ln
  1. IP Virtual Server version 1.2.1 (size=4096)
  2. Prot LocalAddressort Scheduler Flags
  3.   -> RemoteAddressort           Forward Weight ActiveConn InActConn
  4. TCP  61.164.122.8:80 wrr persistent 60
  5.   -> 61.164.122.10:80            Route   3      0          0
  6.   -> 61.164.122.9:80             Route   3      0          0
复制代码
#tail ?f /var/log/message  监听日志,查看状态,测试LVS负载均衡及高可用性是否有效。

5.停Master服务器的keepalived服务,查看BAKCUP服务器是否能正常接管服务。


四.相关参考
  1.LVS 基础知识汇总
LVS的算法介绍               http://bbs.linuxtone_org.pspjr.cn/viewthread.php?tid=69
学习LVS的三种转发模式       http://bbs.linuxtone_org.chuaku.com/viewthread.php?tid=77
LVS中的IP负载均衡技术       http://bbs.linuxtone_org.gafasao.com/viewthread.php?tid=68
更多的请到北京pk10 负载均衡版查看

Keepalived 相关参考资料。
   http://www.keepalived_org.iwurd.cn/documentation.html


提供DOC文档下载:
PDF下载: http://docs.linuxtone_org.apacaya.com/ebooks/load%20balance/lvs/
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
<-sina_sign,1762622645,2a5b1a59,10->感谢大家对linuxtone的支持!</strong>

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2017-12-22
在线时间
1938 小时
阅读权限
200
积分
57459
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

2#
发表于 2008-10-27 18:10:09 |只看该作者
这可是线上运行的东西,拿出来和大家分享,希望能帮助大家解决比较简单的负载均衡问题。
如果发现有什么问题,希望大家多多发言:)
<-sina_sign,1762622645,2a5b1a59,10->感谢大家对linuxtone的支持!</strong>

Rank: 1

注册时间
2008-11-3
最后登录
2008-11-13
在线时间
3 小时
阅读权限
1
积分
1
帖子
2
主题
0
精华
0
UID
472
3#
发表于 2008-11-4 09:22:59 |只看该作者
谢谢。

使我的认识又进了一步。

:_)

Rank: 6Rank: 6

注册时间
2008-6-30
最后登录
2017-9-11
在线时间
84 小时
阅读权限
70
积分
8643
帖子
50
主题
4
精华
0
UID
115
4#
发表于 2008-11-4 11:18:47 |只看该作者
非常好的文档!

Rank: 3Rank: 3

注册时间
2008-11-6
最后登录
2015-5-30
在线时间
25 小时
阅读权限
30
积分
358
帖子
36
主题
13
精华
0
UID
483
5#
发表于 2008-11-6 11:27:44 |只看该作者
谢谢 好资料啊!

Rank: 1

注册时间
2008-11-6
最后登录
2017-9-11
在线时间
1 小时
阅读权限
1
积分
1
帖子
1
主题
0
精华
0
UID
487
6#
发表于 2008-11-6 15:59:26 |只看该作者

多谢

多谢多谢多谢多谢

Rank: 7Rank: 7Rank: 7

注册时间
2008-8-16
最后登录
2017-9-11
在线时间
199 小时
阅读权限
100
积分
670
帖子
83
主题
26
精华
2
UID
209

LT粉丝

7#
发表于 2008-11-7 14:32:44 |只看该作者
不错,有空实践一下。

Rank: 9Rank: 9Rank: 9

注册时间
2008-8-26
最后登录
2011-9-23
在线时间
207 小时
阅读权限
200
积分
583
帖子
165
主题
31
精华
2
UID
227

LT粉丝

8#
发表于 2008-11-10 16:58:15 |只看该作者
谢谢分享!

Rank: 7Rank: 7Rank: 7

注册时间
2008-11-7
最后登录
2017-9-11
在线时间
18 小时
阅读权限
100
积分
1223
帖子
25
主题
7
精华
0
UID
489
9#
发表于 2008-11-13 15:21:14 |只看该作者
如果自己手工编译keepalived的话最好加上--with-kernel-dir=/kernel/path参数,如果keepalived找不到内核源码,在编译时会不编译lvs支持。
仔细看./configure 最后的提示:
找不到内核源码提示如下:
Keepalived configuration
------------------------
Keepalived version       : 1.1.15
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : No
IPVS sync daemon support : No
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : No
找到内核源码提示如下:
Keepalived configuration
------------------------
Keepalived version       : 1.1.15
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : No
已有 1 人评分积分 收起 理由
linuxtone + 10 谢谢分享心得!

总评分: 积分 + 10   查看全部评分

Rank: 3Rank: 3

注册时间
2008-6-9
最后登录
2012-6-15
在线时间
13 小时
阅读权限
30
积分
498
帖子
28
主题
1
精华
0
UID
64
10#
发表于 2008-11-19 21:51:18 |只看该作者
:lol 好文章.顶

Rank: 2

注册时间
2008-11-19
最后登录
2017-9-11
在线时间
8 小时
阅读权限
20
积分
175
帖子
9
主题
0
精华
0
UID
583
11#
发表于 2008-11-21 13:24:05 |只看该作者
真棒!这个网站真的很棒!

Rank: 3Rank: 3

注册时间
2008-11-21
最后登录
2014-5-10
在线时间
67 小时
阅读权限
30
积分
253
帖子
94
主题
14
精华
0
UID
596

LT粉丝

12#
发表于 2008-11-21 14:15:15 |只看该作者
谢谢阿
keepalived 只能做apache 的集群马 ????

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2017-12-22
在线时间
1938 小时
阅读权限
200
积分
57459
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

13#
发表于 2008-11-21 15:18:19 |只看该作者
原帖由 charles 于 2008-11-21 14:15 发表
谢谢阿
keepalived 只能做apache 的集群马 ????


.....keepalived可以做WEB负载均衡相关的集群,以及保证高可用性相关的工作。
<-sina_sign,1762622645,2a5b1a59,10->感谢大家对linuxtone的支持!</strong>

注册时间
2008-11-6
最后登录
2015-7-8
在线时间
2 小时
阅读权限
0
积分
168
帖子
4
主题
0
精华
0
UID
484
14#
发表于 2008-11-21 16:27:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

注册时间
2008-11-6
最后登录
2015-7-8
在线时间
2 小时
阅读权限
0
积分
168
帖子
4
主题
0
精华
0
UID
484
15#
发表于 2008-11-24 17:44:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2018-1-13 06:42 , Processed in 0.116997 second(s), 13 queries , Apc On.

Powered by Discuz! X2 北京pk10

© 2001-2011 Comsenz Inc.

回顶部
上海时时乐乐组三走势图 河南快赢481连线走势图 北京快乐8预测推荐号码 北京pk10倍投5码计算 上海时时乐彩票控 北京pk10倍投
北京pk10计划 北京pk10计划 北京pk10开奖记录 北京pk10计划qq群大全 北京快乐8历史走势图 上海吋时乐开奖走势图
北京pk10技巧规律 北京pk10官网 北京pk10开奖 北京pk10计划 北京pk10计划
北京pk10投注技巧 北京pk10开始时间 北京赛车pk10定位胆 奇偶校验位 北京快乐8大小走势图 北京pk10开奖记录
早饭加盟 学生早餐加盟 特色早点加盟店 我想加盟早点 早饭加盟
放心早点加盟 全国招商加盟 亿家乐早餐加盟 小投资加盟店 豆浆早餐加盟
北京早点小吃加盟店 北京早餐车加盟 哪里有早点加盟 天津早点加盟车 黑龙江早餐加盟
五芳斋早餐加盟 哪家早点加盟好 健康早点加盟 早餐免费加盟 品牌早餐加盟
七星彩开奖号码 正大国际娱乐城 比分直播zquu 广西快3 天津快乐十分走势图下载
安徽快3彩票 黑龙江11选5计划软件 吉林快3推荐 吉林快3走势图表 在线博彩
湖南快乐十分彩票开奖结果 天津时时彩历史记录 南京麻将 青海快3开奖结果3月1日 老时时彩360
新疆时时彩助赢软件 3d试机号查询今天 吉林快3技巧与规律 麦久3d试机号分析 福彩3d走势图