(一)lvs负载均衡详解--lvs-DR模式配置

​​​​​​(二)lvs负载均衡详解--lvs-NAT模式配置_W1124824402的博客-CSDN博客

(三)lvs负载均衡详解--lvs-DR+keepalived配置_W1124824402的博客-CSDN博客

(四)lvs负载均衡详解--mysql+keepalived配置,yum下载mysql详解、mysql集群高可用_W1124824402的博客-CSDN博客

LVS 介绍

(1)LVS 是Linux Virtual Server的简称,也就是 Linux 虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,因此性能较高。

(2)LVS软件作用:通过LVS提供的负载均衡技术实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

2、LVS 优势与不足

1、优势

高并发连接:LVS基于内核工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用。

支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

2、不足

工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。

  1. LVS 核心组件和专业术语

1、核心组件

LVS的管理工具和内核模块 ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;

ipvs:工作于内核上的程序,可根据用户定义的集群实现请求转发;

2、专业术语

VS:Virtual Server #虚拟服务

Director, Balancer #负载均衡器、分发器

RS:Real Server #后端请求处理服务器

CIP: Client IP #用户端IP

VIP:Director Virtual IP #负载均衡器虚拟IP

DIP:Director IP #负载均衡器真实IP

RIP:Real Server IP #后端请求处理服务器IP

(一)lvs负载均衡详解--lvs-DR模式配置_第1张图片

LVS负载均衡四种工作模式

LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器/负载均衡器(IP负载均衡,他修改的是IP地址)  --利用三层功能

LVS/DR  :直接路由模式,只有进站的数据流量经过分发器/负载均衡器(数据链路层负载均衡,因为他修改的是目的mac地址)--利用二层功能mac地址

LVS/TUN: 隧道模式,只有进站的数据流量经过分发器/负载均衡器

LVS/full-nat:双向转换,通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

LVS 四种工作模式原理、以及优缺点比较

NAT模式(LVS-NAT) 原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,转发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的VIP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。 缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

直接路由(Direct Routing)模式(LVS-DR) 原理:负载均衡器和RS都使用同一个IP对外服务。但只有DB对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DB,而DB收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。 优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与LVS-TUN相比,LVS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。 缺点:(不能说是缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

3、IP隧道(Tunnel)模式(LVS-TUN)  

​    原理:互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项

​    优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理海量的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

​    缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

4、FULL-NAT模式(双向转换模式)

原理:客户端对VIP发起请求,Director接过请求发现是请求后端服务。Direcrot对请求报文做full-nat,把源ip改为Dip,把目标ip转换为任意后端RS的rip,然后发往后端,rs接到请求后,进行响应,相应源ip为Rip目标ip还是DIP,又内部路由路由到Director,Director接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP

请求使用DNAT,响应使用SNAT

lvs-fullnat(双向转换)

通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发:

cip:vip dip:rip

rip:dip vip:cip

四者的区别

lvs-nat与lvs-fullnat:请求和响应报文都经由Director

lvs-nat:RIP的网关要指向DIP

lvs-fullnat:双向转换

lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client

lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发

lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

LVS ipvsadm 命令的使用

LVS-server安装lvs管理软件

yum -y install ipvsadm

程序包:ipvsadm(LVS管理工具)

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file

配置文件:/etc/sysconfig/ipvsadm-config

命令选项

-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录

-t #表示为tcp服务

-u #表示为udp服务

-s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc

例:ipvsadm -A -t 192.168.1.2:80 -s wrr

-a --add-server  #在服务器表中添加一条新的真实主机记录

-t --tcp-service #说明虚拟服务器提供tcp服务

-u --udp-service #说明虚拟服务器提供udp服务

-r --real-server #真实服务器地址

-m --masquerading #指定LVS工作模式为NAT模式

-w --weight #真实服务器的权值

-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)

-i --ip #指定LVS的工作模式为隧道模式

-p #会话保持时间,定义流量呗转到同一个realserver的会话存留时间

例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1

-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。

-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。

-C -clear #清除内核虚拟服务器表中的所有记录。

-R -restore #恢复虚拟服务器规则

-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式

-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录

-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录

-L|-l –list #显示内核虚拟服务器表

--numeric, -n:#以数字形式输出地址和端口号

--exact: #扩展信息,精确值

--connection,-c: #当前IPVS连接输出

