LVS类型:
NAT:-->(DNAT) DR TUN FULLNATLVS的常见名词解释
CIP<-->VIP--DIP<-->RIP
Direct Routing:直接路由负载均衡层(Loader Balancer),它就是我们所说的的DirectorRS real server :真实提供服务的计算机VIP:Virtual IP(VIP)address:Director用来向客户端提供服务的IP地址RIP:Real IP (RIP) address:集群节点(后台真正提供服务的服务器)所使用的IP地址DIP:Director's IP (DIP) address:Director用来和D/RIP 进行联系的地址CIP:Client computer's IP (CIP) address:公网IP,客户端使用的IPLVS NAT的特性
1.RS应该使用私有地址 2.RS的网关必须指向DIP 3.RIP和DIP必须在同一网段内 4.请求和响应的报文都得经过Director,在高负载场景中,Director很可能成为性能瓶颈 5.支持端口映射 6.RS可以使用任意支持集群服务的OSLVS DR类型
LVS DR类型的特性
1.RS可以使用私有地址,还可以使用公网地址,此时可以直接通过互联网连入RS,以实现配置、监控等 2.RS的网关一定不能指向DIP 3.RS跟Dirctory要在同一物理网络内(不能有路由器分隔) 4.请求报文经过Directory,但响应报文一定不经过Director 5.不支持端口映射 6.RS可以使用大多数的操作系统 LVS TUN类型:IP隧道 1.RIP,DIP,VIP都得是公网地址 2.RS的网关不会指向也不可能指向DIP 3.请求报文经过Directory,但响应报文一定不经过Director 4.不支持端口映射 5.RS的OS必须得支持隧道功能LVS的调度方法:10种
静态方法:仅根据算法本身进行调度 rr:Round Robin 轮询 wrr:Weighted RR 权重轮询 sh:source hashing 源地址hash dh:destination hashing 目标地址hash 动态方法:根据算法及RS当前的复制状态 lc:Least Connection 最少连接 计算当前的负载Overhead=Active*256+Inactive来实现 wlc:Weighted LC Overhead=(Active*256+Inactive)/weight sed:Shortest Expect Delay 最短期望延迟 Overhead=(Active+1)*256/weight nq:Nerver Queus: 永不排队 lblc:Locality-based least connection 基于本地的最少连接 相当于dh+lc Lblcr:基于复制的基于本地的最少连接 Replicated and Locality-based least connection Session持久机制 1.Session绑定:始终将统一请求者的连接定向至统一RS(第一次请求时仍有调度选择):没有容错能力,有损均衡效果 2.session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大规模集群环境不适用 3.session服务器:利用单独部署的服务器来统一管理session LVS的集群服务: 四层交换,四层路由 根据请求目标套接字(包括端口的协议类型tcp,udp)来实现转发ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] ipvsadm -D -t|u|f service-address ipvsadm -C ipvsadm -R ipvsadm -S [-n] ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower] ipvsadm -d -t|u|f service-address -r server-address ipvsadm -L|l [options] ipvsadm -Z [-t|u|f service-address] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] [--syncid syncid] ipvsadm --stop-daemon state ipvsadm -h 集群服务相关 -A:添加一个集群服务 -t:tcp -u:udp -f: firewall make 通常应用于将两个或以上的服务绑定为一个服务进行处理时使用 service-address -t IP:port -u ip:port -f firewall_mark -s 调度算法,默认为wlc -p: timeout persistent connection 持久连接 -E:修改定义过的集群服务 -D -t|u|f service-address:删除指定的集群服务 RS相关 -a:向指定的CS中添加RS -t|-u|-f service-address:指明将RS添加至那个Cluster Service 中 -r:指定RS,可以包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口 lvs类型: -g:Gateway,DR -i:ipip,TUN -m:masquerade(地址伪装),NAT 默认为DR 指定RS权重 -w 上限下限: -x:下限 -y:上限 -e:修改指定的RS属性 -d -t|u|f service-address -r server-address:在指定的集群服务中删除一个指定的RS 情况所有的集群服务: -C 保存规则(使用输出重定向): ipvsadm-save ipvaadm -S 载入指定的规则:(使用输入重定向) ipvsadmin-restore ipvasdm -R 查看ipvs规则等 -L [options] -n 使用数字格式显示IP地址,不反解 -c:查看连接数相关信息 --stats:显示统计数据 --rate:数据传输速率 --timeout:显示tcp会话时长 --daemon:守护进程的信息 --sort:对虚拟服务进行排序,默认为升序 --exact:精确显示,不做单位换算 -Z:计数器清零 LVS-DR模型 Director两个地址:VIP,DIP RS有两个地址:VIP,RIP 禁止rs响应对BIP的ARP广播请求 1.在前端路由上实现静态MAC地址VIP的绑定 前提:得有路由器的配置权限 缺点:Directory故障转移时,无法更新此绑定 2.arptables 前提:在各RS在安装arptables程序i,并编写arptables规则 缺点:依赖于独特功能的应用程序 3.修改Linux内核参数 前提:RS必须是Linux 缺点:适用性差 两个参数: arp_announce:定义通告模式 arp_ignore:定义收到arp请求的响应模式 配置专用路由,以使得响应报文首先通过VIP所篇日志的lo上的别名接口 Linux的工作特性:IP地址是属于主机,而非特定网卡 LVS-DR配置架构根据其VIP与RIP是否在同一个网络内有两种情况 在Directory 和RS上配置VIP,要使用如下格式 ifconfig ALIAS VIP netmask 255.255.255.255 broadcast VIP route add -host VIP dev LVS-DR的配置 Director iptables -t filter -F ifconfig eth0:0 VIP netmask 255.255.255.255 broadcast VIP up route add -host VIP dev eth0:0 RS: echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP up route add -host VIP dev eth0:0 Director: ipvsadm -A -t ip:port -s scheduler ipvsadm -a -t ip:port -r rs1 -gnat模型示例(虚拟机下):
dip和rip都在vmnet2上面
主服务器配置:
# ipvsadm -L -n --stats
清空计数器
# ipvsadm -Z 修改lvs服务器的调度算法为wrr(权重) # ipvsadm -E -t 192.168.8.41:80 -s wrr 修改其中之一权重为3 # ipvsadm -e -t 192.168.8.41:80 -r 172.16.10.10 -m -w 3 通过 /var/log/httpd/access_log可以查看访问的客户端IP地址实例二:(真实的服务器充当vip服务器)
网络环境概述:
VIP服务器有两块网卡:EM1(IP:192.168.8.68)EM2(IP:192.168.8.70) 192.168.8.68的8888号端口通过路由映射到外网的183.239.143.212 8888 号端口 VIP:183.239.143.212:8888 DIP:192.168.8.70 RIP1:192.168.8.40 RIP1:192.168.8.20 主服务器配置: em1:192.168.8.68 em2:192.168.8.70 # vim /etc/sysctl.conf # Controls IP packet forwarding net.ipv4.ip_forward = 1 # sysctl -p rip1和rip2配置好web服务器端口为8888,并且将网关指向192.168.8.70 # ipvsadm -A -t 183.239.143.212:8888 -s rr # ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.40 -m # ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.20 -m该方案是失败的,将183.239.143.212:8888更改为192.168.8.68:8888后可以成功
# ipvsadm -A -t 192.168.8.68:8888 -s rr
# ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.40 -m # ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.20 -m通过访问
http://183.239.143.212:8888/
http://192.168.8.68:8888
都可以访问网站