集群及LVS基础知识整理

目录

1、常见集群环境介绍

2、LVS三种类型介绍

3、LVS各种调度算法介绍

1、常见集群环境介绍

在说lvs前先来说说集群,根据所适用场景的不同,IT人员可能希望服务器运行的时间更长,最好一年365天,一天72小时都不间断的运行,也可能希望应用程序运行得更快,而有些数字领域里则需要进行大规模的数值运算,这些都会涉及到计算机群集。

最常见的集群有以下三种类型:负载均衡集群(LB:Load Balance),高可用集群(HA:High Availability),高性能集群(HP:High Performance)。

LB集群主要有应用层和传输层两个层次上的实现,有硬件的实现,也有开源软件的实现,硬件类型的LB设备主要有美国的F5的BIG/IP、思杰的NetScaler、A10、Array、RadWare,开源软件的实现主要有LVS(工作在四层)、Haproxy(四层、七层都可实现,但主要是七层的实现)、nginx(应用层的实现)。

HA集群中开源的解决方案主要有heartbeat、keepalived、corosync+pacemaker、cman+rgmanager、cman+pacemaker。

HP集群使用在一些特殊的场景,此处不讨论。

2、LVS三种类型介绍

先对LVS的一些基础知识做一些介绍:

LVS全称为Linux Virtual Server(Linux虚拟服务)工作在OSI七层模型中的第四层,是四层交换技术,它是工作在内核中的一段代码,根据目标地址和目标端口实现数据转发,它并且是工作在netfiler框架上。LVS分为两个部份,一部份工作在内核,叫ipvs,另一部份工作在用户空间,叫ipvsadmin,用此用户空间工具编写调度规则。

LVS的架构类型大体上分为三种类型,一是VS/NAT,二是VS/DR,三是VS/TUN。下边分别对这三种类型进行阐述。

2.1、VS/NAT(virtual server/network address translation 虚拟服务/网络地址转换)

此类型的网络拓朴如下图:

术语说明:

director表示调度器,这里指的就是lvs服务器;

real server表示在调度器后端的真实为外提供实际应用服务的服务器;

cip表示访问应用服务的客户端的ip地址;

vip表示director对外提供服务的那个ip地址;

dip表示与后端服务器接入同一网络的ip地址;

rip表示后端服务器的ip地址。

VS/NAT类型调度的大致过程:

首先客户端向director的vip发起服务请求,在netfiler框架上的INPUT链上ipvs发现客户端请求的是自己定义好的集群服务,那director采用静态或动态算法从自己的规则中挑选出一个real server出来,再把客户端请求报文做DNAT转换,把请求报文的目的地址修改成已挑选出real server的ip地址,然后重新封闭报文发送给real server;而当real server收到director的请求报文后,就会分析此报文看对方请求的是什么资源,再把资源准备好封闭成报文发送给director,director再做SNAT,把源地址修改成自己的vip地址后把报文发送给客户端;在客户端看来他是直接访问的是director,而作出响应的也是director,其后端的real server对客户端是不可见的,对用户是透明的。

VS/NAT类型的工作特性总结如下:

a、内部的real server应用服务器使用私有地址,real server的网关必须指向dip;

b、请求报文与响应报文都需要经过director,对director的负载压力较大,在高负载场景,director易成为性能瓶颈;

c、对外提供服务的端口和real server提供服务的端口可不相同,即支持端口映射;

d、real server对操作系统不做任何修改,所以可以使用任意的操作系统。

2.2、VS/DR(virtual server/direct routing 虚拟服务/直接路由)

此类型的拓扑大致有以下两种,第一种:

说明:这种VS/DR类型架构中director只有一张网卡接入到网络中,vip与dip都配置在这网卡上,用子接口的方式加以区别。

第二种拓扑:

VS/DR类型的大致调度过程:

