IPVS(LVS)负载均衡简介及实验测试

IPVS(LVS)负载均衡简介及实验测试,第1张

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,现在已经是 Linux标准内核的一部分。LVS是一种叫基于TCP/IP的负载均衡技术,转发效率极高,具有处理百万计并发连接请求的能力。

LVS的IP负载均衡技术是通过IPVS模块实现的。IPVS模块是LVS集群的核心软件模块,它安装在LVS集群作为负载均衡的主节点上,虚拟出一个IP地址和端口对外提供服务。用户通过访问这个虚拟服务(VS),然后访问请求由负载均衡器(LB)调度到后端真实服务器(RS)中,由RS实际处理用户的请求给返回响应。

根据负载均衡器转发客户端请求以及RS返回响应机制的不同,将IPVS的转发模式分为三种:VS/NAT,VS/DR,VS/TUN

DR模式下,客户端的请求包到达负载均衡器的虚拟服务IP端口后,负载均衡器不会改写请求包的IP和端口,但是会改写请求包的MAC地址为后端RS的MAC地址,然后将数据包转发;真实服务器处理请求后,响应包直接回给客户端,不再经过负载均衡器。所以DR模式的转发效率是最高的,特别适合下行流量较大的业务场景,比如请求视频等大文件。

DR模式的特点:

LB只是将数据包的MAC地址改写为RS的MAC地址,然后转发给相应的RS。

因为LB转发时并不会改写数据包的目的IP,所以RS收到的数据包的目的IP仍是LB的虚拟服务IP。为了保证RS能够正确处理该数据包,而不是丢弃,必须在RS的环回网卡上绑定LB的虚拟服务IP。这样RS会认为这个虚拟服务IP是自己的IP,自己是能够处理这个数据包的。否则RS会直接丢弃该数据包!

因为LB不会改写数据包的目的端口,所以RS服务的监听端口必须和虚拟服务端口一致,否则RS会直接拒绝该数据包。

因为RS收到的请求数据包的源IP是客户端的IP,所以理所当然RS的响应会直接回给客户端,而不会再经过LB。这时候要求RS和客户端之间的网络是可达的。

因为LB在转发过程中需要改写数据包的MAC为RS的MAC地址,所以要能够查询到RS的MAC。而要获取到RS的MAC,则需要保证二者位于一个子网,否则LB只能获取到RS网关的MAC地址。

NAT模式下,请求包和响应包都需要经过LB处理。当客户端的请求到达虚拟服务后,LB会对请求包做目的地址转换(DNAT),将请求包的目的IP改写为RS的IP。当收到RS的响应后,LB会对响应包做源地址转换(SNAT),将响应包的源IP改写为LB的IP。

NAT模式的特点:

对于请求包,会进行DNAT;对于响应包,会进行SNAT。

虽然LB在转发过程中做了NAT转换,但是因为只是做了部分地址转发,所以RS收到的请求包里是能看到客户端IP的。

因为RS收到的请求包源IP是客户端的IP,为了保证响应包在返回时能走到LB上面,所以需要将RS的默认网关地址配置为LB的虚拟服务IP地址。当然,如果客户端的IP是固定的,也可以在RS上添加明细路由指向LB的虚拟服务IP,不用改默认网关。

因为需要将RS的默认网关配置为LB的虚拟服务IP地址,所以需要保证LB和RS位于同一子网。

又因为需要保证RS的响应包能走回到LB上,则客户端不能和RS位于同一子网。否则RS直接就能获取到客户端的MAC,响应包就直接回给客户端了,不会走网关,也就走不到LB上面了。这时候由于没有LB做SNAT,客户端收到的响应包源IP是RS的IP,而客户端的请求包目的IP是LB的虚拟服务IP,这时候客户端无法识别响应包,会直接丢弃。

IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技 术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。

利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可 能静态地建立一一对应的隧道,而是动态地选择一台服务器,将请求报文封装和转发给选出的服务器。这样,可以利用IP隧道的原理将一组服务器上的网络服 务组成在一个IP地址上的虚拟网络服务。各个服务器将VIP地址配置在自己的IP隧道设备上。

它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况, 动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 VIP的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

LB会根据RS上配置的权重,将消息按权重比分发到不同的RS上。可以给性能更好的RS节点配置更高的权重,提升集群整体的性能。

最小连接调度(Least-Connection Scheduling)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务 器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减一。