--stats: #统计信息

--rate : #输出速率信息

参数也可以从/proc/net/ip_vs*映射文件中查看

-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)

lvs-DR模式和lvs-NAT模式较为常用

LVS/DR 模式配置

准备 3 台纯净的虚拟机,两台 web 服务器

lvs-1 安装lvs管理软件

yum -y install ipvsadm

程序包:ipvsadm(LVS管理工具)

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file

配置文件:/etc/sysconfig/ipvsadm-config

实验说明:

1.网络使用NAT模式

2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域

3.所有节点网关均指定真实网关

三台服务器关闭防火墙和selinux

systemctl stop firewalld;setenforce 0

配置 vim /etc/hosts本地解析

(一)lvs负载均衡详解--lvs-DR模式配置_第2张图片

 scp /etc/hosts  lvs-2:/etc/hosts

 scp /etc/hosts  lvs-3:/etc/hosts

Director分发器配置

ip addr add dev ens33 192.168.11.199/32  #设置VIP

yum install -y ipvsadm   #RHEL确保LoadBalancer仓库可用

service ipvsadm start  #启动

注意:启动如果报错: /bin/bash: /etc/sysconfig/ipvsadm: 没有那个文件或目录

需要手动生成文件

ipvsadm --save > /etc/sysconfig/ipvsadm

定义LVS分发策略

-A:添加VIP

-t:用的是tcp协议

-a:添加的是lo的vip地址

-r:转发到realserverip

-s:算法

-L|-l –list #显示内核虚拟服务器表

--numeric, -n:#以数字形式输出地址和端口号

-g --gatewaying #指定LVS工作模式为直接路由器模式DR(也是LVS默认的模式)

-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式

rr:轮循

如果添加ip错了,删除命令如下:

# ip addr del 192.168.11.199 dev ens33

ipvsadm -C  #清除内核虚拟服务器表中的所有记录。

ipvsadm -A -t 192.168.11.199:80 -s rr

ipvsadm -a -t 192.168.11.199:80 -r 192.168.11.192 -g

ipvsadm -a -t 192.168.11.199:80 -r 192.168.11.193 -g  

ipvsadm -S > /etc/sysconfig/ipvsadm  #保存方式,保存到一个文件中

查看 ipvsadm -ln

(一)lvs负载均衡详解--lvs-DR模式配置_第3张图片

ipvsadm -L -n --stats    #显示统计信息

(一)lvs负载均衡详解--lvs-DR模式配置_第4张图片

1. Conns    (connections scheduled)  已经转发过的连接数

2. InPkts   (incoming packets)       入包个数

3. OutPkts  (outgoing packets)       出包个数

4. InBytes  (incoming bytes)         入流量(字节)  

5. OutBytes (outgoing bytes)         出流量(字节)

ipvsadm -L -n --rate #看速率

(一)lvs负载均衡详解--lvs-DR模式配置_第5张图片

1. CPS      (current connection rate)   每秒连接数

2. InPPS    (current in packet rate)    每秒的入包个数

3. OutPPS   (current out packet rate)   每秒的出包个数

4. InBPS    (current in byte rate)      每秒入流量(字节)

5. OutBPS   (current out byte rate)      每秒出流量(字节)

先配置好网站服务器,测试所有RS #为了测试效果,提供不同的页面(lvs-1、lvs-2都操作)

yum install -y nginx

192.168.11.192 服务器 echo "llvision-YYds" >> /usr/share/nginx/html/index.html

192.168.11.193 服务器 echo "llvision-YYDS" >> /usr/share/nginx/html/index.html

两台机器都安装,按顺序添加不同的主机名以示区分

ip addr add dev lo 192.168.11.199/32   #在lo接口上绑定VIP

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包

systemctl start nginx

systemctl enable  nginx

因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.

解决:

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

arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)

echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce

使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的

测试(修改后端nginx服务器的长连接)

 vim /etc/nginx/nginx.conf

(一)lvs负载均衡详解--lvs-DR模式配置_第6张图片

访问设置的vip   192.168.11.199下面看一下测试效果 

(一)lvs负载均衡详解--lvs-DR模式配置_第7张图片

(一)lvs负载均衡详解--lvs-DR模式配置_第8张图片

你可能感兴趣的:(负载均衡,服务器,网络,运维,lvs)