LVS(Linux virual server)

1、LVS集群体系结构

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

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

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

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

2、LVS概念

·VS: Virtual Server
·RS Real Server
·CIP Client IP
·VIP: Virtual serve IP VS 外网的 IP
·DIP: Director IP VS 内网的 IP
·RIP: Real server IP
·访问流程: CIP <--> VIP == DIP <--> RIP

3、lvs集群的类型

·lvs-nat : 修改请求报文的目标IP, 多目标 IP DNAT
·lvs-dr 操纵封装新的 MAC 地址
·lvs-tun : 在原请求IP 报文之外新加一个 IP 首部
·lvs-fullnat 修改请求报文的源和目标 IP

(1)nat模式

LVS NAT原理:用户请求LVS到达director,director将请求的报文的目的IP改为RIP,同时将报文的目标端口也改为realserver的相应端口,最后将报文发送到realserver上,realserver将数据返回给director,director再把数据发送给用户

LVS NAT特性:NAT模式修改的是目的ip,直接走的是switch不需要修改mac地址,所以VIP和RIP不需要在同一个网段内
NAT的包的进出都需要经过LVS,所以LVS可能会成为一个系统的瓶颈问题

A、lvs-nat部署

lvs主机添加一块仅主机的网卡
 
对ens33ens35进行修改配置
lvs中打开内核路由功能并且添加参数
Webserver1和webserver2都设置网卡为仅主机模式
Webserver1和Webserver2都要修改到ens33下
webserver1,webserver2都安装下载httpd服务
yum install httpd -y

最终在LVS中检测

B、ipvsadm命令的使用

LVS中安装LVS软件
ipvsadm命令参数
-a # 添加 realserver
-e # 更改 realserver
-t #tcp 协议
-u #udp 协议
-f # 火墙 标签
-r #realserver 地址
-g # 直连路由模式
-i #ipip 隧道模式
-m #nat 模式
-w # 设定权重
-Z # 清空计数器
-C # 清空 lvs 策略
-L # 查看 lvs 策略
-n # 不做解析
--rate :输出速率信息

(2)DR模式

a.DR;Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MACDIP所在的接口的MAC,目标MAC是某挑选出的RSRIP所在接口的MAC地址;源 IP/PORT,以及目标IP/PORT均保持不变

b.LVSDR原理:用户请求LVS到达director,director将请求的报文的目的MAC地址改为后端的realserver的MAC地址,目的IP为VIP(不变),源IP为client IP地址(不变),然后director将报文发送到realserver,realserver检测到目的地址为自己本地的VIP,如果在同一网段,将请求直接返回给用户,如果用户跟realserver不在同一个网段,则需要通过网关返回给用户

DR 模式中, RS 接收到访问请求后不需要回传给 VS 调度器,直接把回传数据发送给 client ,所以 RS vs 上都要有vip
c.DR 模式的特点
1.Director 和各 RS 都配置有 VIP
2. 确保前端路由器将目标 IP VIP 的请求报文发往 Director
3. 在前端网关做静态绑定 VIP Director MAC 地址
4.RS RIP 可以使用私网地址,也可以是公网地址; RIP DIP 在同一 IP 网络;
5.RIP 的网关不能指向 DIP ,以确保响应报文不会经由 Director
6.RS Director 要在同一个物理网络
7. 请求报文要经由 Director ,但响应报文不经由 Director ,而由 RS 直接发往 Client
8. 不支持端口映射(端口不能修改)
 d.解决vip响应问题
DR模型中各主机上均需要配置VIP,解决地址冲突的方式有三种:
(1)在前端网关做静态绑定
(2)在各RS使用arptables
(3)在各RS 修改内核参数,来限制arp响应和通告的级别
限制响应级别:arp_ignore
0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别:arp_announce
0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告   

C、LVS的DR模式实现

LVS主机
router添加仅主机网卡
router设定
修改客户端client配置
Webserver1中
使rs主机中vip不对外响应
webserver2中
在lvs主机和rs主机(webserver1,webserver2)中添加VIP
[root@apache ~]# ip a a 192.168.0.200/32 dev lo 
客户端client测试

D、LVS火墙标记

rs(webserver1.webserver2)中安装mod_ssl模块,让rs支持httpd
[root@webserver1 ~]# yum install mod_ssl -y

rs(webserver1.webserver2)中重启httpd服务

[root@webserver1 ~]# systemctl restart httpd
轮询规则中可能会遇到的错误
http https 为例,当我们在 RS 中同时开放 80 443 端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题
当第一次访问 80 被轮询到 RS1 后下次访问 443 仍然可能会被轮询到 RS1

LVS主机中

防火墙标记解决轮询调度问题
实现方法 : 在Director 主机打标记

LVS主机中为端口做标记

LVS 主机基于标记定义集群服务

客户端测试

[root@client  ]# curl 192.168.0.200;curl -k https://192.168.0.200
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10

4、LVS调度算法

(1). 轮叫调度 rr
均等地对待每一台服务器,不管服务器上的实际连接数和系统负载

(2). 加权轮叫 wrr
调度器可以自动问询真实服务器的负载情况,并动态调整权值

(3). 最少链接 lc
动态地将网络请求调度到已建立的连接数最少的服务器上如果集群真实的服务器具有相近的系统性能,采用该算法可以较好的实现负载均衡

(4).加权最少链接 wlc
调度器可以自动问询真实服务器的负载情况,并动态调整权值,带权重的谁不干活就给谁分配,机器配置好的权重高

(5). 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

(6). 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

(7). 目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

(8). 源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

(9). 最少期望延迟 sed
不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙(10). 永不排队 nq
无需队列,如果有realserver的连接数为0就直接分配过去

5、lvs持久链接

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把 这个源的主机调度到了那个RS

如果在短期(默认360S)内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到同一台RS上。 如果过了比较长的时间(默认最长时间360s)同源访问再次来访,那么就会被调度到其他的RS

ipvsadm -AlE -tlulf service-address [-s scheduler] [-p [timeout]]默认360秒
在lvs调度器中设定
[root@lvs ~]# ipvsadm -E -f 6666 -s rr -p [3000]
[root@lvs ~]# ipvsadm -LnC
  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值