加权最小连接调度(Weighted Least-Connection Scheduling)算法是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权 值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。

基于局部性的最少链接调度(Locality-Based Least Connections Scheduling,以下简称为LBLC)算法是针对请求报文的目标IP地址的负载均衡调度,目前主要用于Cache集群系统,因为在Cache集群中 客户请求报文的目标IP地址是变化的。这里假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的 请求调度到同一台服务器,来提高各台服务器的访问局部性和主存Cache命中率,从而整个集群系统的处理能力。

带复制的基于局部性最少链接调度(Locality-Based Least Connections with Replication Scheduling,以下简称为LBLCR)算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要 维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。对于一个“热门”站点的服务请求,一台Cache 服务器可能会忙不过来处理这些请求。这时,LBLC调度算法会从所有的Cache服务器中按“最小连接”原则选出一台Cache服务器,映射该“热门”站 点到这台Cache服务器,很快这台Cache服务器也会超载,就会重复上述过程选出新的Cache服务器。这样,可能会导致该“热门”站点的映像会出现 在所有的Cache服务器上,降低了Cache服务器的使用效率。LBLCR调度算法将“热门”站点映射到一组Cache服务器(服务器集合),当该“热 门”站点的请求负载增加时,会增加集合里的Cache服务器,来处理不断增长的负载;当该“热门”站点的请求负载降低时,会减少集合里的Cache服务器 数目。这样,该“热门”站点的映像不太可能出现在所有的Cache服务器上,从而提供Cache集群系统的使用效率。

目标地址散列调度(Destination Hashing Scheduling)算法也是针对目标IP地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。

目标地址散列调度算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反,它根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法 的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标IP地址换成请求的源IP地址。

客户端发送对VIP的请求,lvs负载到后端某一台server,后端server处理后,直接封包回送客户端,源IP地址一定是lvs上面配的那个公网服务地址,也就后端server要配置这个ip,后端server收到的数据包是lvs没有变动过的(IP:vip),多个server,接入互联网的server持有相同的IP,是不允许的,因此,必须将后端server中的vip隐藏起来(对外隐藏,对自己可见)

VIP: 虚拟服务器地址

DIP: 转发的网络地址

1,和RIP通信:ARP协议,获取Real Server的RIP:MAC地址;

2,转发Client的数据包到RIP上,RIP上要求有VIP(对外隐藏VIP);

RIP: 后端真实主机(后端服务器)

CIP: 客户端IP地址

对外隐藏,对内可见

kernel parameter:

目标mac地址为全F,交换机触发广播

arp_ignore: 定义接收到ARP请求时的响应级别;

0:只要本地配置的有相应地址,就给予响应;

1:仅在请求的目标(MAC)地址配置请求

到达的接口上的时候,才给予响应;

arp_announce:定义将自己地址向外通告时的通告级别;

0:将本地任何接口上的任何地址向外通告;

1:试图仅向目标网络通告与其网络匹配的地址;

2:仅向与本地接口上地址匹配的网络进行通告;

lvs 主机:192.168.56.118

RIP主机:也就是需要负载的服务器,192.168.56.101-103

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,后来将lvs嵌入到linux内核,叫做ipvs

ipvs参数

保存规则

-S

载入此前的规则:

-R

配置lvs的VIP

确保/proc/sys/net/ipv4/ip_forward 内容是1

调整RS的响应。通告级别(每一台RS都配):

配置RS的VIP(每一台RS都配)

启动RS上的httpd

编写测试文件

启动httpd

客户端验证:

RIP:80 能显示

VIP:80不能显示

负载服务器安装LVS管理工具—ipvsadm

浏览器刷新: 访问vip:80

在DR模式中是所有服务机共享一个VIP,但是在IP隧道模式中,就相当于主代理机将包经过自己打包之后,将IP转化成公网可传递的IP,并将消息经过自己又一次的打包,发送给真实服务器,真实服务器对这个请求作出响应,这样就达到一个可以跨地区的传输。并且也避免了DR模式中代理机与真实服务机必须在同一局域网的不便。

说明:

1、当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。此时报文的源IP为CIP,目标IP为VIP 。

2、PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

3、IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。此时源IP为DIP,目标IP为RIP

4、POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。此时源IP为DIP,目标IP为RIP

5、RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。此时的源IP地址为VIP,目标IP为CIP

