lvs集群

一、lvs集群的介绍

1.1什么是集群

Cluster,集群、群集

由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机。

1.2 集群的类型

LB: Load Balancing,负载均衡,多个主机组成,每个主机只承担一部分访问请求

HA: High Availiablity,高可用,避免 SPOF(single Point Of failure)

HPC: High-performance computing,高性能 。依赖于分布式、并行计算,例如云计算

1.3 集群和分布式

系统性能扩展方式:

  • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务

  • Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

垂直扩展不再提及:

随着计算机性能的增长,其价格会成倍增长

单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的。

集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

1.3.1 集群设计原则

可扩展性---集群的横向扩展能力

可用性---无故障时间 (SLA service level agreement)

性能---访问响应时间

容量---单位时间内的最大并发吞吐量(C10K 并发问题)

二、LB Cluster 负载均衡集群

SNAT:让 内网用户 可以访问外网

DNAT:把内网的服务 共享到公网上(外网用户可以访问 公司内网的服务)

2.1 基于工作的协议层次划分

传输层(通用):DNAT 和 DPORT

LVS:

nginx:stream

haproxy:mode tcp

应用层(专用):针对特定协议,常称为 proxy server

http:nginx, httpd, haproxy(mode http), ...

fastcgi:nginx, httpd, ...

mysql:mysql-proxy, mycat...

3. 负载均衡集群的结构

第一层,负载调度器(Load Balancer或Director)

访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。负载均衡层

第二层,服务器池(Server Pool)

群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。web应用层

第三层,共享存储(Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

三、LVS介绍

VS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名正明), 阿里的四层SLB(Server Load Balance)是基于LVS+keepalived实现

LVS 官网:http://www.linuxvirtualserver.org/

3.1 LVS工作原理

在内核中查看功能是否开启

[root@localhost ~]#grep -i -C 10 ipvs /boot/config-3.10.0-693.el7.x86_64

CONFIG_NETFILTER_XT_MATCH_CPU=m

CONFIG_NETFILTER_XT_MATCH_DCCP=m

CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m

CONFIG_NETFILTER_XT_MATCH_DSCP=m

CONFIG_NETFILTER_XT_MATCH_ECN=m

CONFIG_NETFILTER_XT_MATCH_ESP=m

CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m

CONFIG_NETFILTER_XT_MATCH_HELPER=m

CONFIG_NETFILTER_XT_MATCH_HL=m

CONFIG_NETFILTER_XT_MATCH_IPRANGE=m

CONFIG_NETFILTER_XT_MATCH_IPVS=m

CONFIG_NETFILTER_XT_MATCH_LENGTH=m

CONFIG_NETFILTER_XT_MATCH_LIMIT=m

CONFIG_NETFILTER_XT_MATCH_MAC=m

CONFIG_NETFILTER_XT_MATCH_MARK=m

CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m

CONFIG_NETFILTER_XT_MATCH_NFACCT=m

CONFIG_NETFILTER_XT_MATCH_OSF=m

CONFIG_NETFILTER_XT_MATCH_OWNER=m

CONFIG_NETFILTER_XT_MATCH_POLICY=m

CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m

--

CONFIG_IP_SET_HASH_NET=m

CONFIG_IP_SET_HASH_NETPORT=m

CONFIG_IP_SET_HASH_NETIFACE=m

CONFIG_IP_SET_LIST_SET=m

CONFIG_IP_VS=m

CONFIG_IP_VS_IPV6=y

CONFIG_IP_VS_DEBUG is not set

CONFIG_IP_VS_TAB_BITS=12

IPVS transport protocol load balancing support

CONFIG_IP_VS_PROTO_TCP=y

CONFIG_IP_VS_PROTO_UDP=y

CONFIG_IP_VS_PROTO_AH_ESP=y

CONFIG_IP_VS_PROTO_ESP=y

CONFIG_IP_VS_PROTO_AH=y

CONFIG_IP_VS_PROTO_SCTP=y

IPVS scheduler 调度算法

CONFIG_IP_VS_RR=m

CONFIG_IP_VS_WRR=m

