一 集群和分布式
在里了解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的IPVIP:Virtual serve IP VS 外网的 IPDIP:Director IP VS 内网的 IPRIP: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类型配置
实验环境
主机名 | ip | vip | 角色 |
node1 | 192.168.0.50 | 172.25.254.100 | vs |
node2 | 192.168.0.10 网关192.168.0.100 | null | rs |
node3 | 192.168.0.20 网关192.168.0.100 | null | rs |
node4 | 172.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 DROParptables -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_announce5.RS的RIP可以是公网地址也可以是私网地址,但是必须保证RIP和DIP在同一网段;6.RIP的网关不能指向DIP,必须保证报文不会通过Director;7.RS和Director必须在一个物理网络下;8.请求报文需要经过Director但是响应报文不能经过Director,由RS直接传给Client;9.不支持端口映射(不可修改端口);10.RS可以使用大多数OS系统;
dr类型配置
实验环境
主机名 | ip | vip | 角色 |
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.200 | LVS调度器 |
RS1 | 192.168.0.10 网关 192.168.0.10 | 环回ip 192.168.0.200 | web服务器1 |
RS2 | 192.168.0.20 网关 192.168.0.100 | 环回ip 192.168.0.200 | web服务器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 工作模式总结
三 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)/weight3.SED: Shortest Expection Delay, 初始连接高权重优先Overhead(activeconns+1+inactiveconns) x 256/weight 但是,当node1 的权重为 1 , node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接4.NQ: Never Queue ,第一轮均匀分配,后续SED5.LBLC: Locality-Based LC ,动态的DH算法,使用场景:根据负载状态实现正向代理6.LBLCR: LBLC with Replication ,带复制功能的LBLC,解决 LBLC 负载不均衡问题,从负载重的复制到负载轻的RS
四 LVS部署命令介绍
4.1LVS软件相关信息
程序包: ipvsadmUnit File:ipvsadm.service主程序: /usr/sbin/ipvsadm规则保存工具: /usr/sbin/ipvsadm-save规则重载工具: /usr/sbin/ipvsadm-restore配置文件: /etc/sysconfig/ipvsadm-configipvs调度规则文件: /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 serveripvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m]( 工作模式 ) [-wweight]( 权重 )ipvsadm -d -t|u|f service-address -r server-address 删除 RSipvsadm -L|l [options] 查看 rsipvsadm -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加密工具