运维入门到入土之超详细LVS说明及配置,啃一口都是干货

一 集群和分布式

在里了解LVS之前先了解集群和分布式的概念。

1.1集群

系统性能的扩展方式

当企业内希望服务器能够接受处理大量任务时,一个服务器性能不够强大此时有两种解决方法。

第一种是向上扩展:增加单个服务器的硬件性能(因为服务器硬件问题这种扩展有上限)。

第二种是向外扩展:利用多个服务器处理信息。

利用向外扩展的话可以做到处理信息量的无上限,这是企业所需要的,就需要利用一个调度器去实施策略给他管理的服务器下发任务进行处理,这时候调度器和他管理的主机就形成了一个集群。

集群Cluster
这个可以理解成为了优化集群效果,提高集群稳定性的系统
常见的三种类型
LB LoadBalancing (负载均衡),为防止单个服务器访问压力过大,调度器会把信息的平均分配给自己管理的服务器。
HA High Availiablity (高可用) SPOF single Point Of failure ),因为集群如果调度器挂掉,会导致后面所有服务器都无法使用,相当于整个集群全部挂掉,因此会设置一个备用的调度器实时监控真正运行的调度器,如果当前运行调度器挂掉,会立刻顶替上去,保证集群的正常运行,提高稳定性,这也是运维最注重的
MTBF:Mean Time Between Failure 平均无故障时间,正常时间
MTTR:Mean Time To Restoration repair )平均恢复前时间,故障时间
A=MTBF/ MTBF+MTTR (0,1) 99%, 99.5%, 99.9%, 99.99%, 99.999%
SLA Service level agreement (服务等级协议)是在一定开销下为保障服务的性能和可用性,服
务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在
常规的领域中,总是设定所谓的三个 9 ,四个 9 来进行表示,当没有达到这种水平的时候,就会有一
些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。
停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外
停机时间
HPC :: High-performance computing (高性能计算,国家战略资源)这个不做价!!!!

1.2分布式

分布式是将一个复杂的信息进行拆分处理,而调度器下管理的各各服务器会各自兼备自己的服务,各司其职。例如一个比较复杂的信息被调度器接受,调度器会把信息拆分,把web服务类型的信息传给业务主机1,将DNS服务类型的信息传给业务主机2,以此类推。

分布式存储: Ceph GlusterFs FastDFS MogileFs
分布式计算: hadoop Spark
分布式常见应用
分布式应用 - 服务按照功能拆分,使用微服务
分布式静态资源 -- 静态资源放在不同的存储集群上 分布式数据和存储 -- 使用 key-value 缓存系统
分布式计算 -- 对特殊业务使用分布式计算,比如 Hadoop 集群

1.3集群以及分布式

集群和分布式的区别

集群:调度器下管理的服务器处理的信息没有差别,数据代码是一样的。

分布式:调度器下管理的服务器处理的信息属于不同服务,所有服务器处理后加起来的信息才是一整个项目。

二 LVS

2.1简介

LVS:Linux Virtual Server ,负载调度器,内核集成,章文嵩,阿里的四层 SLB(Server LoadBalance) 是基于LVS+keepalived 实现
LVS 官网: http://www.linuxvirtualserver.org/
LVS 相关术语
VS:Virtual Server ,负责调度
RS:RealServer ,负责真正提供服务

LVS是四层负载,因此他只能最高达到达传输层,当外部访问一个固定的网络地址,比如https://baidu.com/index.php 这里指定了固定位置,当包传到LVS调度器需要LVS调度器拆包拆到四层以上得到需要访问的位置是index.php,再把包传给对应业务主机,因为LVS是四层负载,是做不到的。

2.2LVS工作流程 

CIP Client IP  访问LVS的IP 
VIP:Virtual serve IP VS 外网的 IP
DIP:Director IP VS 内网的 IP
RIP:Real server IP

2.3lvs集群的类型

2.3.1 lvs-nat

