LVS集群之原理及概述(1)
一、 概述
什么是集群,集群的特点、功能和分类。Linux环境下用哪些开源软件来构建一个功能强而有稳定的集群系统。了解国人内核级负载均衡开源项目linux虚拟服务器,简称LVS。
1.1 定义
集群是由两个或者多个计算机或者节点组成的一起执行任务的系统。
1.2 集群的类型
存储型
高性能型
高可用性型
负载均衡型
A、 存储型
存储型集群是跨服务器提供一致文件系统映像,他允许服务器同步地读取和写入单个的共享文件系统。存储型集群将应用程序的安装和修补限制到一个文件系统,简化了存储的管理。而且,采用集群范围的文件系统,存储型集群消除了应用程序数据的冗余拷贝并简化了备份和恢复。
B、 高性能型
高性能计算是计算机科学的一个分支,他致力于开发超集计算机,研究并行算法和开发相关软件,使用集群节点来执行并行运算。
C、 高可用性型
通过消除单点失效以及在一个节点停止运作时将服务从一个集群节点切换到另外一个节点,提供服务的持续可用性。
实现的软件有Turbolinux TurboHA、Heartbeat、Kimberlite。
D、 负载均衡型
将网络服务请求分摊在多个集群节点来平衡请求负载。
1.3 集群系统采用的操作系统
主要有UNIX,windowsNT和linux
UNIX主要是服务器或者工作站上普通使用的操作系统。如:HP/SUN/IBM
Mircrosoft在1995年开发集群系统的开发系统。
Redhat也提供了给予LVS思想构建的集群。
1.4 典型的集群系统
TurboCluster
是一个企业级的集群方案
Linux Virtual Server
Linux虚拟服务器(lvs)构建于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台作为负载均衡器的服务器,也就是最前端的调度器。
1.5 集群的特点和功能
高可用性和扩展性
不间断服务7*24
故障自动切换
负载均衡和错误恢复
集群系统最大的特点可以灵活、有效地分担系统负载
二、 负载均衡集群LVS
1、负载均衡集群
负载均衡集群可以事项多台服务器或者应用的流量均衡分配。
2、LVS
LVS即linux虚拟服务器,是一个虚拟的服务器集群系统。
项目创始人我国国防大学的章博士管理。
3、lvs架构
三部分:前端的负载均衡层、中介的服务器集群层、数据共享存储层。
对外部用户来说,所有内部服务都是透明的,用户只是使用一个虚拟服务器提供的高性能服务。
4、术语
DS/RS/LVS/IPVS/CC
Director server/Linux Virtual server/IP virtual server/Client Computer
VIP/RIP/DIP/CIP
Virtual IP/Real IP/Client IP
前端调度器:负载均衡器、调度器、Director、LVS Router、地址转换器
后端真实服务器:真实服务器、节点服务器、RealServer、Pool server、LVS客户端
IP负载均衡技术、负载均衡模式
内核高于2.4.23的内核版本即支持IPVS。
5、负载均衡的三种模式
A、NAT模式
负载均衡器或者可以称之为地址转换器的前端调度器,它修改来自专有网络的流出的数据包的地址,外界看起来包是来自地址转换器本身,当外界送到转换器时,他能够判断出应该将包送到内部网络的某台真实节点。
优点:节省IP地址,内部进行伪装。
缺点:效率低,因为返回给请求方的流量经过转换器
应用场景1:一组区服的登陆服务器,对外玩家看到只有一个公网IP地址,其实后端有很多台真实服务器,开启不同的端口,这样,对于游戏配置时,也只需要填写对外的公网IP地址即可。
NAT模式是LVS中最容易实现的模式,同时他也是大多数软件/硬件默认的模式。在NAT模式下,LVS调度器实现网络地址转换以及IP负载分发的功能,所以NAT模式的瓶颈在于前端调度器,而且在扩张的时候也是个问题,当节点到达10个后,会明显比较吃力。
NAT模式的过程:
(1) 调度器接收用户发来的消息,根据调度算法进行IP分流,将数据包发送到后端RS
(2) 真实机执行相应操作后,将消息返回给调度器
(3) 调度器通过NAT地址转换将结果发送给用户,完成一次请求以及响应的操作
B、DR模式
用直接路由技术实现lvs,当参与集群的计算机和作为控制管理计算机在同一网段时可以用这种方法,控制管理的计算机接受到请求包时直接送到参与集群的节点。
DR模式也成为直接路由模式,实现此模式时lvs router只实现IP分发功能,应用服务器收到IP数据包并处理后,通过自身来实现IP地址转换,将数据直接传送给用户,在此模式下,LVS Router只对TCP/IP数据包的头信息进行处理,然后直接路由到应用服务器,不需要处理应用服务器返回的数据信息,因此,性能较高。
用户发送的请求,经过DR调度后,后端真实机进行处理后,直接发送给客户端,完成一次请求以及响应的过程。
直接路由技术实现虚拟服务器。不能跨网段,所有的真实机必须处于一个网段中。
C、隧道模式(TUN模式)
IP Tun可以是NAT和DR模式的综合,包含了这两种模式,性能也介于他们之间,实现IP tunnel模式时,调度器将TCP/IP请求进行重新封装并转发给目标对象,由目标应用服务器直接回复用户,由于调度器和应用服务器之间是通过IP tunnel来进行转发,因此二者可以存在于不同的网段中。
由调度器重新封装发送给后端真实机器,由真实机器直接发送给客户端。可以跨网段进行。
当前大多数架构都选择使用NAT或DR模式来实现LVS负载均衡,由于NAT模式简单,并与DR模式在配置上有很多相似之处,通过这两台服务器实现HTTP+LVS负载均衡集群下的DR模式。
用户IP tunnel技术实现LVS,这种方式主要是在集群节点不在同一个网段时可用的转发机制,是将IP包封装在其他网络了流量中的方法,为了安装的考虑,应该使用隧道技术的VPN也可以使用专线,集群所能提供的服务是基于TCP/IP的web服务,Mail服务,News服务,DNS服务,Proxy服务等。
6、调度算法
1.轮叫算法(Round Robin)
2.加权轮叫算法(weighted Round Robin)
3.最少链接调度(least connections)
4.加权最少链接调度(weighted least connections)
5.其他算法
三、LVS的安装与配置
3.1 负载均衡器的安装
IPVS是整个负载均衡的基础。大部分linux发行版本中,IPVS被 默认安装。
yum install ipvsadm
可以使用本地源直接安装,设置本地源的时候有一个需要注意事项:
如果提示以下错误:
Warning:rpmts_hdrfromfdno:Header V3 DSA signature:NOKEY,Key ID e8562897
Public key for *****.rpm is not installed.
这是由于yum安装了旧版本的RPM-GPG-KEY造成的,解决办法是:
rpm –import /etc/pki/rpm-gpg/PRM-GPG-KEY-CentOS-6
检查是否安装:
[root@master ~]# rpm -qa |grep ipvsadm
ipvsadm-1.25-10.el6.x86_64
检查模块是否加载:
[root@master ~]# lsmod |grep ip_vs
ip_vs_rr 1420 1
ip_vs 115643 3 ip_vs_rr
libcrc32c 1246 1 ip_vs
ipv6 321422 39 ip_vs,cnic,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
重新加载lvs模块
Modprobe ip_vs
3.2 ipvsadm的用法
使用ipvsadm –help来查看
常用选项如下:
-A 添加一条新的虚拟服务器记录
-E 编辑一条虚拟服务器记录
-D 删除
-C 清除内核虚拟服务器中的所有记录
-R 恢复虚拟服务器规则
-S 保存虚拟服务器规则
-a 添加一条真实服务器规则
-e 编辑一条真实服务器规则
-d 删除一个真是服务器规则
-L 列出虚拟服务器列表
-Z 虚拟服务表计数器清零(情况当前连接数量)
-t --tcp-service service-address 说明lvs提供的tcp服务
-u 说明是udp服务
-f 说明是经过iptables标记过的服务类型
-s 使用的调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)
-p 会话保持,意思是同一个客服多次请求,将被同一台真实服务器处理,timeout默认300s
-r 真实服务器
-g 指定lvs的工作模式为直接路由模式
-i 指定工作模式为隧道模式
-m 指定lvs工作模式为NAT模式
-w 真实服务器的权值
--mcast-interface interface 指定组播的同步接口
-c 显示lvs当前连接:ipsadm -L -c
--timeout 显示tcp tcpfin udp的timeout值,如:ipvsadm -L --timeout
--daemon 显示同步守护进程状态
--status 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP地址和端口的数值形式
3.3 LVS客户端的配置
Lvs客户端不需要安装任何额外的软件。Lvs客户端是指负载均衡后面的真实主机.
3.4 LVS客户端支持的操作系统
基本上目前所有操作系统均支持。GUN/linux、unix、windows等。