分类:
2010-01-07 10:56:51
notify_master notify_backup notify_fault 定义当切换为master、backup、失败情况下启动的脚本
smtp_alert 用全局变量里面定义的邮件发送报警邮件
表示开始启用vrrp,每个接口定义一个实例,主要定义VRRP的主从,以及漂移IP
vrrp_instance inside_network {
state MASTER #定义主从
interface eth0 #定义接口
dont_track_primary #忽略错误,默认不设置
track_interface {
eth0
eth1
}
mcast_src_ip
garp_master_delay 10
virtual_router_id 51
priority 100 #优先权
advert_int 1 #检查间隔时间
authentication {
autp_pass 1234
}
virtual_ipaddress {
#
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
virtual_routes {
# src
src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
192.168.110.0/24 via 192.168.200.254 dev eth1
192.168.111.0/24 dev eth2
192.168.112.0/24 via 192.168.100.254
}
nopreempt
preemtp_delay 300
debug #错误级别
}
包括2个部分,虚拟主机组和虚拟主机
这个配置是可选的,用途是让一台realserver上的服务可用于多个虚拟主机,并且只作一次健康检查。
virtual_server_group
# VIP port
…
fwmark
}
虚拟主机的配置有3种方式
1. virtual server IP port
2. virtual server fwmark int
3. virtual server group string
例如:
virtual_server 192.168.1.2 80 { #定义虚拟主机192.168.1.2,服务端口为80
delay_loop 3 #虚拟主机轮循时间
lb_algo rr|wrr|lc|wlc|lblc|sh|dh #LVS的调度方式(轮循,加权轮循等)
lb_kind NAT|DR|TUN #LVS集群模式(NAT,直接路由等)
persistence_timeout 120 #会话保持时间
persistence_granularity
protocol TCP #使用的协议(TCP/UDP)
ha_suspend # suspendhealthchecker’s activity
virtualhost
sorry_server
#所有的real_server都要启用下面配置项
real_server
{
weight 1 #默认为1,0为失效
inhibit_on_failure #在服务器健康检查失败是将weight 设置为0,而不是剔除
notify_up
notify_down
#健康检查方式 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
HTTP_GET | SSL_GET
{
url { #http/ssl 检查的URL,可以设置多个
path /
digest
status_code 200 #http_get检查的返回代码
}
connect_port 80 #健康检查的端口
bindto
connect_timeout #连接超时时间
nb_get_retry 3 #重新连接次数
delay_before_retry 2 #重新连接间隔时间
} # END OF HTTP_GET|SSL_GET
TCP CHECK方式
TCP_CHECK {
connect_port 80
bindto 192.168.1.1
connect_timeout 4
} # TCP_CHECK
SMTP检查方式
host {
connect_ip
connect_port
bindto
}
connect_timeout
retry
delay_before_retry
helo_name
} #SMTP_CHECK
MSIC健康检查方式
MISC_CHECK
{
misc_path
misc_timeout
misc_dynamic
}
} # Realserver
} # Virtual Server
#如果设置了msic_dynamic,健康检查程序返回代码将作为改变实例权重的依据。
返回0,健康检查OK,权重不变
返回1,健康检查失败,权重为0
返回2-255,健康检查OK,权重设置为:返回代码-2。比如返回为5,那么权重就设为5-2=3
Virtual server via NAT(VS-NAT)
Virtual Server via NAT方法的最大优点是集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。
这种实现方法的最大的缺点是扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为
Virtual Server via NAT能够满足许多服务器的服务性能需求。即使是是负载均衡器成为整个系统的瓶颈,如果是这样也有两种方法来解决它。一种是混合处理,另一种是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合处理的方法,将需要许多同属单一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以获得更好的可扩展性。也可以嵌套使用负载均衡器,在最前端的是VS-Tunneling或VS-Drouting的负载均衡器,然后后面采用VS-NAT的负载均衡器。
Virtual server via IP tunneling(VS-TUN)
采用VS-NAT方式,请求与应答包都需要经过负载均衡器,那么当服务器节点增长到20个或更多时,这个负载均衡器就可能成为新的瓶颈。我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。
而使用VS-TUN方式的话,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有
IP tunneling(IP隧道)能够用于架构一个高性能的virtual server,非常适合构建virtual proxy server,因为当代理服务器收到了请求,能够让最终用户直接与服务器联系。
但是,这种方式需要所有的服务器支持IP Tunneling(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。
Virtual Server via Direct Routing(VS-DR)
就象VS-TUN一下,在VS-DR方式下,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。这种方式能够大大提高Virtual Server的可扩展性。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,但它要求负载均衡器的网卡必须与物理网卡在一个物理段上。
而且VS-DR模式,可以使用大多数操作系统做为物理服务器,其中包括:Linux
LVS 有9种调度方法:
1 rr : 连接的时候,利用round robin, 第一个人访问第一台机器,第二个人访问第二台机器。
2 wrr:加权轮循, 权重是一个比值,不是一个绝对值。
3 Lc :最小连接算法
4 wlc: 加权最小连接算法,连接到当前最小的连接数的机器上,适合于新闻网站,要是总有会话就不适合了。
5 lblc: 局部最小连接算法。优先把连接放在第一次连接的机器上。如:PC1通过Director访问过realserver(RIP2)则PC1在指定30秒内再次访问realserver仍将访问RIP2。
6 Dh :给予目标地址的Hash表,
7 sh :给予源地址的Hash表,
8 sed:最小延迟,类似一个ping值,谁的相应速度快,就连接谁
9 nq : 无须等待。在sed的基础上,谁没有连接,空闲着就连接谁
常用算法:
wlc:
如PC1访问realserver(RIP1),第一次访问时要输入用户名密码进行验证,验证通过后客户端会收到一个cookie,再次访问该网站,被Director分配到到realserver(RIP2),此时PC1就不再需要验证,直接可以利用其存储的cookie通过验证进行连接。多用于论坛。
Lblc :
如PC1访问银行网站,为了用户安全的保障,PC1每次连接时都需要验证,不保存cookies。 多用于银行。
ipvsadm -A -f 33 -s rr lblc #lblc调度算法,PC1连接realserver1,过些时间PC1再次访问,则director会让他优先选择他以前连接过的realserver1;PC2请求连接时,Director会分配realserver2给它