RIP、VIP、DIP全是公网地址

RS的网关不会也不可能指向DIP

所有的请求报文经由Director Server,但响应报文必须不能进过Director Server

不支持端口映射

RS的系统必须支持隧道

LVS服务器:192.168.56.100

RS服务器:192.168.56.101,192.168.56.102,192.168.56.103

4.4.5 ### 系统配置 vim /etc/sysctl.conf

4.5.5 ### 系统配置 vim /etc/sysctl.conf

VM虚拟机怎么弄成服务器拜托了各位 谢谢

127.0.0.1是指本机,本机你又没装服务端。虚拟机和真实机你可以看成是两台电脑,它们的IP等是不同的。桥接模式下如果你不能过路由器的话要手工设置IP,且虚拟机和真实机的IP要在同一网段。比喻你的真实机的IP可以设成192.168.1.2 虚拟机的设成192.168.1.3 ,你登陆游戏时,登陆器的IP应该雨填虚拟机的IP,即192.168.1.3

虚拟机的IP地址怎么设置?

虚拟机的IP地址设置方法:单击“虚拟机”→“设置”→“以太网”,然后选择连接方式。

1.bridge(桥接): 将虚拟机网卡(本地连接)的IP地址和真实主机要设在同一IP段,其余与主机相同,这种情况适合局域网,而且网内没有特别限制的情形下使用,也适合与真实主机或局域网内主机进行网络共享。如果ADSL单机拨号用户使用这个模式的话,要登录互联网,先得断开真实主机的ADSL连接,再在虚拟机系统建立ADSL拨号连接,并使用ADSL线路的帐号和密码登录才可以上网。即虚拟机与真实主机不能同时上网。

2.nat :这种模式下虚拟机系统经过虚拟机网络的特别转换,共享真实主机的IP上网。这个方式比较适合于ADSL单机拨号用户,真实主机拨号上网后,虚拟机系统也同时可以上网了。

3.host-only (仅主机):这钟情况只能实现虚拟机主机通信,但是虚拟机互联网无法通信。

本地主机客户端怎么访问VMware虚拟机里的服务器?

对于VM虚拟机

如果需要从“本地主机”访问虚拟机的服务器,直接使用Host-Only联网,

然后查看虚拟机的ip,例如192.168.53.128。

虚拟机安装有web服务器,直接在 主机浏览器输入:192.168.53.128/ 即可访问。

至于其他ftp、ssh、proxy等也可以直接使用,不需要其他设置。

--------------------------------------------------

如果需要从“外网”访问虚拟机的服务器,一般使用NAT联网,

然后再虚拟机网络里面选“高级设置”,填写端口映射列表。

-------------------------------------------------

当然,以上两种情况都可以直接使用Bridge联网,只是解决方案太过麻烦。

由于自身的网络环境,如城域adsl、小区宽带、校园网、静态ip,还有端口限制、多网卡限制等。

这些都可能导致虚拟机联网异常,或者某些服务不能正常使用。

故一般网络实验采用前两种。

虚拟服务器怎么设置

1. 检查网站域名是否为您服务器的IP地址。

2. 请检查服务器是否开启了,可以在局域网内使用其他的计算机访问一下您的服务器,确认服务器是否开启,并能成功访问。

3.

请您检查您是否映射了服务器所需的所有端口,有可能没有完全设置访问服务器所需的端口,导致访问失败。您可以通过开启“DMZ主机”来检测一下,是否端口没有映射完全。若开启DMZ主机后,能正常访问服务器,则可能是端口添加不完全。如网络摄像机及特殊的应用软件等,如果您不清楚通讯的端口,可先尝试DMZ主机以确认是否可以使用,如果可以,则建议您咨询软件提供商。

4. 路由器上是否设置了“防火墙”,是否将服务器通信的端口过滤,导致访问失败。

5.

关闭内网服务器主机的防火墙,因本地网络为信任区域,防火墙并不会阻止本地网络的访问,若访问源地址为外网地址(非信任区域地址),则可能会被防火墙拦截而无法访问。

6. 内网服务器是否是基于80端口的web服务器,如果是web服务器,需要修改路由器远程管理的端口为非80端口,避免两者之间的冲突。

7. 检查虚拟服务器是否映射成功一定要从外网进行访问,不要从内网用WAN口IP去访问,这样在测试的时候是成功的,但实际外网并不能成功访问。

