Internet的飞速发展给网络带宽和服务器带来了巨大的挑战,很多网络服务因为访问次数爆炸式的增长而不堪重负,不能及时处理用户的请求,导致用户进行长时间的等待,大大降低了服务质量。如何建立可伸缩并且能够实现负载均衡的可靠性网路服务来满足不断增长的负载需求已成为迫在眉睫的问题。Linux集群技术也就应用而生可以以低廉的成本,很好的满足人们的需要。
集群的基本概念
集群技术其实就是一组互相独立的服务器在网路中表现为单一的系统,并以单一系统的模式加以管理,为客户工作提供可靠性的服务。集群中的每台服务器成为一个节点。
1、High Availability即高可用集群,简称HA
运行在两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务,以减少服务中断时间。HA比较著名的有 heartbeatul、tramokey、keepalived4。
2、LoadBanlancing即负载均衡集群,简称LB
LB是提供和节点个数成正比的负载能力,具有高可用性的特点,因此比较适合有较大访问量的Web服务。常见的LB有Hardware即硬件级别:f5,IBM,Citrix和Software即软件级别:LVS(Linux Virtual Server)、Haproxy
3、High Performance即高性能集群,简称HP,常见的有bowerful
在这三种集群类型中,这里主要介绍负载均衡集群,而负载均衡集群中比较有代表性的就是LVS了。
LVS的基本概念
LVS是Linux Virtual Server的简称即运行在Linux平台上的虚拟服务器,是实现负载均衡集群的开源软件,它在内核级别中实现。通过LVS达到的负载均衡技术和Linux操作系统实现一个高可用的Linux服务器集群,它具有以最少的成本实现最优的性能,具有良好的可靠性,可拓展性和可操作性。
LVS的体系架构
LVS的服务器集群系统主要有三部分组成:前端的虚拟服务器也就起调度作用的Director,中间的服务器也就是真正实现服务的RealServer以及最底层的共享存储层,在用户看来所有的应用都是透明的,只是在使用一个虚拟的服务器提供高性能的服务。
LVS的体系架构如下图:
1.所有的集群节点必须要在同一个IP网络中
2.RIP通常使用私有地址
3.RealServer的网关必须指向DIP
4.支持端口映射
5任何类型的操作系统可以作为realserver
6.进出的数据包都必须经过directo
LVS DR: 直接路由
1.所有的集群节点必须要在同一个物理网络中,因为要通过mac地址进行转换
2.RIP可以是私有地址或是公网地址,但不支持端口映射
3.进出的请求不经过director
4.Realserver的网关一定不能执行director
5.能支持 更多的RealServer
LVS TUN:隧道
1.所有的集群点可以任意配置不要求在同一网路,或同一子网内
2.RealServer的IP地址必须是公网地址
3.director仅处理入站强求
4.realServer直接响应给客户端
5.不支持端口映射
LVS的调度算法
由于负载调度器也就是Director是根据各个服务器的负载情况,动态的选择一台RealServer来响应用户的需求,那么动态的选择RealServer的实现方法就是LVS的调度算法,调度算法分为静态算法和动态算法两类。
静态算法
Round Robin即轮询调度(rr)
调度器通过轮询调度算法将外部请求按顺序1:1的分配到集群中的每个RealServer上
Weighted Round Robin即加权轮询调度(wrr)
该算法是根据RealServer的不同处理能力来调度用户的不同访问请求,可以根据RealServer的性能设置不同的调度权值,从而合理的利用服务器的资源。
Destination hashing 目标地址哈希(dh)
只适用于realserver为缓存服务器的环境中 提高缓存命中率,会损害负载均衡的效果
List Conaction即最少连接(LC)
该算法动态的将网站请求调度到已建立链接数最少的服务器上。链接有活动链接(active)和非活动连接(inactive)链接数的计算方法:active*256+inactive
Weighted List Conaction即加权最少链接(WLC)
“加权最少链接调度”是“最少连接调度”的超集,每个服务节点可以用相应的权值表示其处理能力,而系统管理员可以动态的设置相应的权值,缺省权值为1,加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。链接数的计算方法:(active+1)*256/weight 其中weight表示权重
LBLC:基于本地的最少连接
LBLCR:带复制的基于本地的最少连接
ipvsadm的安装及其命令选项详解
ipvsadm是运行于用户空间、用来与ipvs交互的命令行工具,它的作用表现在:
1、定义在Director上进行dispatching的服务(service),以及哪此服务器(server)用来提供此服务;
2、为每台同时提供某一种服务的服务器定义其权重(即概据服务器性能确定的其承担负载的能力);
命令选项
|
含义
|
-A --add-service
|
在内核的虚拟服务器列表中添加一条新的虚拟
IP
记录。也就是增加一台新的虚拟服务器。虚拟
IP
也就是虚拟服务器的
IP
地址。
|
-E --edit-service
|
编辑内核虚拟服务器列表中的一条虚拟服务器记录
|
-D --delete-service
|
删除内核虚拟服务器列表中的一条虚拟服务器记录
|
-C --clear
|
清除内核虚拟服务器列表中的所有记录
|
-R --restore
|
恢复虚拟服务器规则
|
-S --save
|
保存虚拟服务器规则,输出为
-R
选项可读的格式
|
-a --add-server
|
在内核虚拟服务器列表的一条记录里添加一条新的
Real Server
记录。也就是在一个虚拟服务器中增加一台新的
Real Server
|
-e --edit-server
|
编辑一条虚拟服务器记录中的某条
Real Server
记录
|
-d --delete-server
|
删除一条虚拟服务器记录中的某条
Real Server
记录
|
-L|-l --list
|
显示内核中虚拟服务器列表
|
-Z --zero
|
虚拟服务器列表计数器清零(清空当前的连接数量等)
|
--set tcp tcpfin udp
|
设置连接超时值
|
-t
|
说明虚拟服务器提供的是
tcp
的服务,此选项后面跟如下格式:
[VIP:port] or [RIP:port]
|
-u
|
说明虚拟服务器提供的是
udp
的服务,此选项后面跟如下格式:
[VIP:port] or [RIP:port]
|
-f fwmark
|
说明是经过
iptables
标记过的服务类型
|
-s scheduler
|
使用的调度算法。有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh
默认的调度算法是:
wlc
|
-p [timeout]
|
在某个
Real Server
上持续的服务时间。也就是说来自同一个用户的多次请求,将被同一个
Real Server
处理。此参数一般用于有动态请求的操作中,
timeout
的默认值为
300
秒。
|
-r
|
指定
Real Server
的
IP
地址,此选项后面跟如下格式:
[real-server-ip:port]
|
-g --gatewaying
|
指定
LVS
的工作模式为直接路由模式(此模式是
LVS
默认工作模式)
|
-m --masquerading
|
指定
LVS
的工作模式为
NAT
模式
|
-w --weight weight
|
指定
Real Server
的权值
|
-c --connection
|
显示
LVS
目前的连接
如:
ipvsadm -L -c
|
-L --timeout
| 显示tcp tcpfin udp 的timeout 值如:ipvsadm -L --timeout |
-L --daemon
|
显示同步守护进程状态
|
-L --stats
|
显示统计信息
|
-L --rate
|
显示速率信息
|
-L --sort
|
对虚拟服务器和真实服务器排序输出
|
转载于:https://blog.51cto.com/sxhxt/949225