客户端请求报文到达director的vip后,director发现是请求是一个集群服务,director采用静态或动态算法挑选出一个real server,这时director不再像VS/NAT中会修改报文中ip首部的目标ip,而是把目标MAC修改成已挑选real server的rip的MAC地址,因dip与rip是在同一个二层网络中,只需要MAC地址即可完成寻址,所以被修改了目的MAC的报文能成功送到real server,real server把报文拆开后发现目的MAC的确是rip上的MAC,所以它会处理这个报文,real server把客户端要请求的资源准备好后,强行让报文从“lo:0”这样的子接口上送出去,这个接口配置了vip的地址,第个real server都会配置rip与vip的地址,所以为了让vip地址不会导致冲突,所以各real server都要采取一定的机制让配置在"lo:0"上的vip地址不被网络上的其他设备得知,这个地址只是用在响应报文中把响应报文的源地址封闭成vip的,这样响应报文就可通过real server直接到达客户端,而不必再通过director的再次转发,这样,接入的报文通过director,而响应报文则直接送到客户端,而客户端看到的报文也是从vip送回来的(其实是从real server来的),这各VS/DR模型让director得到的解放,只处理接入报文,压力也变得更小,能带动的real server也更多,处理并发能力更强,但后端real server配置比较麻烦。

VS/DR类型的工作特性总结如下:

a、各real server的lo回环地址上需要配置一个子接口,此子接口的ip为vip地址,并保证此ip不接受外界任何的ARP请求;

b、此系统需要保证前端路由将目标地址为vip的报文统统发往directory的vip地址,而不能发往real server上的vip;

解决方案:方案一、在前端路由器上进行静态地址绑定,但路由器是运营商的,不具有路由器的管理权限;方案二、修改real sedrver的arptables防火墙,使其忽略对对lo接口上arp报文的响应,并不主动向网络通报lo接口上的信息;方案三、修改real server上系统的内核参数,使系统不接收对lo接口的arp的请求报文,也不主动通报lo接口的信息,这在2.6以后的内核中很容易实现。

c、real server可以使用私有地址,也可以使用公网地址;

d、real server跟directory必须在同一物理网络中,这是因为directory要将报文转发给real server时,并没有改变目标IP(保持vip),而是把目标MAC修改成了从各real server挑选出来的rip的MAC地址,而MAC之间的通信是基于二层的,所以不能跨网段进行,这就导致采用VS/DR构架的系统只能在同一个机房实现;

e、请求报文经过directory,但响应报文必须不能经过directory,不支持端口映射功能;

f、real server可以是大多数常见的操作系统,只要支持隐藏arp通告的相关功能;

g、real server的网关绝对不允许指向dip。

2.3、VS/TUN(virtual server/tunneling 虚拟服务/隧道)

大致拓扑如下图:

基于VS/TUN类型的集群主要是用在架设cache server集群上,调度器与real server可能不在同一个物理网络中,所以可跨地域、跨机房部署。

VS/TUN类型调度的大致过程:

VS/TUN类型利用了IP隧道技术,把一个IP报文封装了另一个IP报文,这可以使把目标为一个IP的报文能封闭转发到另一个IP地址。请求报文到达director后,director采用静态或动态算法挑选一个在隧道上的real server地址,把原来的源地址为cip,目标地址为vip的ip报文又封闭在另一个IP报文上,把此IP报文送到隧道上转以给real server,real server拆开报文看到目标地址是vip,而自己的“lo:0”接口上又配置了vip,所以能正常的处理此报文,将响应报文准备好后,又可直接送达到cip。

VS/TUN类型工作的特性:

a、rip、dip、vip全部使用公网地址;

c、请求报文经过directory,但响应报文不会经过directory,不支持端口映射功能;

d、real server的操作系统必须支持隧道功能。

3、LVS各种调度算法介绍

3.1、静态调度算法

静态调度算法仅根据高度算法本身进行调度。

a)、rr:round robin(轮流,轮询,轮叫),这种算法是起点公平,但根据时间推移,各real server会产生负载不均衡的情况;

b)、wrr:weighted round robin(加权的轮询),用于real server服务器硬件性能不同时的场景;

c)、sh:source hashing(源地址hash),表示来源于同一个cip的请求将始终被定向到同一个rs,使用在需要session保持的场景,但这种算法又打破了负载均衡的初衷;

d)、dh:destination hashing(目标地址hash),表示访问同一地址的资源始终被定向到同一个real server,用在内部访问外部网络时有两个出口(防火墙)时的特殊场景;

3.2、动态调度算法

动态调度算法根据算法及各real server当前的负载状况进行衡量计算后再进行调度。

e)、lc:least connection(最少连接),lc算法是把新的连接调度给当前连接数最小的real server;

Overhead(负载)=Active*256+Inactive,值越小,越先被调度到

f )、wlc:weighted least connection(带权重的最少连接),此算法是lc算法的一个补充,各real server用一个权值来代表其处理能力,director尽可能使用其调度按照其权值的比例来调度,这是IPVS的默认算法;

