使用 LVS 实现负载均衡

使用 LVS 实现负载均衡,第1张

在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发:

LVS 是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是由章文嵩博士发起的自由软件项目,现在LVS已经是 Linux标准内核的一部分,从Linux24内核以后,已经完全内置了LVS的各个功能模块

LVS是四层负载均衡,也就是说建立在OSI模型的第四层——传输层之上,即熟悉的TCP/UDP,因为LVS是四层负载均衡,因此它相对于其它高层负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。

CIP:client ip 客户端的ip
VIP:Virtual IP LVS实例IP,一般是暴露在公网中的地址;向外部直接面向用户请求,作为用户请求的目标的IP地址
DS:Director Server 指的是前端负载均衡器节点
RS:Real Server 后端真实的工作服务器

实验在docker 中进行:

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

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

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

你要保持数据的一致性,需要一个共享存贮。共享存贮包括网页,脚本,数据库等数据。这样,当用户连接到不同的服务器时,可以看到相同的内容。也有利于管理员的维护。其实,没有共享存贮也可能实现LVS,但是,你要手工进行数据复制同步,管理负担会很重。

共享存贮,可以通过配置安装有FREENAS的服务器来实现,也可购买支持ISCSI等协议的的网络存贮设备来实现。

至于要不要双网卡,也是看你的性能要求了,理论上,只要通讯正常,单网卡也是可以的。

以下复制章文嵩的LVS原理,请见谅。

一般来说,LVS集群采用三层结构,其体系结构如图1所示,三层主要组成部分为:

•负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

•服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

•共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

调度器是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。在IP负载均衡技术中,需要服务器池拥有相同的内容提供相同的服务。当客户请求到达时,调度器只根据服务器负载情况和设定的调度算法从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度;当这个请求的其他报文到达,也会被转发到前面选出的服务器。在基于内容请求分发技术中,服务器可以提供不同的服务,当客户请求到达时,调度器可根据请求的内容选择服务器执行请求。因为所有的 *** 作都是在Linux *** 作系统核心空间中将完成的,它的调度开销很小,所以它具有很高的吞吐率。

服务器池的结点数目是可变的。当整个系统收到的负载超过目前所有结点的处理能力时,可以在服务器池中增加服务器来满足不断增长的请求负载。对大多数网络服务来说,请求间不存在很强的相关性,请求可以在不同的结点上并行执行,所以整个系统的性能基本上可以随着服务器池的结点数目增加而线性增长。

共享存储通常是数据库、网络文件系统或者分布式文件系统。服务器结点需要动态更新的数据一般存储在数据库系统中,同时数据库会保证并发访问时数据的一致性。静态的数据可以存储在网络文件系统(如NFS/CIFS)中,但网络文件系统的伸缩能力有限,一般来说,NFS/CIFS服务器只能支持3~6个繁忙的服务器结点。对于规模较大的集群系统,可以考虑用分布式文件系统,如AFS[1]、GFS[23]、Coda[4]和 Intermezzo[5]等。分布式文件系统可为各服务器提供共享的存储区,它们访问分布式文件系统就像访问本地文件系统一样,同时分布式文件系统可提供良好的伸缩性和可用性。此外,当不同服务器上的应用程序同时读写访问分布式文件系统上同一资源时,应用程序的访问冲突需要消解才能使得资源处于一致状态。这需要一个分布式锁管理器(Distributed Lock Manager),它可能是分布式文件系统内部提供的,也可能是外部的。开发者在写应用程序时,可以使用分布式锁管理器来保证应用程序在不同结点上并发访问的一致性。

负载调度器、服务器池和共享存储系统通过高速网络相连接,如100Mbps交换网络、Myrinet和Gigabit网络等。使用高速的网络,主要为避免当系统规模扩大时互联网络成为整个系统的瓶颈。

Graphic Monitor是为系统管理员提供整个集群系统的监视器,它可以监视系统的状态。Graphic Monitor是基于浏览器的,所以无论管理员在本地还是异地都可以监测系统的状况。为了安全的原因,浏览器要通过>

参考:

>

采用Nat技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务器应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

实验规划:

(1)将物理机上的VMnet1网卡的ip设置为200168104,子网掩码设置为2552552550

(2)为Lvs服务器配置一块网卡eth0,网络连接设置为VMnet1,设置IP地址:ifconfig eth0 200168101

(3)为两台真实服务器配置一块网卡,网络连接设置为VMnet1,设置IP地址:ifconfig eth1 200168102和ifconfig eth1 200168103

(4)为Lvs服务器和两台真实服务器都配置一个tunl0网卡,配置为单独的网段:ifconfig tunl0 2001681010 netmask 255255255255 up,route add -host 2001681010 dev tunl0

(5)Lvs ip-tun服务器脚本:

ipvsadm -C

ipvsadm -A -t 2001681010:80 -s rr(-t:采用tcp协议;-s:模式参数;rr:采用轮叫算法)

ipvsadm -a -t2001681010:80 -r 200168102 -i(-r:真实服务器ip;-i:ip-tun模式)

ipvsadm -a -t2001681010:80 -r 200168103 -i

(6)真实服务器脚本:

echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注:目前只有Unix/Linux版本的 *** 作系统才具备ip-tun网卡

这个架构我完全无法理解,为毛要2台lvs,一般2台lvs是为了分流或高可用,好吧我暂时这么理解他的意图,1台nginx是作为反向代理,简单理解就是在客户端看来服务器端就是一台机器,防止其他人员了解你的后端架构和处理流程,nginx也可以减轻web的资源消耗主要是内存和io,也可以配置当成日志服务器,减轻web的压力,但是他后端就一台web啊,用这个架构为毛啊,好吧我暂时理解为他是为了以后方便拓展架构;1台dns服务器,为毛啊,无法理解,如果只是为了网站本身需要完全可以自解析,直接写hosts不是更方便,好吧,其实架设dns服务器是个好习惯,但是在资源有限的前提下,我认为不如把dns换成web,资源利用率更高;lvs和nginx都有负载均衡的作用,小架构1台nginx完全可以搞定,2台lvs纯属浪费;至于123456的问题,nginx配置,推荐《决战nginx》高性能web服务器详解与运维;至于架构原理,推荐《构建高可用linux服务器》余洪春
简单说下流程:正常应该是,客户端包先到lvs,lvs做了高可用,lvs分发给nginx,nginx查询dns后分发给web


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13483634.html

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

发表评论

登录后才能评论

评论列表(0条)

保存