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
}
}
}

真实服务器上的配置
真实服务器上需要对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(地址广播协议)广播

你可能感兴趣的:(lvs,keepalived做HA)