Overhead(负载)=(Active*256+Inactive)/weighted,这种算法会导致一种现象,在集群初始状态时,各real server没有活动连接,而在director的调度规则中把权重小的real server排在了前边,那最开始director会调度到权重小的real server上,而在现实中我们希望是先调度到处理能力强的(权重大)real server上;

g)、sed:shoutest expection delay(最短期望延迟),表示让在初始状态时能让director挑选到权重大的real server,即使是权重小的real server在director规则中的前边,这种算法在各real server权重相差较大时会导致权重小的real server在一段时间内不会分配连接请求;

Overhead=(Active+1)*256/weight

h)、nq:never queue(永不排队),表示在初始状态时director会依据weight的大小至上而下的为每一个RS分配一个连接,保证每一个real server都能在最短的时间内得到连接请求,解决了sed算法中real server有可能会在一段时间内不会分配到连接请求的问题;

i)、lblc:Locality-Based Least Connection(基于局部性的最少连接),此算法是针对请求报文的目标IP地址的负载均衡调度,目前主要用于Cache集群系统;

j)、lblcr:Replication lblc(带复制功能的lblc),此算法是针对请求报文的目标IP地址的负载均衡调度,目前主要用于Cache集群系统。

时间: 2024-10-11 05:31:21

集群及LVS基础知识整理的相关文章

集群之lvs 基础知识

注意:本文主要是对于LB中的lvs 做讲解(centos6.5-x86_64系统) 一.集群基本概念: 集群是把一组相互独立的.通过高速网络互联的计算机,把它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性和可缩放性. 1.1.常见的服务器扩展方式: Scale Up: 向上扩展 添加配置 Scale Out: 向外扩展 添加服务器 1.2.集群分类 负载均衡集群:Load Balancing Cluster,LB 高可用集

Java基础知识整理(一)

概述 公司业务需要,产品既要有.NET又需要Java,没得选择,只能业余时间学习Java,整体觉得Java也.NET还是很相似的,只是语法有差别,差别也不是很大,这就将学习Java的基础知识整理下,以便于自己的学习.作为个.NET程序猿也可以学习Java ,毕竟技多不压身,学习多也要精通. 开发工具 eclipse ,开发java类似.NET 需要装JDK类似.NET Framework. Java开发工具eclipse设置 1.设置字体:window设置: 2.设置快捷键:window--ke

DIV+CSS网页布局常用的一些基础知识整理

CSS命名规范一.文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: 二.常用类/ID命名规范页 眉:header内 容:content容 器:container页 脚:footer 版 权:copyright 导 航:menu主导航:mainMenu子导航:subMenu 标 志:logo标 语:banner标 题:title侧边栏:sidebar 图 标:Icon注 释:note

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置

CentOS Linux 负载均衡高可用WEB集群之LVS+Keepalived配置 LB集群是locd balance集群的简称.翻译成中文是:负载均衡集群的意思:集群是一组相互独立的.通过高速网络互联的计算机相互之间构成一个组合,并以单一的系统的模式加以管理.LVS是Linux Virtual Server的简写,翻译中文是Linux虚拟服务器,是一个虚拟的服务器集群系统. 负载均衡集群:是为了企业提供更为实用,性价比更高的系统机构解决方案.负载均衡集群把用户的请求尽可能的平均分发到集群的各

linux 集群及lvs

集群及LVS 集群: 一组通过高速网络互联的计算机组,并以单一系统的模式加以管理 价格很多服务器集中起来,提供同一种服务,在客户端看起来就像只有一个服务器 可以在付出较低成本的情况下获得在性能,可靠性,灵活性方面的相对较高的收益 任务调度室集群系统中的核心技术 集群目的: 提高性能:如计算密集型应用,如:天气预报,核试验模拟 降低成本:相对于百万美元级的超级计算机,价格便宜 提高可扩展性:只要增加集群节点即可 增强可靠性:多个节点完成相同功能,避免单点失败 集群分类: 高性能计算集群HPC:通过

perl重点基础知识整理

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

linxu集群架设——LVS

LVS框架: 三层结构:     网络      (LVS--linux)      (WWW , FTP ,STML)     (GFS,OCFS2)用户 -- >   Director Server  ---> Real Server1       Real Server2    --> 集群文件系统      Real Server3软件: 浏览器        ipvsadm              httpd                 ↑   heartbeat(ldi