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等。
LVS集群之原理及概述(1)的更多相关文章
- LVS集群之工作原理和调度算法(2)
LVS的工作机制 LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默 ...
- LVS系列一、LVS集群-NAT模式
一. 集群概述 1. 什么是集群? 一组各自相互独立且又相互依赖的,通过高速网络互联的计算机组成的一个计算机组, 以单一的系统模式加以管理, 为用户提供服务, 对用户来说, 用户只会认为对方是一个服务 ...
- 负载均衡之LVS集群
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- LVS集群之NAT模式实现
LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备. (a)原理 2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...
- Linux系统(五)负载均衡LVS集群之DR模式
序言 DR模式是lvs集群中三种负载均衡模式的其中一种,那么上一篇中我写啦关于NAT模式的搭建与原理,为什么还要有DR模式与IP隧道模式呢? 首先我们来看3张图.LVS/NAT模式如下图: LVS/I ...
- LVS集群简介及使用
什么是集群 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 将很多服务器集中在一起,提供一种服务,在客户端看来就象是只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的 ...
- Redis cluster集群:原理及搭建
Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...
- KVM部署LVS集群故障案例一则
一.故障现象 KVM部署LVS(Linux Virtual Server)集群后,能够单独以HTTP方式访问RS(Real Server)的实际IP,但无法通过VIP(Virtual IP)访问. 二 ...
- 转载-lvs官方文档-LVS集群中的IP负载均衡技术
章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...
随机推荐
- Java中File的使用
File 代表文件或者目录的类 构造函数 File(File parent,String child)---代表了指定父目录下的指定的子文件或者子目录 File(String pathname)--- ...
- nginx+redis缓存微信的token数据
上一篇文章我们讲了如何在负载均衡的项目中使用redis来缓存session数据,戳这里. 我们在项目的进展过程中,不仅需要缓存session数据,有时候还需要缓存一些别的数据,比如说,微信的acces ...
- 《决战大数据:驾驭未来商业的利器》【PDF】下载
内容简介 大数据时代的来临,给当今的商业带来了极大的冲击,多数电商人无不"谈大数据色变",并呈现出一种观望.迷茫.手足无措的状态.车品觉,作为一名经验丰富的电商人,在敬畏大数据的同 ...
- IOS学习5——属性与成员变量
[转]iOS中属性与成员变量的区别 ios中属性修饰符的作用 1. 属性用property声明 2. 简而言之,对于目前的ios开发,属性和成员变量的区别,完全可以不管. 3. 这个是历史原因造成的. ...
- Oracle11g不能导出空表问题
ORACLE 11g 用exp命令导出库文件备份时,发现只能导出来一部分表而且不提示错误,之前找不到解决方案只能把没导出来的表重新建建立.后来发现是所有的空表都没有导出来.于是想好好查查,因为在以前的 ...
- sublime学习笔记
学习课程地址:快乐的sublime编辑器_sublime编辑器使用 另可参考笔记地址:http://c.haoduoshipin.com/happysublime/ PS:博主的一些文章地址:http ...
- 一口一口吃掉Volley(四)
欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(四)/ 非常感谢你能够坚持看到第四篇,同时这也是这个Volley系列教 ...
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解 ----转载
1.(function($) {-})(jQuery); 1).原理: 这实际上是匿名函数,如下: function(arg){-} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写 ...
- Linux下防火墙配置
查看防火墙的状态:/etc/init.d/iptables status 或 service iptables status 1) 临时生效,重启后复原 开启: service iptab ...
- JavaScript调试技巧
熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug. 文中已经列出了14个你可能不知道的调试技巧,但是 ...