8.

服务商将相应端口屏蔽:在路由器WAN口接一台电脑模拟内外网环境,若WAN口所接电脑可以正常访问内网服务器,但在Internet上无法访问,则可能是服务器将相应端口屏蔽导致虚拟服务器无法访问(如2009年12月起,国家工信部要求运营商屏蔽所有个人宽带线路的80端口)。

9.

确认您的内网服务器可以在NAT环境下应用。宽带路由器一般都是基于NAT原理,请向您的软件服务商/设备提供商咨询,该软件/设备是否支持在NAT设备下的访问。

华普在线小李为您解答

路由器里虚拟服务器怎么设置

你好,虚拟服务器在另外一个路由器上也叫做“端口映射”功能,就是可以把你局域网其中一些主机提供的特定的服务端口号给映射到外网,然后通过外网IP地址加端口号来访问局域网对应的主机,举个例子说,比如你要把局域网一台192.168.1.100的电脑的远程桌面开启在外网可以访问到,那这里,服务端口号就填3389(远程桌面端口号默认为3389),IP地址就填192.168.1.100,协议可以选all,状态选生效,这样激外网直接通过路由器WAN口的IP地址或者动态域名直接访问远程桌面服务。

提供虚拟机服务的服务器配置

5台虚拟机,每台1G内存,虚拟机使用5G内存,建议服务器内存为8G。

建议:

1、CPU:2个4核CPU,至少要2个双核的CPU;

2、内存:8G;

3、硬盘:虚拟机所需总空间X2+100G;

虚拟机架设传奇服务端怎么设置IP

之前我弄过,好像设成同意网段在用虚拟机IP就行了,网上有教程来着

怎么在物理服务器上设置虚拟服务器

方法有很多,推荐你个比较简单,易操作的虚拟服务器管理软件:VMware

一台物理服务器可运行多少个虚拟机最合适

答:这个具体取决于你的物理服务器的硬件配置,以及虚拟机的资源消耗情况来定。没有固定的算法。但是一般会有几个限制:1. 内存内存基本上是一个硬限制。物理服务器的内存肯定是有限的。例如,一台服务器有8 core, 8G内存,通常hypervisor会占用512M内存,大概还剩下7.5G内存,假设每个虚拟机的配置是1 core cpu, 1G内存,那么在此机器上最多可以运行7个这样的虚拟机。 再创建新的虚拟机时,就会报错说内存不够。 在此情况下,每个虚拟机在满负载情况下最多可以拥有1个cpu core的运算能力,1G的内存空间。当然,现在的hypervisor基本上都支持over-mit的功能,也就是说,如果你的内存只有8G,但是设定一定比例的overmit,例如50%,那么你可以最多分出去12G内存。还是上面那个例子,如果设定overmit为50%,那么最多可以创建11个虚拟机(1core,1Gmem)。 在服务器虚拟化方面,建议overmit设置的不要太高,一般20%。在桌面虚拟化方面,可以将overmit设置到50%.2. 网卡如果服务器只有一个网卡,激有虚拟机的网络流量都是通过一块网卡出去,虚拟机越多,每个虚拟机可以使用的带宽就会越少,这个是需要综合考虑。例如使用多个网卡等。3. CPUCPU资源基本上都是采用时分复用,也就是时间片的方式来轮询的。4. 磁盘I/O是本地磁盘还是网络磁盘?如果是网络磁盘,是使用的iSCSI还是光纤?不同的情况,负载是不一样的。一般一台服务器上能跑多少个虚拟机,需要综合考虑物理服务器,虚拟机负载等方面的整体情况,再来计算。没有一个固定的公式。

在服务器上面怎么设置虚拟机IP?(服务器是静态IP)

wolfhen帮你进行专业解答:

虚拟机要通过真实机上网有以下四种方法:

1,直接桥接,虚拟机的IP与真实机(你的服务器)设在同一个网段,而DNS,网关可以与真实机的设成一样。

2,NAT:虚拟机的IP设成自动获得,而DNS设成与真实机一样,就可以上网。

3,host-only上网:这方法复杂一些,首先要把你的真实网卡给共享给VMnet1,然后VMnet1的IP自动变为192.168.0.1,接着你把你的虚拟机的IP设为192.168.0.*,网关为192.168.0.1,DNS设成真实机的DNS。就可以上网。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/479901.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-08
下一篇2023-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存