在实际的生活应用中,我们搭建服务器,用以处理客户的各种需求,进而维护公司或者企业的业务稳定与发展,但是当服务器出现故障,而又没有及时的进行修复,那么导致的损失可是很大的。又有这样一种情况,例如淘宝网刚刚过去的双十一,数千万人等待在计算机前,登陆天猫,淘宝的页面,其web服务器的压力可想而知。服务器的群集就是这样出现的,通过将一定数量的服务器组合在一起,形成一个强大的处理单元!!

服务器的群集有三种类型,每种类型有着其不同的意义。

1. 负载均衡群集 简称LB 【load balance】,一般应用于web服务器,和mysql等数据库服务器上。

实现LB群集的方法:

a. 硬件方面 F5 他使用了特殊的算法,是十分安全的,但是价格十分昂贵

b. 软件方面 LVS 【linux虚拟服务器】,值得骄傲的是它是由中国人章文松开发的代码,也就是linux中的ipvsadm服务。

c. 使用squid nginx 作为反向代理也可以实现

总的来说LB群集,就是通过这些方法提供更大量的并发连接请求,是够公司业务拓展的必须技术。

2. 高可用性群集 简称HA【highly availability】,一般应用与LB群集的前端的分发设备上

HA群集的作用:关键性节点保证不中断,应用于关键性业务上。保证关键性业务在99.999%中可使用,一般性的业务在99.9%可用。

可应用的节点数目:2节点或多节点, 多节点使用RHCS 可使用100个节点。

工作方式: 主备方式 针对单业务,主主方式 针对多业务。

心跳线:在主备/主主模式中,将两个分发设备连接起来,以实现备用分发设备发现主动分发设备的故障,的线叫做心跳线。心跳线 可使用双绞线,管线,serial 线即可。存在心跳流量,三次发送数据包即可确定是否主用设备完好。

HA可以靠 rhcs/heartbeat/corosync+openais+pacemaker/drbd 都可以实现

3. HP群集,为了实现高复杂,大量运算的时候使用。使用较少

linux服务器 群集--LVS_负载均衡群集

LB群集的术语:

VIP:虚拟ip地址,客户端访问的ip。

RIP:服务器的真实ip地址。

DIP:director转发设备的另一个接口的ip地址。

CIP:客户端ip地址。


LB群集的三种模型:

1. LVS-NAT模型

linux服务器 群集--LVS_负载均衡群集_02

模型特点: Director必须与 服务器群集在一个 vlan或者同一个物理网络,但是不能实现异地容灾,所有的请求数据,与恢复数据都要经过分发设备,所以分发设备的性能,也会影响群集的效果。而且群集节点网管都指向 director,所以分发设备容易成为网络的瓶颈。

2. LVS-DR模型

linux服务器 群集--LVS_LVS_03

模型特点: 减轻了 director 的负担,只经过 客户端请求的流量,但是回复的流量不经过他。并且不做NAT 转换。群集节点必须与director在一样的网络。

数据的处理:用户请求的数据包,转换为数据帧,转发给内部server,去掉帧头,变为数据包给内部,每一个 real server 都需要有VIP,

Arp广播请求响应问题:1. real server 不做出响应.arp 防火墙 2. 内核参数arp-announce

Arp-ignor 忽略对 server的arp请求。

需求:1. RIP必须是合法的ip地址。

2. 群集节点网关不再指向 director

3. 不是所有的操作系统适合作为real servers

4. 节点数最多100

3. LVS-TUNNLE模型

linux服务器 群集--LVS_负载均衡群集_04

模型特点:

1. 可以异地容灾。

2. 节点不需要与 director在一样的网络中。

3. Director只检查 进来的流量,减少了转发设备的瓶颈问题。

4. 不能够实现端口重定向。

5. 只有部分操作系统支持隧道协议。


LVS 转发设备的调度算法

也就是当客户端发出请求,转发设备收到请求后,怎么样将请求分发给群集中的某一台服务器来进行处理。

其调度算法分为静态算法【也叫做固定调度算法】和动态算法【轮询调度算法】


静态算法有四类:

1,RR 轮询的调度算法,轮流来做【每一个real,server情况不一,能力不一,这样是不合适的】

2,WRR 加权的轮询调度,根据不同的real server能力,分配不同的任务。

3,.目标hash:发送请求给同样ip地址的 real server

4.,来源hash:director需要去顶数据包是来自同样的路由器或者防火墙的时候

动态算法:根据每一个real server的真实情况来决定。 director追踪real server 中的活动链接数量 以及非活动链接数量,来进行调度

