目录

负载均衡

一.集群功能分类

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 upiptables -Fipvsadm -A -t ${vip}:${port} -s $scheduleripvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1echo "The VS Server is Ready!";;
stop)ipvsadm -Cifconfig $iface downecho "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_ignoreecho 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announceecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceifconfig $dev $vip netmask $mask broadcast $vip uproute add -host $vip dev $devecho "The RS Server is Ready!";;
stop)ifconfig $dev downecho 0 > /proc/sys/net/ipv4/conf/all/arp_ignore3echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 0 > /proc/sys/net/ipv4/conf/all/arp_announceecho 0 > /proc/sys/net/ipv4/conf/lo/arp_announceecho "The RS Server is Canceled!";;
*) echo "Usage: $(basename $0) start|stop"exit 1;;
esac

网站高并发解决方案LVS相关推荐

  1. 大型网站高并发解决方案——集群

    文章目录 大型网站高并发解决方案--集群 前言 一.集群 1.集群的分类 2.负载均衡集群(LB) (1)负载均衡集群结构 (2)负载均衡设备分类 3.高可用集群(HA) 4.高性能运算集群(HPC) ...

  2. 一个WEB网站高并发量的解决方案

    一个WEB网站高并发量的解决方案 参考文章: (1)一个WEB网站高并发量的解决方案 (2)https://www.cnblogs.com/dotnetHui/p/7943605.html 备忘一下.

  3. php大流量网站解决,PHP 大型网站 高并发大流量解决方案

    标签:htm   指定   配置   热备   耗资源   负载均衡集群   session管理   redis   mod 网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验 ...

  4. 高并发解决方案--负载均衡

    高并发解决方案--负载均衡 1,什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首 ...

  5. 高并发解决方案 超详细!!!

    高并发解决方案 1. 高并发和大流量解决方案 高并发解决方案案例 流量优化:防盗链处理 前端优化:减少HTTP请求,合并css或js,添加异步请求,启用浏览器缓存和文件压缩,CDN加速,建立独立图片服 ...

  6. 高并发编程(四)高并发解决方案从前端到数据库

    1. 高并发和大流量解决方案 高并发架构相关概念 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理 ...

  7. 搞懂分布式技术30:高并发解决方案——提升高并发量服务器性能解决思路

    高并发解决方案--提升高并发量服务器性能解决思路 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很 ...

  8. 网站高并发优化性能调优总结

    最近在对PHP网站高并发高性能有所领悟,今天写一篇关于这方面的文章.今天用我的测试站点:http://zhimo.yuanzhumuban.cc/来讲解实例. 支模网整体开发到上线为10个月左右,后端 ...

  9. 大型网站高并发——服务器负载均衡设计

    大型网站高并发--服务器负载均衡设计 方案一:直接路由方式(LVS-DR) 硬件配置:一台负载均衡器,两台或则三台TOMCAT服务器 WEB服务器配置:Linux + tomcat+ WEB应用程序( ...

最新文章

  1. Windows Server 2008 R2 配置笔记,密码设置为任意长度,远程桌面终端连接数的设置...
  2. vue避免重新渲染_小白也能懂的VUE的生命周期探寻
  3. 修改otrs notification master邮件通知地址和名称
  4. ajax 取值 返回map_springboot|前端发ajax请求到后台Controller及常见的坑
  5. [BUUCTF]PWN——ciscn_2019_es_2(栈劫持)
  6. matlab 三维模型怎么导入ansys,Ansys怎么导入模型?Ansys导入模型的方法
  7. 第二章作业-第3题-万世想
  8. android string.xml中%1$s、%1$d等的用法
  9. linux内核函数kmalloc,Linux_Linux平台上几个常见内核内存分配函数,* kmallocPrototype:#incl - phpStudy...
  10. curl post 日志_curl命令发送Post请求
  11. 三星Galaxy A73显示Geekcbench:或搭载骁龙778G
  12. 浅谈各种连接池中连接数量的设置
  13. python列表功能默写_python基础学习——列表list的功能
  14. idea解决tomcat控制台中文乱码问题
  15. 窥探Swift之新添数据类型元组与可选值
  16. 查询结果做缓存的例子
  17. tcp/ip通信第5期之客户机端程序
  18. python读取npy文件
  19. linux 安装qq2014,Ubuntu14.04安装wine QQ
  20. 读书笔记004:王阳明语录

热门文章

  1. Java 高并发解决方案(电商的秒杀和抢购)
  2. Mac安装Command Line Tools
  3. 《大湖》 by 周嘉宁
  4. for语句中break运用
  5. linux 端口通信,AFDX端系统通信端口在linux下的实现
  6. C++经典算法题-老鼠走迷官(二)
  7. 名帖169 虞世南 行草《疲朽帖》
  8. 用函数判断是否为水仙花数
  9. js调用后台方法与后台调用js方法
  10. c语言 如何防止野指针,C语言如何防止野指针