网站高并发解决方案LVS

目录

负载均衡

一.集群功能分类

1.LB load balance

2.HA high available

二.负载均衡

1.负载均衡的主要方式

2.四层负载和七层负载

三.LVS概述

四.LVS工作模式

 NAT转发模式

DR直接路由模式

TUN-IP隧道模式

***模式对比:

*轮训算法 

1.Fixed Scheduling Method  静态调服方法

2.Dynamic Scheduling Method 动态调服方法

LVS-NAT实战案例

拓扑图:

 地址分配

web1配置网站和路由

web2配置网站和路由

*LVS-NAT配置路由功能和负载策略

client测试

LVS-DR实战案例

环境

一.LVS服务器

1.LVS准备VIP和路由

2.LVS设置负载均衡条目/规则

3.LVS让配置永久生效

二.WEB集群

4.两个web上部署web服务

5.给两个web服务器的lo网卡设置子网掩码为32位vip

6.给两个web服务器设置内核参数

客户端测试

7.客户端测试

 8.命令解释大全

9.脚本配置方法


负载均衡

一.集群功能分类

1.LB load balance

负载均衡(增加处理能力),有一定高可用能力,但不是高可用集群,是以提高服务的并发处理能力为根本着眼点

软件负载均衡设备
    LVS
          LVS(四层路由设备),是由中国人章文松研发的(阿里巴巴的副总裁)根据用户请求的IP与端口号,实现将用户的请求分发至不同的主机  
    HAproxy
        haproxy:主要功能是针对http协议实现负载均衡,也可以实现tcp(mysql,smtp)等协议的负载均衡
    NGINX
        nginx:是由俄罗斯人开发的,主要功能是针对http,smtp,pop3,imap等协议实现负载均衡,只负责解析有限的七层协议
    对比
       

硬件负载均衡设备

        F5:BIG IP

型号
    F5 BIG-IP-1500
    F5 BIG-IP LTM8800
价格
    20W~100W
参数
    处理器:单CPU,
基本内存:768MB,
千兆CU端口:8个,
千兆光纤端口(迷你型SFP-GBIC):2个可选,
千兆CU端口:4个,
千兆光纤端口:2个可选

        A10

        深信服

2.HA high available

高可用集群(增加服务可用性)
高可用集群,是以提升服务的始终在线能力为着眼点,不会因为宕机而导致服务不能用。
衡量可用性:在线时间/(在线时间+故障处理时间)

二.负载均衡

实现负载均衡一般可以使用顺序、比重、流量、服务类别等进行分配,负载均衡的部署方式也分为路由和服务直接返回模式

1.负载均衡的主要方式

        http重定向

原理:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给客户浏览器,由浏览器重新进行访问。

        DNS负载均衡

原理:在DNS服务器上配置多个域名对应IP的记录。例如一个域名www.baidu.com对应一组web服务器IP地址,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上。

DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好。

        反向代理负载均衡(nginx)

原理:反向代理处于web服务器这边,反向代理服务器提供负载均衡的功能,同时管理一组web服务器,它根据负载均衡算法将请求的浏览器访问转发到不同的web服务器处理,处理结果经过反向服务器返回给浏览器

优点:部署简单,处于http协议层面。

缺点:使用了反向代理服务器后,web 服务器地址不能直接暴露在外,因此web服务器不需要使用外部IP地址,而反向代理服务作为沟通桥梁就需要配置双网卡、外部内部两套IP地址。

        IP网络层负载均衡        LVS NAT

  在网络层和传输层(IP和端口)通过修改目标地址进行负载均衡。
  用户访问请求到达负载均衡服务器,负载均衡服务器在操作系统内核进程获取网络数据包,根据算法得到一台真实服务器地址,然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后再讲数据返回回去。类似于反向服务器负载均衡。

优点:在响应请求时速度较反向服务器负载均衡要快。

缺点:如法处理更高级的请求

        数据链路层负载均衡        LVS DR