1.修改请求报文的目标IP为RS的IP, 多目标 IP DNAT;
2.需要保证DIP和RIP在同一私网网段,RS的网关需要指向DIP;
3.请求报文必须由Director转发;
4.支持端口映射PORT;
5.VLS调度器必须是Linux系统,但是RS可以是任何OS系统;

nat类型配置

实验环境

主机名ipvip角色
node1192.168.0.50172.25.254.100vs
node2192.168.0.10 网关192.168.0.100nullrs

node3

192.168.0.20 网关192.168.0.100

nullrs
node4172.25.254.50测试机

ndoe1(VS调度器)环境

VS启用两个网卡,处于外网(172.25.254网段)的网卡使用nat模式,处于内网(192.168.0网段)的网卡启用仅主机模式

node2(rs)环境配置

node3(rs)环境配置

先在vs上开启内核路由功能

 在vs上安装ipvsadm

在vs写策略

rs配置httpd服务

一定记得关闭防火墙,不然会导致服务不通

测试

2.3.2 lvs-dr 

1.修改请求报文的目标MAC为RS的MAC,修改源MAC为DIP的MAC,IP信息不变;
2.其VS和RS都配置了VIP;
3.确保前端路由器将目标 IP VIP 的请求报文发往 Director;
4.在前端网关做静态绑定 VIP Director MAC 地址
                在rs上使用arptables工具
                 arptables -A IN -d $VIP -j DROP
                arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
                
                需要在RS上修改内核参数现限制arp的通告和应答级别
                 /proc/sys/net/ipv4/conf/all/arp_ignore
                /proc/sys/net/ipv4/conf/all/arp_announce
5.RS的RIP可以是公网地址也可以是私网地址,但是必须保证RIP和DIP在同一网段;
6.RIP的网关不能指向DIP,必须保证报文不会通过Director;
7.RS和Director必须在一个物理网络下;
8.请求报文需要经过Director但是响应报文不能经过Director,由RS直接传给Client;
9.不支持端口映射(不可修改端口);
10.RS可以使用大多数OS系统;

 dr类型配置

实验环境

主机名ipvip角色
client

172.25.254.50

网关172.25.254.100

null测试主机
router

172.25.254.100

192.168.0.100

null路由器
lvs

192.168.0.50 

网关 192.168.0.100

环回ip 192.168.0.200LVS调度器
RS1

192.168.0.10

网关 192.168.0.10

环回ip 192.168.0.200web服务器1
RS2

192.168.0.20

网关 192.168.0.100

环回ip 192.168.0.200web服务器2

client环境配置

路由器环境配置

VS配置

RS配置

路由器上开启内核路由功能

在RS1和RS2中解决响应问题

RS1中

RS2中

在lvs中配置策略

测试

2.3.3 lvs-tun

1.在原请求IP 报文之外新加一个 IP 首部,源IP为DIP目标IP为RIP,将报文发送给挑选出来的RS, 最后RS直接响应Client;
2.DIP,VIP, RIP 都应该是公网地址;
3.RS 的网关一般不能指向 DIP;
4. 请求报文要经由 Director ,但响应不能经由 Director;
5. 不支持端口映射;
6.RS OS 须支持隧道功能; 

2.3.4 lvs-fullnat

1.和nat类型差不多,只是调度器不仅会将外网发来的请求报文的目标VIP修改为RIP,也会将请求报文的CIP改为DIP;
2.VIP 是公网地址, RIP DIP 是私网地址,且通常不在同一 IP 网络;因此, RIP 的网关一般不会指向 DIP
3. VIP 是公网地址, RIP DIP 是私网地址,且通常不在同一 IP 网络;因此, RIP 的网关一般不会指向 DIP
4. 请求和响应报文都经由 Director;
5.支持端口映射;

2.3.5 工作模式总结

