LVS简记

发表于 2023-11-06  230 次阅读


什么是集群

一组通过高速网络互联的计算组,并以单一系统的模式加以管理

将很多服务器集中起来一起,提供同一种服务,在客户端看来就像是只有一个服务器

可以在付出较低成本的情况下获得性能、

可靠性、灵活性方面的相对较高的收益

集群的目的

       提高性能

              如计算密集型应用,如:天气预报、核试验模拟

       降低成本

              相对百万美元及的超级计算机,价格便宜

       提高可扩展性

              只要增加集群节点即可

       增加可靠性

              多个节点完成相同功能,避免单点失败

集群分类

       高性能计算集群HPC

              通过以集群开发的并行应用程序,解决负载的科学问题

       负载均衡(LB)集群

              客户端负载在计算机集群中尽可能平摊

       高可用(HA)集群

              避免单点故障,当以个系统发生故障时,可以快速迁移

去IOE(IBM'Oracle'emc)

  高科用 负载均衡 集群

       squid squid

       nginx nginx

       web web web

        memcached

       mysql mysql

F5

LVS项目介绍

liunx虚拟服务器(LVS)由章文嵩读博士创建

LVS可以实现高可用、可伸缩的Web、Mail、Cache和Media等网络服务

最终目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群

LVS集群组成

前端:负载均衡层

       由一台或多台负载高度器

中间:

低端:

LVS术语

       LB Direcot :调度器服务器(负载均衡器) 将负载均衡分发到Real Server 服务器

       RS Real Server :真实服务器 真正提供应用服务的服务器

       VIP:虚拟IP

       RIP:真实IP

       DIP:

LVS工作模式

       NAT模式

       (Virtualserver via Netwrok address translation VS/NAT)

              通过网络地址转换的方法来实现调度的。

              首先负载均衡器(LB)收到客户端请求数据包时(请求目的IP为VIP),根据调度算法决定将请求发送给那个后端的RS。

              然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实IP(RIP),这样真实服务器(RS)就能接收到客户的请求数据包了

              真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

原理图简述:

1)客户端请求数据,目标IP为VIP

2)请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。

3)数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。

4)收到RS的返回后的数据,根据连接HASH表修改源地址VIP&目标地址CIP,及对应端口80.然后数据就从LB出发到达客户端。

5)客户端收到的就只能看到VIP\DIP信息。

NAT模式优缺点:      

1、NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多之能10-20台节点

2、只需要在LB上配置一个公网IP地址就可以了。

3、每台内部的节点服务器的网关地址必须是调度器LB的内网地址。

4、NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

   TUN模式

       (Virtual server via ip tunneling)

采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。

为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实服务器。

真实的服务器将响应处理后的数据直接返回给客户端。

这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍

              它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址.

              而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理.

              并且直接把包通过自己的外网地址发送给客户不用经过LB服务器

原理图过程简述:

1)客户请求数据包,目标地址VIP发送到LB上。

2)LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。

3)RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。

4)响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址。(RS节点服务器需要在本地回环接口配置VIP,后续会讲)

RS要暴露在公网

       DR模式

Virtual server via direct routing (vs/dr)

              DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户

              同tun模式一样,dr模式可以极大的提高集群系统的伸缩性

              而且dr模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求

              但是要求调度器lb与真实服务器rs都有一块网卡连接到同一物理网段上,必须在同一个局域网环境

              dr模式是互联网使用比较多的一种模式

DR模式原理过程简述:

VS/DR模式的工作流程图如上图所示,它的连接调度和管理与NAT和TUN中的一样,它的报文转发方法和前两种不同。DR模式将报文直接路由给目标真实服务器。在DR模式中,调度器根据各个真实服务器的负载情况,连接数多少等,动态地选择一台服务器,不修改目标IP地址和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。然后再将修改的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器的MAC地址,并且又在同一个局域网。那么根据局域网的通讯原理,真实复位是一定能够收到由LB发出的数据包。真实服务器接收到请求数据包的时候,解开IP包头查看到的目标IP是VIP。(此时只有自己的IP符合目标IP才会接收进来,所以我们需要在本地的回环借口上面配置VIP。另:由于网络接口都会进行ARP广播响应,但集群的其他机器都有这个VIP的lo接口,都响应就会冲突。所以我们需要把真实服务器的lo接口的ARP响应关闭掉。)然后真实服务器做成请求响应,之后根据自己的路由信息将这个响应数据包发送回给客户,并且源IP地址还是VIP。

DR模式小结:

1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的地址仍然是VIP地址。

2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)

3、因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面

4、RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。

5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就可以。

6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

官方三种负载均衡技术比较总结表:

工作模式VS/NATVS/TUNVS/DR
Real  server(节点服务器)Config dr gwTunnelingNon-arp device/tie vip
Server NetworkPrivateLAN/WANLAN
Server number(节点数量)Low 10-20High 100High 100
Real server gatewayLoad balanceOwn routerOwn router
优点地址和端口转换Wan环境加密数据性能最高
缺点效率低需要隧道支持不能跨域LAN

负载均衡调度算法

       LVS目前实现了10种调度算法

       常用调度算法有4种

              轮循(Round Robin)

              加权轮循(Weighted Round Robin)

              最少连接(Least Connections)

              加权最少轮循

              源地址散列

              目标地址散列

效率低需要隧道支持不能跨域LAN

最好参考此文章:http://www.linuxvirtualserver.org/zh/lvs4.html

Lvs的调度算法决定了如何在集群节点之间分布工作负荷。当director调度器收到来自客户端访问VIP的上的集群服务的入站请求时,director调度器必须决定哪个集群节点应该处理请求。Director调度器用的调度方法基本分为两类:

固定调度算法:rr,wrr,dh,sh

动态调度算法:wlc,lc,lblc,lblcr

算法说明
rr轮询算法,它将请求依次分配给不同的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差不多的情况
wrr加权轮训调度,它将依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
Wlc加权最小连接数调度,假设各台RS的全职依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS
Dh目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得需要的RS
SH源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS
Lc最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS.
Lblc基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS调度算法的生产环境选型:

1、一般的网络服务,如http,mail,mysql等常用的LVS调度算法为:

a.基本轮询调度rr

b.加权最小连接调度wlc

c.加权轮询调度wrc

2、基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache

3、源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一。

实际适用中这些算法的适用范围很多,工作中最好参考内核中的连接调度算法的实现原理,然后根据具体的业务需求合理的选型。

安装前准备

       LVS的IP负载均衡技术是通过IPVS模块实现的

       IPVS模块已成为Linux组成部分

       grep -i ‘ipvs’ /boot/config-2.6.32-358.el6.x86_64

              # IPVS transport protocol load balancing support

              # IPVS scheduler

              # IPVS application helper

       安装ipvsadm

              yum -y install ipvsadm

配置mysql服务器

       1.yum -y install mysql mysql-server

       service mysql start

       chkconfig mysql on

       msyql> grant on *.* to zhn@ip identified by xxx

三配置web服务器

       1.在两台web服务器上安装并启动

              yum -y install heepd php php-mysql

              service httpd start

       2.在第一台web服务器安装并配置

              cd /var/www/html/bbs

              chmod 777 `awk '{print $1}' ../prm.txt`

       3.准备第二台服务器

              将第一台web的bbs目录打包拷贝到第二台上

四、准备一台虚拟机,用于调度器

       1、初始配置

              node5:node5.xkops.com 192.168.4.50/24

       2.配置YUM,使用光盘的LoadBalancer仓库

       3.安装

              yum -y install ipvsadm

       4.配置web服务器网关指向调度器内部网卡IP

       5.配置调度器,为它配置201.1.1.4/24,并打开ip_forward

              vim /etc/sysctl.conf

                     net.ipvs.ip_forward=1

              sysctl -p

              cat /proc/sys/net/ipv4/ip_forward

              ipvsadm -A -t 201.1.1.4:80 -s rr

              ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.2 -m

              ipvsadm -a -t 201.1.1.4:80 -r 192.168.4.3 -m -w 2

              ipvsadm -Ln

              ipvsadm -E -t 201.1.1.50:80  -s wrr

              ipvsadm -d -t 201.1.1.50:80 -r 192.168.4.3

       /etc/init.d/ipvsadm save

五、配置LVS FR配置

       1.把调度器201.1.1.4删除

              将ifcfg-eth2的IP地址和子网删除,重启网络

       2.在调度器eth0上配置vip 192.168.4.100

              cp /etc/sysconfig/network-scripts/ifcfg-eth0{,:0}

              vim /etc/sysconfig/network-scripts/ifcfg-eth0:0修改

                     DEVICE=eth0:0

                     ipaddr=192.168.4.100

       3.在两台web服务器的lo上配置VIP192.168.4.100/32

              cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}

              vim /etc/sysconfig/network-scripts/ifcfg-lo:0

                     DEVICE=lo:0

                     IPADDR=192.168.4.100

                     NETMASKE=255.255.255.255

                     NETWORK=192.168.4.100

                     BROADCAST=192.168.4.100

       sysctl -a | grep arp

              ehco "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf

              ehco "net.ipv4.conf.lo.arp_ignore = 1 " >> /etc/sysctl.conf

              ehco "net.ipv4.conf.all.arp_announce = 2 " >> /etc/sysctl.conf

              ehco "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

       5.配置lvs规则

              ipvsadm -A -t 192.168.4.100:80 -s wlc

              ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.30

              ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.40 -g -w 2

       6.测试,物理主机上可以运行

              ab -n 1000 -c 10 http://192.168.4.100/

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

scanz个人博客