在数据链路层修改Mac地址进行负载均衡。
负载均衡服务器的IP和它所管理的web 服务群的虚拟IP一致;
负载均衡数据分发过程中不修改访问地址的IP地址,而是修改Mac地址;
通过这两点达到不修改数据包的原地址和目标地址就可以进行正常的访问。

优点:不需要负载均衡服务器进行IP地址的转换。数据响应时,不需要经过负载均衡服务器。
缺点:负载均衡服务器的网卡带宽要求较高。

2.四层负载和七层负载

所谓四层就是基于IP+端口的负载均衡,主要代表有lvs。

七层负载也称内容交换,就是基于URL等应用层信息的负载均衡,主要代表有nginx。

三.LVS概述

LVS是Linux Virtual Server,Linux虚拟服务器

LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。

框架

LB-SERVER负载均衡器
realy-server真实服务器

四.LVS工作模式

 NAT转发模式

NAT   Network Address Translation,网络地址转换

 工作原理:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标IP地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。

注意在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端

优点
    网络隔离更安全 节约IP地址
缺点:
    director很可能成为系统性能瓶颈,所有的请求director都需要处理应答
    <20优点

DR直接路由模式

 工作原理

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

特点

1,集群节点和director必须在一个物理网络内
2,RIP可以使用公网地址或私有地址
3,director仅处理入站请求,director服务器的压力比较小
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为realserver,要支持隔离arp广播

TUN-IP隧道模式

 工作原理

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

***模式对比:

*轮训算法 

1.Fixed Scheduling Method  静态调服方法

(1).RR(Round-Robin)     轮询

(2).WRR    加权轮询

调度器通过"加权轮循"调度算法,根据真实服务器的不同处理能力.来调度访问请求。这样可以保证处理能力强的服务器,处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

(3).DH     目标地址hash

(4).SH     源地址hash

2.Dynamic Scheduling Method 动态调服方法

(1).LC     最少连接

(2).WLC    加权最少连接

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

(3).LBLC   基于本地的最少连接

(4).LBLCR  带复制的基于本地的最少连接

LVS-NAT实战案例

拓扑图:

 地址分配

lvs分配了两张网卡,一直和后端的真实服务器在同一子网内,另外一张网卡暴露在外网中

client:VMNET0    192.168.0.110
LVS:  VMNET0    192.168.0.111
            VMNET2    192.168.231.128
web1:   VMNET2    192.168.231.129        提前安装httpd
web2:   VMNET2     192.168.231.130        安装httpd

web1配置网站和路由

注意网络连通性问题
#yum  install -y httpd
#systemctl  start httpd
#systemctl enable httpd
#echo   web1 >  /var/www/html/index.html
#route add -net 192.168.0.0/24 gw 192.168.231.128
    配置真实服务器的网络出口。
    -net  外部网络
    gw 网关,网络的唯一出口

web2配置网站和路由

#yum  install -y httpd
#systemctl  start httpd
#systemctl enable httpd
#echo   web2 >   /var/www/html/index.html
# route add -net 192.168.0.0/24 gw 192.168.231.128

*LVS-NAT配置路由功能和负载策略

# echo  1  > /proc/sys/net/ipv4/ip_forward        启动路由功能
# yum install -y ipvsadm                                      安装LVS
#ipvsadm   -A -t 192.168.0.111:80  -s   rr
    -A 添加一个VIP
    -t TCP协议
    -s   schedule调度
    rr  轮训策略类型
#ipvsadm  -a  -t  192.168.0.111:80 -r 192.168.231.129:80   -m
    -a  添加一个真实服务
    -r  真实服务器IP 地址
    -m    nat 模式工作
# ipvsadm  -a  -t  192.168.0.111:80 -r 192.168.231.130:80   -m

client测试

elinks   --dump   http://192.168.0.111

web1

web2    

轮换出现

LVS-DR实战案例

direct routing        直连路由模式(MAC地址)

环境

虚拟IP的设计,遵循本网段未使用的IP即可。