1.lvs-nat lvs-fullnat :请求和响应报文都经由 Director
2.lvs-nat RIP 的网关要指向 DIP
3.lvs-fullnat RIP DIP 未必在同一 IP 网络,但要能通信
4.lvs-dr lvs-tun :请求报文要经由 Director ,但响应报文由 RS 直接发往 Client
5.lvs-dr :通过封装新的 MAC 首部实现,通过 MAC 网络转发
6.lvs-tun :通过在原 IP 报文外封装新 IP 头实现转发,支持远距离通信

三 LVS调度算法

ipvs scheduler:LVS算法类型分为静态动态两种类型

静态方法:不考虑RS的负载,仅仅更具算法本身调度;

动态方法:主要根据RS当前的负载状态以及调度状态进行调度Overhead=value较小的RS将会被vs调度

3.1静态调度算法

RR:roundrobin轮询,RS分别依次被调度,在RS配置了具有差别时不建议使用该算法;

WRR:weighted RR,加权轮询更具RS的配置的加权信息进行调度,权越高调度次数越多;

SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定;
DH Destination Hashing ;目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商;

3.2动态调度算法

1.LC:least connections(最少链接发),适用于长连接应用Overhead(负载值)=activeconns(活动链接数) x 256+inactiveconns(非活 动链接数)

2.WLC Weighted LC (权重最少链接),默认调度方法Overhead=(activeconns x 256+inactiveconns)/weight
3.SED Shortest Expection Delay, 初始连接高权重优先Overhead(activeconns+1+inactiveconns) x 256/weight 但是,当node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
4.NQ Never Queue ,第一轮均匀分配,后续SED
5.LBLC Locality-Based LC ,动态的DH算法,使用场景:根据负载状态实现正向代理
6.LBLCR LBLC with Replication ,带复制功能的LBLC,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的RS

四 LVS部署命令介绍

4.1LVS软件相关信息

程序包: ipvsadm
Unit File:ipvsadm.service
主程序: /usr/sbin/ipvsadm
规则保存工具: /usr/sbin/ipvsadm-save
规则重载工具: /usr/sbin/ipvsadm-restore
配置文件: /etc/sysconfig/ipvsadm-config
ipvs调度规则文件: /etc/sysconfig/ipvsadm

4.2ipvsadm命令

管理集群服务
ipvsadm -A|E -t tcp |u udp |f (防护墙标签) \
service-address( 集群地址 ) \
[-s scheduler( 调度算法 )] \
[-p [timeout]] \
[-M netmask] \
[--pepersistence_engine] \
[-b sched-flags]
ipvsadm -D -t|u|f service-address 删除
ipvsadm –C 清空
ipvsadm –R 重载
ipvsadm -S [-n] 保存
管理集群中的 real server
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m]( 工作模式 ) [-w
weight]( 权重 )
ipvsadm -d -t|u|f service-address -r server-address 删除 RS
ipvsadm -L|l [options] 查看 rs
ipvsadm -Z [-t|u|f service-address] 清楚计数器

4.3集群中的增删改查 

4.3.1管理集群服务中的增删改

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A # 添加
-E # 修改
-t  #tcp服务
-u #udp 服务
-s # 指定调度算法,默认为 WLC
-p # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一 Realserver
-f #firewall mask 火墙标记,是一个数字

4.3.2 管理集群中RealServer的曾增删改

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]

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

五  防火墙标记解决轮询调度问题

在一个RS服务器上下载https加密工具

六 LVS持久链接

在我们客户上网过程中有很多情况下需要和服务器进行交互,客户需要提交响应信息给服务器,如果单纯的进行调度会导致客户填写的表单丢失,为了解决这个问题我们可以用sh 算法,但是 sh 算法比较简单粗暴,可能会导致调度失衡。
解决方案
在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把这个源的主机调度到了那个RS 上,如果在短期(默认360S )内同源再来访问我仍然按照内存中记录的调度信息,把这个源的访问还调度到同一台RS 上。如果过了比较长的时间(默认最长时间360s )同源访问再次来访,那么就会被调度到其他的 RS 上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值