libnet 下载地址: http://search.cpan.org/dist/libnet/
ipvsadm 下载地址: http://www.linuxvirtualserver.org/software/ipvs.html#kernel-2.6
从 Linux 内核版本 2.6 起,ip_vs code 已经被整合进了内核中,因此,只要在编译内核的时候选择了
ipvs 的功能,您的 Linux 即能支持 LVS。Linux 2.4.23 以后的内核版本也整合了 ip_vs code,但如果
是更旧的内核版本,您得自己手动将 ip_vs code 整合进内核原码中,并重新编译内核方可使用 lvs。
一、关于 ipvsadm:
ipvsadm 是运行于用户空间、用来与 ipvs 交互的命令行工具,它的作用表现在:
1、定义在 Director 上进行 dispatching 的服务(service),以及哪此服务器(server)用来提供此服务;
2、为每台同时提供某一种服务的服务器定义其权重(即概据服务器性能确定的其承担负载的能力);
注:权重用整数来表示,有时候也可以将其设置为 atomic_t;其有效表示值范围为 24bit 整数空间,即
(2^24-1);
因此,ipvsadm 命令的主要作用表现在以下方面:
1、添加服务(通过设定其权重>0);
2、关闭服务(通过设定其权重>0);此应用场景中,已经连接的用户将可以继续使用此服务,直到其退出或
超时;新的连接请求将被拒绝;
3、保存 ipvs 设置,通过使用“ipvsadm-sav > ipvsadm.sav”命令实现;
4、恢复 ipvs 设置,通过使用“ipvsadm-sav < ipvsadm.sav”命令实现;
5、显示 ip_vs 的版本号,下面的命令显示 ipvs 的 hash 表的大小为 4k;
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
6、显示 ipvsadm 的版本号
# ipvsadm --version
ipvsadm v1.24 2003/06/07 (compiled with popt and IPVS v1.2.0)
二、ipvsadm 使用中应注意的问题
默认情况下,ipvsadm 在输出主机信息时使用其主机名而非 IP 地址,因此,Director 需要使用名称解析服
务。如果没有设置名称解析服务、服务不可用或设置错误,ipvsadm 将会一直等到名称解析超时后才返回。
当然,ipvsadm 需要解析的名称仅限于 RealServer,考虑到 DNS 提供名称解析服务效率不高的情况,建议
将所有 RealServer 的名称解析通过/etc/hosts 文件来实现;
三、调度算法
Director 在接收到来自于 Client 的请求时,会基于"schedule"从 RealServer 中选择一个响应给
Client。ipvs 支持以下调度算法:
1、轮询(round robin, rr),加权轮询(Weighted round robin, wrr)——新的连接请求被轮流分配
至各 RealServer;算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适
用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的
负载不平衡。
2、最少连接(least connected, lc), 加权最少连接(weighted least connection, wlc)——新的
连接请求将被分配至当前连接数最少的 RealServer;最小连接调度是一种动态调度算法,它通过服务器当
前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调
度到某台服务器,其连接数加 1;当连接中止或超时,其连接数减一。
3、基于局部性的最少链接调度(Locality-Based Least Connections Scheduling,lblc)——针
对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中客户请求
报文的目标 IP 地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的
负载基本平衡情况下,将相同目标 IP 地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主
存 Cache 命中率,从而整个集群系统的处理能力。LBLC 调度算法先根据请求的目标 IP 地址找出该目标 IP
地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该
评论