集群类型以及提高服务器性能的技术概述
一、集群类型:
1、负载均衡集群(LB集群--Load Balancing):
考虑提高服务器容量,是实现伸缩性扩展的主要技术。
当并发请求出现下面的情形时,就要考虑扩展:
1200请求:1s
1500请求:2s
1800请求:10s
扩展类型:
Scale up:向上,需要更强大性能的服务器,缺点是:提高的上限是有限的,并且它的性价比较差。
Scale out:向外,需要n多台主机。
A、LB的软件解决方案:
LVS(Linux Virtual Server)、
Haproxy、
Nginx等。
B、LB的硬件解决方案:
F5 BIG-IP、
Citrix Netscaler、
A10、
Array 、
Redware等。
2、高可用集群(HA集群--High Availability):
高可用,衡量服务可用性,平均无故障时间/(平均无故障时间+平均故障修复时间)。
高可用是用冗余设计,来保障稳定性。
HA的解决方案:Heartbeat、Corosync+pacemaker、
Cman+pacemaker、Cman+rgmanager、Keepalived等。
3、高性能集群(HP集群--High Performace):
向量机。
并行处理进群。
HP的解决方案:Hadoop
二、提高服务器性能的技术:
1、NoSQL:
MongoDB
2、分布式文件系统:
MogileFS
三、LVS:ipvsadm/ipvs,根据请求的目标套接字(包括端口协议类型TCP或UPD)来实现转发。
只有在并发连接数非常大时,才使用LVS做负载均衡,如淘宝、京东;对于小型的站点一般使用Haproxy。
CIP<----->VIP----DIP<----->RIP
1、LVS类型:
(1)、NAT:
A、RS应该使用私有地址;
B、RS的网关必须指向DIP;
C、RIP和DIP必须在同一网段内;
D、请求和响应的报文都要经过Director;
在高负载场景中,Director很可能成为系统性能瓶颈;
注意:一般请求报文较小,但响应报文比请求报文大的多。
E、支持端口映射;
F、RS可以使用任意支持集群服务的OS;
(2)、DR(Direct Routing):让前端路由将请求发往VIP时,只能是Dirctor上的VIP
解决方案:
a、静态地址绑定,但不可用,因为未必有路由器的配置权限
或者Dirctor调用时静态地址绑定将难以适用。
b、修改Linux内核参数,将RS的VIP配置为LO接口别名,
限制linux仅对对应的接口的ARP请求做响应。
特性:
A、RS可以使用私有地址;但也可以使用公有地址,此时可以直接通过
互联网连入RS以实现配置、监控等。
B、RS的网关一定不能指向DIP
C、RIP跟Directory要在同一物理网络内 (不能由路由器分隔)
D、请求报文进过Directory,但响应报文一定不经过Directory
E、不支持端口映射;
F、RS可以支持大多数的OS(隐藏VIP)
(3)、TUN:IP隧道,实现跨互联网转发。
特性:
A、RIP、DIP、VIP都得是公网地址。
B、RS的网关一定不能指向DIP
C、RIP跟Directory不在同一物理网络内。
D、请求报文进过Directory,但响应报文一定不经过Directory
E、不支持端口映射;
F、RS的OS必须要支持隧道功能(两个IP首部)。
(4)、FULLDAT:这是linux的内核发展的2.3.2以后引入的一种新类型,但需要对LVS内核打补丁后才能使用的一种类型。跨网络的NAT类型。
2、Session持久机制:
(1)、session绑定:始终将同一个请求者的练级诶定向至同一个RS,这种方式无容错能力,并反均衡。
(2)、session复制:在RS质检同步session,因此,每个RS持有集群中所有的session;对于大规模集群环境不适用。
(3)、session服务器:利用单独部署的服务器,来统一管理session,这种方式避免的上两种的缺陷,是最好的。
3、LVS的调度算法scheduler method:共10种。
LVS的缺陷无法感知后台RS的运行状态,如果某个RS故障,LVS一样会根据调度算法将请求分配给它。
(1)、静态方法:仅根据算法本身进行调度。
RR:Rount Robin轮询。这种调度方式的Session持久机制:session复制/session服务器
WRR:Weighted RR 加权轮询,根据权重比例进行调度。这种调度方式的Session持久机制:session复制/session服务器
SH:Source Hashing 源地址哈希。这种调度方式的Session持久机制:session复制/session服务器/session绑定.
DH:Destination Hashing 目标地址哈希。服务器端有多个防火墙时,为了保证请求和响应从同一个防火墙进出,这种方式比较少见。
(2)、动态方法:不但根据算法还要根据RS当前的负载状况。
LC:Least Connection 最少链接算法。
Overhead=Active*256+Inactive,结果小者胜出,结果一样轮询。
WLC:Weighted Least Connection 加权最少链接算法。
Overhead=(Active*256+Inactive)/weighted,结果小者胜出,结果一样轮询。
SED:Shortest Expect Delay 最小期望延迟。
Overhead=(Active+1)*256/weighted,结果小者胜出,结果一样轮询。
NQ:Nerver Queue 永不排队。现根据权重挑选,叫每个服务器都接收一个请求,然后根据算法
Overhead=(Active+1)*256/weighted,结果小者胜出,结果一样轮询。
LBLC:locality-Based Least Connection 基于本地的最少链接,相当于DH+LC,用的较少。
LBLCR:Replicated and Locality-Based Least Connection带复制的基于本地的最少链接,用的较少。
4、LVS集群服务CS(Cluster Service):
根据请求的目标套接字(包括端口协议类型TCP或UPD)来实现转发。
172.16.100.7:80
#yum -y install ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-O] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
(1)、集群服务相关,注意ipvs不可和iptables同时使用,定义ipvs是要至少要清空iptables的filter,要执行如下命令。
iptables -F -t filter
service iptables save
A、-A:定义一个集群服务。
a、-t:tcp
b、-u:udp
c、-f:firewall mark防火墙标记,通常用于将两个或以上的服务绑定为一个服务进行处理时使用。
d、service-address:
-t IP:Prot
-u IP:Prot
-f firewall_mark
e、-s scheduler:默认WLC
f、-p [timeout] :persistent Connection 持久链接。
B、-E:修改定义过的集群服务属性。
C、ipvsadm -D -t|u|f service-address 删除指定的集群服务。
D、ipvsadm -C :清空所有的集群服务
E、ipvsadm -S:定义的集群服务要保存,否则机器重启失效。
F、ipvsadm -R :载入集群服务。
G、ipvsadm -L :查看ipvs规则
-n:数字格式显示IP地址。
-c:显示连接数相关信息。
--stats:显示统计数据。
H、ipvsadm -Z :计数器清零。
(2)、RS相关。
A、-a:向指定的集群服务CS中添加RS
-t|u|f service-address :将RS添加到那个集群服务CS中
-r server-address:指定RS,可以包含IP:port,只有支持端口映射的LVS类型才允许此处使用跟集群服务不同的端口。
[-g|i|m] 指定LVS类型,-g(Gateway) 为DR,默认为DR;-i(ipip)TUN;-m(masquerade)NAT
-w weight:指定RS权重,可以省略默认为1.
B、-e:修改指定的集RS属性
C、ipvsadm -d -t|u|f service-address -r server-address:从指定的CS中移除一个RS
5、LVS持久连接类型:可以对LVS的任意调度算法实现持久连接;在定义集群服务时,使用参数-p 指定持久连接类型即可,这样就实现了session的绑定。
PCC 持久客户端连接:在有效时长内,将来自于同一个客户端发往VIP的所有请求(注意不管端口)统统定向同一个RS。
PPC:在有效时长内,将来自于同一个客户端发往某VIP的某端口的所有请求统统定向同一个RS。
PFMC:端口绑定(port affinity ),基于防火墙标记,将两个或以上的端口绑定为同一个服务。可PFMC其端口范围介于PCC和PPC之间。
6、LVS的缺陷以及使用场景。
(1)、LVS的缺陷是自身无法感知后台RS的运行状态,如果某个RS故障,LVS一样会根据调度算法将请求分配给它。
解决方案:写脚本检查或者keeplalived、ldirectord(heartbeat、corosync)
(2)、Director的自身可用性,即高可用问题?
解决方案:keeplalived、ldirectord(heartbeat、corosync)
(3)、只有在并发连接数非常大时,才使用LVS做负载均衡,如淘宝、京东;对于小型的站点一般使用Haproxy。
转载于:https://blog.51cto.com/8757576/1660510
集群类型以及提高服务器性能的技术概述相关推荐
- 万级K8s集群背后etcd稳定性及性能优化实践
作者:唐聪, 腾讯 CSIG 后台开发工程师 本文旨在帮助大家了解 etcd集群场景下稳定性与性能优化经验引的容量,避免给后面留坑. 背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云 ...
- 裸金属服务器性能描述,金山云-文档中心-集群支持裸金属服务器
容器服务支持金山云裸金属服务器作为集群中的节点.容器直接运行于高性能裸金属服务器上,无虚拟化性能损失,将为您带来更强劲的性能体验. 使用前须知 金山云容器服务暂不负责裸金属服务器的创建,裸金属服务器仅 ...
- Keepalived高可用集群来实现web服务器负载均衡集群
Keepalived高可用集群来实现web服务器负载均衡集群 一.Keepalived的介绍 Keepalived是一个提供HA重要的底层工具,最早期的作用是为ipvs提供HA功能的,还是一个可以提供 ...
- node redis集群_如何使用集群扩展Node.js服务器
node redis集群 by Michele Riva 由Michele Riva 如何使用集群扩展Node.js服务器 (How to scale your Node.js server usin ...
- Elasticsearch集群类型和选举策略
集群类型 空集群 空集群是集群的节点只含有一个节点数的集群部署策略,当集群的节点只含有一个,该节点默认为主节点,所有的索引分片都是会部署到该节点上,如果索引的分片策略设置副本数时,此时的集群节 ...
- 高密度ARM集群(阵列)服务器-随录
**高密度ARM集群(阵列)服务器-随录** 1.产品概述 随着移动互联网的高速发展,移动应用越来越丰富,端云架构的应用需求也越来越 多,因此产生了"服务器+移动端"的应用形式. ...
- WCF学习之:利用Throttling提高服务器性能
如果WCF服务用到服务器的稀缺资源,该资源的创建和销毁极耗服务器时间和性能,这种情况如果提高服务器性能呢? 我们知道WCF的实例模式有三种:Per-Call .Per-Session .Sin ...
- Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一)
原文链接:Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一) 关注公众号"超级IT人生"不走丢,查看最新技术文章 RabbitMQ的应 ...
- redis5.0集群搭建(两台服务器)
redis5.0集群搭建(两台服务器) 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-5.0.2 版本. 两台虚拟机都是 C ...
最新文章
- 关于学习Python的一点学习总结(54->集合->堆->双端队列)
- c++11中thread join和detach的区别
- 数据结构 【实验3 链表基本操作】
- python 数据平滑_数据平滑方法的原理和应用
- 计算机理论python字符串作业_[Python基础 ] Day_07_作业参考答案
- python机器学习案例系列教程——k均值聚类、k中心点聚类
- 《Spring Cloud Netflix》 -- 服务注册和服务发现-Eureka的常用配置
- 马蹄疾 | 聊聊你可能并没有完全掌握的 Flex 布局:从概念入手,丝丝入扣
- Error in loadNamespace(name) : there is no package called ‘yaml’
- 第一章 Crystal Reports简介
- 12、阈值分割基础理论
- ad采样的符号位_AD采样后数据如何在FPGA中转化为有符号数
- Android - MTK系统源码结构
- dm385和8127的区别
- 51单片机数码管密码锁
- MapReduce之Map join操作
- 导出excel.支持在线打开保存
- 怎么在b站引流?b站怎么吸粉?b站引流技巧和方法
- Linux故障之内核反向路由检测
- linux怎么找宝塔地址,宝塔Linux面板安全入口地址忘了(方法一)
热门文章
- 全网最全的git命令大全
- JavaScript 字符串截取方法汇总
- JavaScript 之arguments、caller 和 callee 介绍
- 虚拟云服务器 网站备案,云虚拟主机可以做备案吗
- java json float_java – Json解析问题(值自动更改为float)
- 浙江工商大学计算机专业有博士点吗,[浙江工商大学]统计学(博士点)
- Excel 如何让复制的内容保持原文本格式
- render注册一个链接组件_vue: 单文件组件 render函数
- dell服务器硬盘锁_服务器十大排行
- matlab求傅里叶级数展开式_明明学过积分和三角函数就能秒理解傅里叶变换.........