CONFIG_IP_VS_LC=m

CONFIG_IP_VS_WLC=m

CONFIG_IP_VS_LBLC= m

CONFIG_IP_VS_LBLCR=m

CONFIG_IP_VS_DH=m

CONFIG_IP_VS_SH=m

CONFIG_IP_VS_SED=m

CONFIG_IP_VS_NQ=m

IPVS SH scheduler

CONFIG_IP_VS_SH_TAB_BITS=8

IPVS application helper

CONFIG_IP_VS_FTP=m

CONFIG_IP_VS_NFCT=y

CONFIG_IP_VS_PE_SIP=m

IP: Netfilter Configuration

CONFIG_NF_DEFRAG_IPV4=m

CONFIG_NF_CONNTRACK_IPV4=m

3.2 LVS 功能及组织架构

负载均衡的应用场景为高访问量的业务,提高应用程序的可用性和可靠性。

应用于高访问量的业务
扩展应用程序
消除单点故障
同城容灾 (多可用区容灾)

3.3 LVS集群类型中的术语

  • VS:Virtual Server,Director Server(DS), Dispatcher(调度器),Load Balancer(lvs服务器)

  • RS:Real Server(lvs), upstream server(nginx), backend server(haproxy)(真实服务器)

  • CIP:Client IP(客户机IP)

  • VIP:Virtual serve IP VS外网的IP

  • DIP:Director IP VS内网的IP

  • RIP:Real server IP (真实IP)

四、lvs调度算法

分为两种:静态方法和动态方法

静态方法:不管后端服务器的状态,根据自身算法进行调度

动态方法:会根据后端服务器的状态调度

静态:

1、RR:roundrobin,轮询,较常用

2、WRR:Weighted RR,加权轮询,较常用

3、SH:Source Hashing,实现session sticky,源IP地址hash;将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

4、DH:Destination Hashing;目标地址哈希,第一次轮询调度至RS,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS,典型使用场景是正向代理缓存场景中的负载均衡,如: Web缓存

动态:

主要根据每RS当前的负载状态及调度算法进行调度Overhead=value 较小的RS将被调度

1、LC:least connections 适用于长连接应用

复制代码
Overhead=activeconns*256+inactiveconns

activeconns活跃数 inactiveconns 不活跃数

2、WLC:Weighted LC,默认调度方法,较常用

复制代码
Overhead=(activeconns*256+inactiveconns)/weight

weight 权重

3、SED:Shortest Expection Delay,初始连接高权重优先,只检查活动连接,而不考虑非活动连接

复制代码
Overhead=(activeconns+1)*256/weight

4、NQ:Never Queue,第一轮均匀分配,后续SED

5、LBLC:Locality-Based LC,动态的DH算法,使用场景:根据负载状态实现正向代理,实现Web Cache等

6、LBLCR:LBLC with Replication,带复制功能的LBLC,解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS,,实现Web Cache等

相关推荐
德迅--文琪3 分钟前
SCDN是服务器吗?SCDN防御服务器有什么特点?
运维·服务器
重生之我要进大厂10 分钟前
LeetCode 876
java·开发语言·数据结构·算法·leetcode
_祝你今天愉快13 分钟前
技术成神之路:设计模式(十四)享元模式
java·设计模式
z2023050815 分钟前
linux 之0号进程、1号进程、2号进程
linux·运维·服务器
秋已杰爱36 分钟前
HTTP中的Cookie与Session
服务器·网络协议·http
小筱在线1 小时前
SpringCloud微服务实现服务熔断的实践指南
java·spring cloud·微服务
luoluoal1 小时前
java项目之基于Spring Boot智能无人仓库管理源码(springboot+vue)
java·vue.js·spring boot
ChinaRainbowSea1 小时前
十三,Spring Boot 中注入 Servlet,Filter,Listener
java·spring boot·spring·servlet·web
小游鱼KF1 小时前
Spring学习前置知识
java·学习·spring
扎克begod1 小时前
JAVA并发编程系列(9)CyclicBarrier循环屏障原理分析
java·开发语言·python