Submitted by admin on 2011, July 5, 10:22 PM
一、 LVS简介
LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
关于LVS的安装与介绍,在前面的文章中已经有过深入介绍,这里不再讲述。
本文讲解的环境如下:
操作系统:统一采用Centos5.3版本,地址规划如下:
图1
图1中的VIP指的是虚拟IP地址,还可以叫做LVS集群的服务IP,在DR、TUN模式中,数据包是直接返回给用户的,所以,在Director Server上以及集群的每个节点上都需要设置这个地址。此IP在Real Server上一般绑定在回环地址上,例如lo:0,同样,在Director Server上,虚拟IP绑定在真实的网络接口设备上,例如eth0:0。
各个Real Server可以是在同一个网段内,也可以是相互独立的网段,还可以是分布在internet上的多个服务器.
LVS+Keepalived高可用负载均衡集群拓扑结构如图2所示:
图2
二、安装Keepalived
keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,它能够保证网络的不间断、稳定的运行。所以,keepalived一方面具有服务器健康检测功能,另一方面也具有HA cluster功能。
Keepalived的官方站点是http://www.keepalived.org,可以在这里下载到各种版本,我们这里下载的是keepalived-1.1.19.tar.gz,安装步骤如下:
[root@DR1 ~]#tar zxvf keepalived-1.1.19.tar.gz
[root@DR1 ~]#cd keepalived-1.1.19
[root@DR1 keepalived-1.1.19]#./configure --sysconf=/etc \
> --with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686
[root@DR1 keepalived-1.1.19]#make
[root@DR1 keepalived-1.1.19]#make install
[root@DR1 keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived /sbin/
在编译选项中,“--sysconf”指定了Keepalived配置文件的安装路径,即路径为/etc/Keepalived/Keepalived.conf,“--with-kernel-dir”这是个很重要的参数,但这个参数并不是要把Keepalived编译进内核,而是指定使用内核源码里面的头文件,就是include目录。如果要使用LVS时,才需要用到此参数,否则是不需要的.
三、配置Keepalived
Keepalived的配置非常简单,仅仅需要一个配置文件即可完成HA cluster和lvs服务节点监控功能,Keepalived的安装已经在上面章节进行了介绍,在通过Keepalived搭建高可用的LVS集群实例中,主、备Director Server都需要安装Keepalived软件,安装成功后,默认的配置文件路径为/etc/Keepalived/Keepalived.conf。一个完整的keepalived配置文件,有三个部分组成,分别是全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分,下面详细介绍下这个配置文件中每个选项的详细含义和用法:
#全局定义部分
global_defs {
notification_email {
dba.gao@gmail.com #设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的sendmail服务。
ixdba@163.com
}
notification_email_from Keepalived@localhost #设置邮件的发送地址。
smtp_server 192.168.200.1 #设置smtp server地址。
smtp_connect_timeout 30 #设置连接smtp服务器超时时间。
router_id LVS_MASTER #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息
}
#vrrp实例定义部分
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER表示此主机是主用服务器,BACKUP表示是备用服务器。
interface eth0 #指定HA监测网络的接口。
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,并且同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下,MASTER和BACKUP必须是一致的。
priority 100 #定义优先级,数字越大,优先级越高,在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。
advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。
authentication { #设定验证类型和密码。
auth_type PASS #设置验证类型,主要有PASS和AH两种。
auth_pass 1111 #设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。
}
virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个。
192.168.12.135
}
}
#虚拟服务器定义部分
virtual_server 192.168.12.135 80 { #设置虚拟服务器,需要指定虚拟ip地址和服务端口,ip与端口之间用空格隔开。
delay_loop 6 #设置健康检查时间,单位是秒。
lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法。
lb_kind DR #设置LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选。
persistence_timeout 50 #会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。
protocol TCP #指定转发协议类型,有tcp和udp两种。
real_server 192.168.12.246 80 { #配置服务节点1,需要指定real server的真实IP地址和端口,ip与端口之间用空格隔开。
weight 3 #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源。
TCP_CHECK { #realserve的状态检测设置部分,单位是秒
connect_timeout 10 #10秒无响应超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 192.168.12.237 80 { #配置服务节点2
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
在配置Keepalived.conf时,需要特别注意配置文件的语法格式,因为Keepalived在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能启动起来,因而配置文件一定要正确。
在默认情况下,Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路径下,可以通过“Keepalived -f”参数指定你所在的配置文件路径即可。
Keepalived.conf配置完毕后,将此文件拷贝到备用Director Server对应的路径下,然后做两个简单的修改即可:
将“state MASTER”更改为“state BACKUP”
将priority 100更改为一个较小的值,这里改为“priority 80”
最后,还要配置集群的Real server节点,以达到与Director Server相互广播通信并忽略arp的目的,脚本的内容已经在前面文章中进行过介绍,这里不做解释。
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:1004
Submitted by admin on 2011, July 5, 10:21 PM
一个功能比较完整的keepalived的配置文件,其配置文件keepalived.conf可以包含三个文本块:全局定义块、VRRP实例定义块及虚拟服务器定义块。全局定义块和虚拟服务器定义块是必须的,如果在只有一个负载均衡器的场合,就不须VRRP实例定义块。
接下来,我们以一个配置文件模版为例,有选择的说明其中一些重要项的功能或作用。
● 全局定义块
1、 email通知。作用:有故障,发邮件报警。这是可选项目,建议不用,用nagios全面监控代替之。
2、 Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。
3、 花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。
● VRRP定义块
1、 同步vrrp组vrrp_sync_group。作用:确定失败切换(FailOver)包含的路由实例个数。即在有2个负载均衡器的场景,一旦某个负载均衡器失效,需要自动切换到另外一个负载均衡器的实例是哪些?
2、 实例组group.至少包含一个vrrp实例。
3、 Vrrp实例vrrp_instance.实例名出自实例组group所包含的那些名字。
(1) 实例状态state.只有MASTER和BACKUP两种状态,并且需要大写这些单词。其中MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的系统会自动把它的状态有BACKUP变换成MASTER;当失效的MASTER所在的系统恢复时,BACKUP从MASTER恢复到BACKUP状态。
(2) 通信接口interface。对外提供服务的网络接口,如eth0,eth1.当前主流的服务器都有2个或2个以上的接口,在选择服务接口时,一定要核实清楚。
(3) lvs_sync_daemon_inteface。负载均衡器之间的监控接口,类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。在DR模式中,lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。
(4) 虚拟路由标识virtual_router_id.这个标识是一个数字,并且同一个vrrp实例使用唯一的标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同时在整个vrrp内是唯一的。
(5) 优先级priority.这是一个数字,数值愈大,优先级越高。在同一个vrrp_instance里,MASTER 的优先级高于BACKUP。若MASTER的priority值为150,那么BACKUP的priority只能是140或更小的数值。
(6) 同步通知间隔 advert_int .MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。
(7) 验证authentication。包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题。验证密码为明文,同一vrrp实例MASTER与BACKUP 使用相同的密码才能正常通信。
4、 虚拟ip地址virtual_ipaddress . 可以有多个地址,每个地址占一行,不需要指定子网掩码。注意:这个ip必须与我们在lvs客户端设定的vip相一致!
● 虚拟服务器virtual_server定义块
虚拟服务器定义是keepalived框架最重要的项目了,是keepalived.conf必不可少的部分。
1、 虚拟服务器virtual_server. 这个ip来自于vrrp定义块的第“4”步,后面一个空格,然后加上端口号。定义一个vip,可以实现多个tcp端口的负载均衡功能。
(1) delay_loop。健康检查时间间隔,单位是秒。
(2) lb_algo. 负载均衡调度算法,互联网应用常使用wlc或rr。
(3) lb_kind. 负载均衡转发规则。一般包括DR,NAT,TUN3种,在我的方案中,都使用DR的方式。
(4) persistence_timeout.会话保持时间,单位是秒。这个选项对动态网站很有用处:当用户从远程用帐号进行登陆网站时,有了这个会话保持功能,就能把用户的请求转发给同一个应用服务器。在这里,我们来做一个假设,假定现在有一个lvs 环境,使用DR转发模式,真实服务器有3个,负载均衡器不启用会话保持功能。当用户第一次访问的时候,他的访问请求被负载均衡器转给某个真实服务器,这样他看到一个登陆页面,第一次访问完毕;接着他在登陆框填写用户名和密码,然后提交;这时候,问题就可能出现了—登陆不能成功。因为没有会话保持,负载均衡器可能会把第2次的请求转发到其他的服务器。
(5) 转发协议protocol.一般有tcp和udp两种。实话说,我还没尝试过udp协议类的转发。
2、 真实服务器real_server.也即服务器池。Real_server的值包括ip地址和端口号。多个连续的真实ip,转发的端口相同,是不是可以以范围表示?需要进一步实验。如写成real_server 61.135.20.1-10 80 .
(1) 权重weight.权重值是一个数字,数值越大,权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载,性能较好的机器,负载分担大些;反之,性能差的机器,则分担较少的负载,这样就可以合理的利用不同性能的机器资源。
(2) Tcp检查 tcp_check.
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:1181
Submitted by admin on 2007, October 9, 7:21 PM
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:1738
Submitted by admin on 2007, July 17, 2:29 PM
server
vi /etc/exportfs
/usr/src 192.168.1.*(rw,no_root_squash,async)
exportfs -rv //重新export一次
showmount/or -e localhost
client
showmount -e serverip
mount serverip:/www/web /www/bbs or
mount -t nfs serverip:/www/web /www/bbs
umount /www/bbs
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
http://www.chinaitlab.com/www/special/linux14.asp
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:2006
Submitted by admin on 2007, July 17, 2:15 PM
[root@www ~]# ab -n 50000 -c 500 http://192.168.1.32/info.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.32 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Finished 50000 requests
Server Software: Apache/2.0.55
Server Hostname: 192.168.1.32
Server Port: 80
Document Path: /info.php
Document Length: 26397 bytes
Concurrency Level: 500
Time taken for tests: 159.25877 seconds
Complete requests: 50000
Failed requests: 213
(Connect: 0, Length: 213, Exceptions: 0)
Write errors: 0
Total transferred: 1328293693 bytes
HTML transferred: 1320041878 bytes
Requests per second: 314.41 [#/sec] (mean)
Time per request: 1590.259 [ms] (mean)
Time per request: 3.181 [ms] (mean, across all concurrent requests)
Transfer rate: 8156.92 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 567 2412.7 8 45014
Processing: 14 906 2940.3 416 52023
Waiting: 4 715 2777.0 386 51974
Total: 18 1474 4070.8 426 73025
Percentage of the requests served within a certain time (ms)
50% 426
66% 457
75% 693
80% 1042
90% 3422
95% 4742
98% 9709
99% 21422
100% 73025 (longest request)
[root@www ~]# ab -n 50000 -c 500 http://192.168.1.30/info.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.30 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Finished 50000 requests
Server Software: Apache/2.0.55
Server Hostname: 192.168.1.30
Server Port: 80
Document Path: /info.php
Document Length: 26397 bytes
Concurrency Level: 500
Time taken for tests: 231.351912 seconds
Complete requests: 50000
Failed requests: 30322
(Connect: 0, Length: 30322, Exceptions: 0)
Write errors: 0
Total transferred: 1329951482 bytes
HTML transferred: 1321653137 bytes
Requests per second: 216.12 [#/sec] (mean)
Time per request: 2313.519 [ms] (mean)
Time per request: 4.627 [ms] (mean, across all concurrent requests)
Transfer rate: 5613.87 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 390 1154.3 4 21000
Processing: 10 1675 6393.1 201 197589
Waiting: -16 527 1989.6 5 85574
Total: 12 2065 6579.0 209 197673
Percentage of the requests served within a certain time (ms)
50% 209
66% 642
75% 1863
80% 3022
90% 4899
95% 8765
98% 19135
99% 23680
100% 197673 (longest request)
[root@www ~]# ab -n 10000 -c 1000 http://192.168.1.30/info.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.30 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests
Server Software: Apache/2.0.55
Server Hostname: 192.168.1.30
Server Port: 80
Document Path: /info.php
Document Length: 26395 bytes
Concurrency Level: 1000
Time taken for tests: 28.618709 seconds
Complete requests: 10000
Failed requests: 8597
(Connect: 0, Length: 8595, Exceptions: 2)
Write errors: 0
Total transferred: 270178276 bytes
HTML transferred: 268480921 bytes
Requests per second: 349.42 [#/sec] (mean)
Time per request: 2861.871 [ms] (mean)
Time per request: 2.862 [ms] (mean, across all concurrent requests)
Transfer rate: 9219.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 5 986 2390.4 73 21075
Processing: 33 1265 1842.8 644 18738
Waiting: 10 685 1315.4 402 18453
Total: 85 2251 3016.6 973 24678
Percentage of the requests served within a certain time (ms)
50% 973
66% 1587
75% 3447
80% 3569
90% 4976
95% 9462
98% 10595
99% 12878
100% 24678 (longest request)
[root@www ~]# ab -n 10000 -c 1000 http://192.168.1.32/info.php
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.32 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Finished 10000 requests
Server Software: Apache/2.0.55
Server Hostname: 192.168.1.32
Server Port: 80
Document Path: /info.php
Document Length: 26397 bytes
Concurrency Level: 1000
Time taken for tests: 33.452000 seconds
Complete requests: 10000
Failed requests: 6
(Connect: 0, Length: 6, Exceptions: 0)
Write errors: 0
Total transferred: 265957580 bytes
HTML transferred: 264304610 bytes
Requests per second: 298.94 [#/sec] (mean)
Time per request: 3345.200 [ms] (mean)
Time per request: 3.345 [ms] (mean, across all concurrent requests)
Transfer rate: 7764.08 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 3 885 2212.4 19 21019
Processing: 158 777 1613.7 437 18516
Waiting: 112 699 1607.6 383 18469
Total: 298 1662 3192.1 458 21752
Percentage of the requests served within a certain time (ms)
50% 458
66% 517
75% 856
80% 2376
90% 3477
95% 9080
98% 9525
99% 21177
100% 21752 (longest request)
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:2183
Submitted by admin on 2007, July 17, 1:11 PM
//////////////////////////////////////////////////
此文档为半年多前做的测试笔记了.采用HeatBeat+lvs构建的高可用负载均衡系统.当时测试算是比较成功的.也上了项目使用.但没用多久就撒了.在实时要求比较高的环境下,问题比较多.要解决的问题也多.但用在静态上的话,感觉还是很不错的说.现在整理一下,发布上来.可惜后期的文档没怎么记录.如各位看观有什么不明或疑问,欢迎指出或和我联系:QQ5846690.mail/man:mymail#3126.com
同时转截请注册来自 http://meisw.cn/show-34-1.html
///////////////////////////////////////////////////
环境:机器5台,均采用rhel4,使用DR方式.
结构:两台做双机热备,串口线一条.两台做real server,一台做数据库.同时,双机里的备机也可以做real server.我测试的时候,有用过三台,四台,加上虚拟机的话有5台.开始单测试lvs,用了三台.
LVS分流,三台机.
图表
director
dip:192.168.1.10 (eth0)
vip:192.168.1.9 (eth0:0)
realserver1
rip:192.168.1.11 (eth0)
vip:192.168.1.9 (lo:0)
realserver2
rip:192.168.1.12 (eth0)
vip:192.168.1.9 (lo:0)
一 director(调度器)
1 修改内核参数 (/etc/sysctl.conf)
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
sysctl -p 使之生效
2 配置VIP地址
ifconfig eth0:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
route add -host 192.168.1.9 dev eth0:0
3 清除ipvsadm表
ipvsadm -C
4 使用ipvsadm安装LVS服务
ipvsadm -A -t 192.168.1.9:http -s rr
5 增加readserver
#forward http to realserver using direct routing with weight 1
ipvsadm -a -t 192.168.1.9:http -r 192.168.1.11 -g -w 1
ipvsadm -a -t 192.168.1.9:Http -r 192.168.1.12 -g -w 1
系统启动后要确认内核是否支持ipvs,只需要执行下面的命令即可:grep ip_vs_init /boot/System.map
二 配置realserver
1 修改内核参数(/etc/sysctl.conf)
net.ipv4.ip_forward = 0
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p 使之生效
2 配置VIP地址
ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
route add -host 192.168.1.9 dev lo:0
测试
用IE打开http://192.168.1.10访问看看结果是否正确. 可以在两台real server服务器放置两个不同的页面.如是real server1/real server2.这样就可以看出有没分流到两台real server上了.或者用一些软件来测试一下性能.
ha+lvs高可用负载分流
#######################################
# HeatBeat
#######################################
HeartBeat是Linux-HA的高可用性集群软件,它的主要作用是:
安装在Load Balancer和Backup上,运行于active/standby模式。
当Load Balancer失效时,Backup自动激活,成为实际的Load Balancer。
切换到active模式时,按顺序启动Virtual IP、IPVS和Ldirectord。
切换到standby模式时,按顺序关闭Ldirectord、IPVS和Virtual IP。
HeartBeat串口线连接测试方法:
在Load Balancer上:cat < /dev/ttyS0
在Backup上:echo hello >; /dev/ttyS0
在VMWare上设置串口的时候一端做server,一端做client即可
1 修改主机名(/etc/hosts):
127.0.0.1 localhost.localdomain localhost
192.168.136.11 loadbalancer
192.168.136.12 backup
2 安装
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster
wget http://www.packetfactory.net/libnet/dist/libnet.tar.gz
tar zxf libnet.tar.gz
cd libnet
./configure
make
make install
wget http://www.linux-ha.org/download/heartbeat-1.99.4-tar.gz
tar zxf heartbeat-1.99.4.tar.gz
cd heartbeat-1.99.4
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make
make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/
chkconfig --add heartbeat
chkconfig --del ldirectord
相关配置文件
haresources
#
rhel4u2 IPaddr::192.168.1.9/24/192.168.1.255 ipvsadm ldirectord
ha.cf
vip
/sbin/ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up
/sbin/route add -host 192.168.1.9 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 >/proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
#失效无用连接
echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn
FAQ
1 cookie时间,即在线问题 加-p选项
an:
-p选项,是设置保持cookie的一个持续时间.
也就是 客户机 > 转发器 > real server 持续的时间.
这个时间内,某台机所有连接,都是指向前一个已建立过的连接上.
但在设置了-p选项后,在
转发器>real server间还有一个持续时间(为1分钟)
也就是说,在设置了-p选项后
转发器 > real server 的连接时间为 1分钟加上-p设置的时间
在这个时间内,假如某real server挂了,ld是能检测出问题,并且在转发规则里把它的权值改为0
但在上面的前提下,所有之前与这台real servel有连接过的客户机,在这个时间内(1分钟+P设置的时间),仍然会继续往这台机上转发
问题也就出现了.
如果倘若不设置-p选项,在转发器上,会维护着客户机与每一个real server 的连接状态
ha的一些资料
多个节点,只要还有一个节点,服务就能继续...
而且增加了资源监控,如IP失效了会自动恢复...
如果是2.0,简单的可以这样配,以三个节点为例
1.三个节点都装上heartbeat 2.0.0.0.
2.把三个节点都加到ha.cf里,然后在ha.cf里加上"crm 1"
3.然后用/usr/lib/heartbeat/cts/haresources2cib.py 把原来的/etc/ha.d/haresources 转换成 /var/lib/heartbeat/crm/cib.xml.
"/usr/lib/heartbeat/cts/haresources2cib.py haresources >;/var/lib/heartbeat/crm/cib.xml"
4.把haresources清空
5.启动三台计算机的heartbeat.
2.0用cib替代了haresources.
http://www.linux-ha.org/ClusterInformationBase_2fUserGuide
2.0里面没有工作节点和备份节点之分,资源在哪里个节点运行,失效后可以在哪些另外的节点运行等的都是cib.xml(资源配置文件)里规定的.
2.0里面基本没有活动-备份的概念,换句话说,cib.xml中你可以指定一个服务在不同机器上跑的权重,甚至禁止某个服务在某个机器上跑,等等。各个节点都是平等的。运行时,heartbeat2会根据当前的情况,计算出那里是运行服务的最佳机器。如果你把所有服务的最佳运行节点都设到一台机器,那就相当于一个跑服务,两个备份,如果你把服务配到两个节点,留一个节点空着,那就相当于两个跑服务,一个备份。
CRM, Cluster Resouce Manager, 用于在cluster计算管理资源。开启了它,就开启了2.0的新功能
HA的概念和1.x的配置:
http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html
2.x的概念和基本配置:
http://www.linux-ha.org/GettingStartedV2
2.x的资源配置的详细介绍:
http://www.linux-ha.org/ClusterInformationBase_2fUserGuide
这个中文的介绍挺好的,不过是1.x的,不过概念都一样。
http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html
LVS的官方网站
http://www.linuxvirtualserver.org/zh/lvs1.html
http://zh.linuxvirtualserver.org/ 论坛讨论区
注:本文档是06年底作测试时的笔记.但测试完后,没作整理.现在才发觉,所以,有一些是现在加上的,如有错误或不足之处,请指出或提出意见.谢谢
Tags: lvs负载均衡
集群/分流 | 评论:0
| Trackbacks:0
| 阅读:2185