1. LC 最少连接数: 根据活动非活动链接 计算出一个值 overload。计算方法 活动链接*256+非活动,谁的值小 给谁。

2. WLC加权最少连接数:给server 加上一个权重值,该值将参与计算LC,计算方法 (活动链接*256+非活动)/加权值,谁的值小由谁来进行处理。

3. SED最少的期望延迟:对于 WLC/LC的改进。不考虑非活动的连接,计算方法 (活动链接数+1)*256

4. NQ 永不排队:针对处理能力强的server,接收的连接虽然多,但是经过计算仍然会获得请求,如果某一个 server 很闲,则将请求交给他。

5. LBLC基于本地的最少连接数:类似于客户端—缓存服务器—real-server的模型,请求现有缓存来进行回复,没有的才给予real-server处理

6. LBLCR 带复制功能的LBLC:类似于多个缓存服务器的模型,使缓存服务器的缓存可复制到其他缓存服务器上,减少了服务器的工作量。


在LVS虚拟服务器的群集中,要使用我们国人开发的一个服务,ipvsadm服务,通过它来配置lvs群集服务

Ipvsadm

-A| -E 添加 或者编辑一个虚拟服务器

-D 删除一个虚拟服务器

-C 清空虚拟服务器表

-R 恢复删除的表

-S 保存之后可以被restore

-a| -e 添加,修改一个 real-server

-d 删除一个real-server

-L| -l 列出虚拟服务器表

-t| -u | -f TCP/UDP/标记

-w 权重值


实验:LVS基于NAT模型的群集

实验环境:linux虚拟机5.4

linux服务器 群集--LVS_LVS_05

实验过程:

real-server1

1. ip设置

linux服务器 群集--LVS_LVS_06

2. 安装httpd 服务,创建主页,开机自启动httpd服务,并创建一个简单地网页。

# echo"real-server1" > /var/www/html/index.html


Real-server2

1. 配置ip地址

linux服务器 群集--LVS_LVS_07

2. 安装httpd 服务,创建主页,开机自启动httpd服务,创建一个测试的网页网页

# echo"real-server2" > /var/www/html/index.html



Director转发设备

1. 设置两个网卡的ip,一个连接内网,一个连接外网

linux服务器 群集--LVS_负载均衡群集_08

linux服务器 群集--LVS_LVS_09

2. 安装群集中的ipvsadm软件包

# rpm -ivh/mnt/cdrom/Cluster/ipvsadm-1.24-10.i386.rpm

3. 开启linux

4. 服务器的数据包转发功能

# vim /etc/sysctl.conf

# sysctl -p

5. Man ipvsadm

6. 创建ipvsadm的静态rr轮询虚拟服务

#ipvsadm -A -t 192.168.1.100:80 -s rr

linux服务器 群集--LVS_LVS_10

7. Ipvsadm –a –t 192.168.1.100:80 –r 192.168.3.2 –m//基于nat模型的tcp服务的转换条目

8. Ipvsadm –L //查看列表

9. Ipvsadm –a –t 192.168.1.100:80 –r 192.168.3.3 –m//基于nat模型的tcp服务的转换条目

10. Ipvsadm –L

linux服务器 群集--LVS_linux_11

linux服务器 群集--LVS_linux_12

linux服务器 群集--LVS_linux_13

linux服务器 群集--LVS_LVS_14

再次刷新 LVS表,会发现 非活动链接项有数值,而活动链接项无数值,这是因为http服务要处理大量的请求链接,处理完之后 就断开连接,否则服务器是支撑不住的。


Weight表示权重值

Masq 表示使用的是 nat 模型


WRR模式

#ipvsadm -E -t 192.168.1.100:80 -s wrr

#ipvsadm -e -t 192.168.1.100:80 -r 192.168.3.3 -m -w 5

更改权重后,刷新多次都在real-server2 页面上,然后才跳到real-server1页面上。

权重大的,就收的请求就多,做的工作就多。



一般的服务器群集前端是 转发设备,后端就是重要的数据存储设备了,不可能所有群集服务器上都存放相同的东西吧!

一般的存储方式有三种方式

1. DAS direct attached storage 直接附加存储

2. NAS 网络附加存储例如:NFS SAMBA 提供的是文件级别的共享。

当然也有专门的NAS产品:

优点:具有锁机制,在一个用户编译中,其他用户不得编辑该文件

具有推送机制

3. SAN 存储区域网络。存储中较高的级别。

Fc-san 代价高 效率高 ip-san 代价低 效率低

具体的存储应用,下次再说 *.*!