1. lvs的结构
LVS方式的cluster从结构上可分为两部分:前端的负载均衡器(称之为director)和后端的真实服务器(称之为real server)。cluster前端的director将来自外界的请求调度到cluster后端不同的real server去执行。real server负责真正的提供各种应用服务,比如:Web、FTP、Mail等服务。real server的数量能根据实际需求进行增加、减少。
2. LVS的三种包转发方式
LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构,下面对三种转发方式分别介绍:
NAT(网络地址映射)
NAT方式可支持所有的操作系统,及私有网络,并且只需一个Internet IP地址,不过整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成非常大压力,成为了新的瓶颈。
IP Tunneling(IP隧道)
director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机和服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,能超过100个节点。real server能在所有LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于和客户机直接通信,并且所有服务器必须支持IP隧道协议。
Direct Routing(直接路由)
和IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing和IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
3. LVS的八种调度算法
LVS已实现了以下八种调度算法:
1.轮叫调度(Round-Robin Scheduling)
2.加权轮叫调度(Weighted Round-Robin Scheduling)
3.最小连接调度(Least-Connection Scheduling)
4.加权最小连接调度(Weighted Least-Connection Scheduling)
5.基于局部性的最少链接(Locality-Based Least Connections Scheduling)
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
7.目标地址散列调度(Destination Hashing Scheduling)
8.源地址散列调度(Source Hashing Scheduling)
ipvsadm命令参考
1,virtual-service-address:是指虚拟服务器的ip 地址
2,real-service-address:是指真实服务器的ip 地址
3,scheduler:调度方法
ipvsadm 的用法和格式如下:
ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]
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]
ipvsadm –stop-daemon
ipvsadm -h
命令选项解释:
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可以。
-A –add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a –add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list 显示内核虚拟服务器表
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
–set tcp tcpfin udp 设置连接超时值
–start-daemon 启动同步守护进程。他后面能是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也能采用keepalived 的VRRP 功能。
–stop-daemon 停止同步守护进程
-h –help 显示帮助信息
其他的选项:
-t –tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-server-ip:port]
-u –udp-service service-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-server-ip:port]
-f –fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s –scheduler scheduler 使用的调度算法,有这样几个选项
rr轮叫调度(Round-Robin Scheduling)|wrr加权轮叫调度(Weighted Round-Robin Scheduling)|lc最小连接调度(Least-Connection Scheduling)|wlc加权最小连接调度(Weighted Least-Connection Scheduling)|lblc基于局部性的最少链接(Locality-Based Least Connections Scheduling)|lblcr带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)|dh目标地址散列调度(Destination Hashing Scheduling)|sh8.源地址散列调度(Source Hashing Scheduling))|sed|nq,
默认的调度算法是: wlc.
-p –persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M –netmask netmask persistent granularity mask
-r –real-server server-address 真实的服务器[Real-Server:port]
-g –gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i –ipip 指定LVS 的工作模式为隧道模式
-m –masquerading 指定LVS 的工作模式为NAT 模式
-w –weight weight 真实服务器的权值
–mcast-interface interface 指定组播的同步接口
-c –connection 显示LVS 目前的连接 如:ipvsadm -L -c
–timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L –timeout
–daemon 显示同步守护进程状态
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–numeric -n 输出IP 地址和端口的数字形式
参考文献:
http://www.LinuxVirtualServer.org/
http://www.linux-vs.org/
http://zh.linuxvirtualserver.org/node/5
转载自 <a href="http://www.yanghengfei.com/archives/308/" title="Lvs基础和命令简介" rel="bookmark">Lvs基础和命令简介 | 星外飞客 </a>
我简单说几句