Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建
利用LVS可以实现高可用的、可伸缩的Web、Mail、Cache和Media等网络服务,已经被集成到linux内核里了。
1.什么是集群?
使用一组服务器提供相同的服务
2.使用集群的目的?
增强可靠性 降低成本 提高可扩展性 提高性能
3.集群分类?
HPC 高性能计算集群 (气象 航天 航空)
LB 负载均衡集群 (平均地分摊处理) * LVS hproxy
HA 高可用集群 (主 备) * keepalived RHCS
4.LVS负载均衡方式?
LVS/NAT模式(网络地址转换) *
LVS/DR模式(直接路由) * *
LVS/TUN模式(隧道)
5.LVS术语?
Director Server:调度服务器,将负载分发到Real Server的服务器
Real Server : 真实服务器,真正提供应用服务的服务器
RIP:真实IP地址,集群节点上使用的IP地址
DIP:Director连到Real Server的IP地址
VIP:虚拟IP地址,公布给用户访问的IP地址
实验(一)
实验目的:实现LVS/NAT模式的负载均衡集群
实验环境准备:
外网IP地址:1.1.1.1 主机名waiwang
内网IP地址:192.168.1.10 主机名:localhost web1
内网IP地址:192.168.1.20 主机名:localhost web2
配置nat模式服务器的IP地址:1.1.1.254 和IP地址192.168.1.254 主机名:fanlj
1.在nat模式的服务器上开启路由转发功能,能够接收两个网段的包。所以开启路由转发功能。
临时开启内核路由转发功能
永久开启内核路由转发功能
或者
2.配置网关,把内网服务器的IP地址指向网关,客户端的IP地址也指向网关,这样才能够转发,在
3.配置lvs/nat模式的负载均衡集群,查看实现负载均衡集群的软件包是否安装,如果没有安装软件包。
4.配置/nat模式的负载均衡集群,使用ipvsadm命令 配置集群功能,添加虚拟服务, ipvsadm -L -n 查看添加的策略,rr为轮询算法。
ipvsadm 选项
-A 添加虚拟服务器
-t 设置群集地址(VIP,Virtual IP)
-s 指定负载调度算法
-a 添加真实服务器
-d 删除真实服务器
-r 指定真实服务器(Real Server)的服务器的ip地址
-e 修改策略信息
-E 修改调度算法
-C 删除虚拟服务
-m NAT模式 (不指定时模式是DR模式)
-g DR模式
-i TUN模式-w 为节点服务器设置权重,默认为1
5.向虚拟服务中添加realserver
6.保存配置,并且启动服务。
7.客户端 进行测试
(1)在web1,web2启动网站服务,并且设置默认主页,web1的默认主页内容为192.168.1.10,web2的默认主页的内容为192.168.1.20.
(2)在客户端1.1.1.1上测试
(3)查看虚拟服务的状态信息
把 realserver(192.168.1.20)从虚拟服务中删除
修改虚拟服务的调度算法
修改权重值 (默认值是 1)
LVS负载均衡默认使用什么模式?默认为DR模式
清空所有的策略和算法
实验(二)
实验目的:实现LVS/DR模式的负载均衡集群
实验环境准备:
客户端IP地址:1.1.1.1 主机名waiwang
web1IP地址:1.1.1.10 主机名:localhost web1
web2IP地址:1.1.1.20 主机名:localhost web2
配置DR模式服务器的IP地址:1.1.1.254 主机名:fanlj
要解决的问题
(1)让realserver拥有vip地址
(2)让realserver 不响应客户端访问vip地址的arp广播包
1.让所有服务器拥有虚拟服务的ip地址。
2.让realserver 不响应客户端访问vip地址的arp广播包。
arp_ignore :
0(默认值):回应任何网络接口上对任何本地 IP 地址的 arp 查询请求
1 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
2 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求,且来访 IP 必须在该网络接口的子网段内
3 不回应该网络接口的 arp 请求,而只对设置的唯一和连接地址做出回应
4-7 保留未使用
8 不回应所有(本地地址)的 arp 查询
arp_announce:
0 (默认):在任意网络接口上的任何本地地址
1 尽量避免不在该网络接口子网段的本地地址做出 arp 回应。当发起 ARP 请求的源 IP 地址是被设置应该经由路由达到此网络接口的时候很 有用。此时会检查来访 IP 是否为所有接口上的子网段内 ip 之一。如果改来访 IP 不属于各个网络接口上的子网段内,那么将采用级别 2 的方 式来进行处理
2 对查询目标使用最适当的本地地址。在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址。首要是选择所
有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他
的有可能接受到该 ARP 回应的网络接口来进行发送。
web1
web2
使其定义的生效
3、在LVS/DR模式的分发器上设置分发策略
4.客户端测试(1.1.1.1)
5.在LVS/DR模式的分发器上查看虚拟服务的状态信息
实验(三)
实验目的:
在分发器上执行“监控脚本”监控realserver服务器的服务的状态
1.通过端口扫描工具nmap扫描web服务器的80端口的状态,查看nmap是否已安装。
nmap 后跟选项
-n 不做反向DNS解析,以加快扫描速度.
-s 扫描
-T 指定协议TCP
-p 为指定端口
后跟真正提供web服务的主机
2.编写监控脚本,查看其健康性,监控realserver服务器的服务的状态,当web页面down后自动删除分发器上的策略,当web页面恢复正常后自动添加分发器上的策略,为其服务。此脚本分为2个部分,第一部分为查看web服务上的服务是否提供,如果web服务down后删除分发器上的策略,第二部分为如果web服务down后又重新启动添加分发器上的策略。
总结LVS的10种调度算法
LVS调度算法 (10种算法)
man ipvsadm
常用调度算法有4种
轮询(Round Robin) rr
加权轮询(Weighted Round Robin) wrr
最少连接(Least Connections) lc
加权最少连接( Weighted Least Connections ) wlc
1.轮询(Round Robin)
将客户端请求平均分发到Real Server
2.加权轮询(Weighted Round Robin)
根据Real Server的性能设置权重,再进行轮询调度
3.最少连接(Least Connections)
动态地将网络请求调度到已建立的连接数最少的服务器上
4.加权最少连接wlc( Weighted Least Connections )
根据Real Server的性能设置权重,再将网络请求调度到已建立的连接数最少的服务器上
5.基于局部性的最少链接(Locality-Based Least Connections) lblc,根据请求的目标IP地址,找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)lblcr,维护从一个目标IP地址到一台服务器的映射,根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
7.目标地址散列(Destination Hashing) DH
根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
8.源地址散列(Source Hashing) sh
根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,
若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
9.最短的期望的延迟(Shortest Expected Delay Scheduling SED)基于WLC算法A、B、C三台机器分别权重1、2、3 ,连接数也分别是1、2、3。如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个使用sed算法后会进行这样一个运算:A(1+1)/1,B(1+2/2,C(1+3)/3根据运算结果,把连接交给C
10.最少队列调度(Never Queue Scheduling NQ)
如果有台Real Server的连接数为0就直接分配过去,无需SED运算