lvs,keepalived作HA

一,简介
LVS(Linux Virtual Server),可用来实现LINUX下的简单负载均衡。
LVS工做在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发的,由
于其转发要依赖于协议的特征进行转发,所以须要在内核的TCP/IP协议栈进行过滤筛
选,而这样的过滤转发规则可由管理员对内核进行定义。
LVS在内核空间中工做的是“ipvs”,而在用户空间中工做的,用来定义集群服
务规则的是“ipvsadm”。
 三种负载均衡转发的机制
1:NAT(Network Address Translation)网络地址翻译技术。
当用户请求到达调度器时,调度器将改写请求的地址为真实Server地址。在服
务器端处理后,须要再次通过负载调度器将报文的源地址和源端口改为虚拟IP地址和
相应端口,而后把数据发送给用户,完成整个负载调度过程。
2:TUN(IP Tunneling)IP隧道技术
调度器采用IP隧道技术将用户请求转发到某个Real Server,而这个Real
Server将直接响应用户的请求,再也不通过调度器。算法

3:DR(Direct Routing)直接路由技术
DR经过改写请求报文的MAC地址,将请求发送到真实Server,而真实Server将响应直
接返回给客户,比TUN少了IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,
可是要求调度器与真实服务器在同一物理网段上
n 负载调度的算法
1:rr(Round Robin )轮循,这种算法平等地对待每一台真实服务器,而无论服务器上实际
的负载情况和链接状态
2:wrr(Weighted Round Robin )加权轮循,根据真实服务器的不一样处理能力来调度请求
3:lc(Least Connections )最少链接,动态地将请求调度到已创建的连接数最少的服务器
4:wlc(Weighted Least Connections )加权最少链接,每一个服务节点能够用相应的权值表
示其处理能力,较高权值的服务器将承受较大比例的活动链接负载
5:dh(Destination hashing )目标地址Hash,根据请求的目标IP,做为散列键从静态分配
的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否
则返回空
6:SH(Source hashing)源地址hash,根据请求的源IP,做为散列键从静态分配的散列表找
出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空服务器

7:SED(Shortest Expected Delay)最短时间望的延迟,基于wlc算法,计算每一个真实服务器的
请求延迟,把请求转发给最短延迟的服务器
8:NQ(Never Queue)最少排队,某台真实服务器没有链接时,就直接转发过去
9:LBLC(Locality-Based Least-Connection)基于局部的最少链接,根据请求的目标IP,找
出该地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;
若服务器不存在,或者该服务器超载且有服务器处于一半的工做负载,则用“最少连接”
的原则选出一个可用的服务器,将请求发送到该服务器
10:LBLCR(Locality-Based Least-Connection with replication Scheduling)带复制的基
于局部最少链接,它与LBLC算法的不一样之处是它要维护从一个目标IP到一组服务器的映
射,而LBLC是维护从一个目标IP到一台服务器的映射。根据请求的目标IP,找出该目标IP
对应的服务器组,按“最小链接”原则从服务器组中选出一台服务器,若服务器没有超
载,将请求发送到该服务器;若服务器超载,则按“最小链接”原则从这个集群中另外选
出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器网络

二,简介
LVS+Keepalived是一个常见的组合,使用LVS来实现负载均衡,使用Keepalived来实
现HA。
因为Keepalived是基于LVS的,所以这两部分功能,均可以经过Keepalived来实现,
配置也基本上在Keepalived上配置。
  配置Keepalived.conf
(1)全局配置和VRRPD的配置跟之前是同样的,只须要添加LVS的配置就能够了。
(2)主服务器和备用服务器的配置是同样的。
(3)LVS+DR模式中,只支持IP的转发,不支持端口转发,也就是说virtual_server和
real_server的配置节点中端口必须同样
virtual_server 192.168.1.77 8080 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP负载均衡

real_server 192.168.1.201 8080 {
weight 3
#TCP_CHECK {
# connect_timeout 10
# nb_get_retry 3
# delay_before_retry 3
# connect_port 80
#}
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
}oop

真实服务器上的配置
真实服务器上须要对VIP进行绑定,并进行路由设置等一系列操做,这里整理为一个
脚本供参考:lvs_real.sh:
#!/bin/sh
VIP=192.168.1.77
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start tunl port"
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
;;
stop)
echo " stop tunl port"
ifconfig lo:0 down性能

echo "0">/proc/sys/net/ipv4/conf/all/arp_announce
echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
n 说明
1:基本的使用方法:sh lvs_real.sh start,若是没有权限的话,须要受权
2:VIP被绑定在环回接口lo:0上,其广播地址是其自己,子网掩码是
255.255.255.255。采用这种可变长掩码方式能够避免IP地址冲突
3:echo “1”,echo “2” 这段的做用是抑制ARP(地址广播协议)广播url

相关文章
相关标签/搜索