192.168.31.1   client   windown10
192.168.31.179   dr1    负载均衡器
                                            虚拟IP地址:192.168.31.110
192.168.31.177  rs1     web1
                                            虚拟IP地址:192.168.31.110
192.168.31.178  rs2     web2
                                            虚拟IP地址:192.168.31.110

一.LVS服务器

1.LVS准备VIP和路由

添加VIP

ifconfig ens33:0 192.168.31.110  broadcast 192.168.31.255 netmask 255.255.255.0 up

route add -host 192.168.31.110 dev ens33:0

设置路由转发

服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1                开启路由功能

net.ipv4.conf.all.send_redirects = 0        禁止转发重定向报文
net.ipv4.conf.ens33.send_redirects = 0        禁止ens33转发重定向报文
net.ipv4.conf.default.send_redirects = 0        禁止转发默认重定向报文

2.LVS设置负载均衡条目/规则

设置IPVSADM        internet protocol virtual server admin    互联网 协议 虚拟 服务器 管理器

yum -y install lvsadm

ipvsadm -C                清除所有配置

ipvsadm -A -t 192.168.31.110:80 -s rr        添加轮转规则

ipvsadm -a -t 192.168.31.110:80 -r 192.168.31.177:80 -g

ipvsadm -a-t 192.168.31.110:80 -r 192.168.31.178:80 -g

参数说明

-A 添加virtual server
-t  指定使用tcp协议
-s 指定调度策略/负载算法为rr
-a 添加realserver
-r 指定realserver是谁
-g    LVS类型DR
       LVS类型:
          -g:Gateway,DR(默认使用的类型)
          -i:ipip,TUN
          -m:masquerade(地址伪装),NAT

3.LVS让配置永久生效

# ipvsadm-save > /etc/sysconfig/ipvsadm
# systemctl enable ipvsadm

二.WEB集群

4.两个web上部署web服务

web1:

        yum -y install nginx

        echo web1 >/usr/local/nginx/htnl/index.html

        systemctl enable nginx

web2:

        yum -y install httpd

        echo web2 >/var/www/html/index.html

        systemctl enable httpd

5.给两个web服务器的lo网卡设置子网掩码为32位vip

web1:

        ifconfig lo:0 192.168.31.110/32

web2:

        ifconfig lo:0 192.168.31.110/32

6.给两个web服务器设置内核参数

web1 web2:

忽略arp响应 ,不允许收

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

为了让vip发包出去,但允许发

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

客户端测试

7.客户端测试

在网页上打开时  会出现web1  web2  不是轮训出现

ipvsadm状态测试

 8.命令解释大全

1. 管理虚拟服务
        添加一个虚拟服务192.168.1.100:80,使用轮询算法
     ipvsadm -A -t 192.168.1.100:80 -s rr
        修改虚拟服务的算法为加权轮询
     ipvsadm -E -t 192.168.1.100:80 -s wrr
        删除虚拟服务
     ipvsadm -D -t 192.168.1.100:80

2.管理真实服务

把-A  换为 -a

3. 查看统计
        查看当前配置的虚拟服务和各个RS的权重
     ipvsadm -Ln
        查看当前ipvs模块中记录的连接(可用于观察转发情况)
     ipvsadm -lnc
        查看ipvs模块的转发情况统计
     ipvsadm -Ln --stats  --rate

9.脚本配置方法

VS调度器配置

#!/bin/bash
#Author:why
#Date:2021-12-29
vip='172.18.0.100'
iface='eth0:1'
mask='255.255.255.255'
port='80'
rs1='10.10.0.72'
rs2='10.10.0.73'
scheduler='wrr'
type='-g'
case $1 in
start)
    ifconfig $iface $vip netmask $mask broadcast $vip up
    iptables -F
    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "The VS Server is Ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "The VS Server is Canceled!"
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

./dr-vs.sh start              #dr-vs.sh为脚本名

RS服务器配置

#!/bin/bash
#Author:why
#Date:2021-12-29
vip=172.18.68.100
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask broadcast $vip up
    route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore3
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值