资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1CM-集群管理与负载均衡系统五竹, 搜索与算法目录背景介绍1整体架构4功能特性3性能与应用2背景介绍1性能与应用2整体架构4功能特性3目录背景介绍1.Clustermap(CM)-集群管理与负载均衡系统起源于淘宝商品搜索引擎.2.主要解决如下问题:如何知道服务节点(searcher) 是否可用如何选取一行服务节点,并能保持各行之间的负载均衡如何选取某一列的一个节点不停服务的情况下,增减机器BeforeBefore背景介绍1.伴随着淘宝搜索业务的发展,CM面临越来越多的挑战: 集群间的集群状态管理与负载均衡的要求越来越多,如 SP 需要知道其下面的所有服务的拓扑和存活状态. 服务定位更复杂,同一个物理集群,可以做为多个不同的 逻辑集群对外提供服务,并且其下的服务节点,在不同的 连辑集群中,状态可以不一样。如 etao HA3 集群。 服务的信息颗粒要求更小,如 UPS系统中,需要知道某张 表的分区,分布在那些节点上。 替换LB设备,网内集群间的流量越来越大(每天几十亿),LB 设备的成来也越来越大.背景介绍 性能更强大,支持更多的节点。HA3 原来采用 zookeeper 来 做心跳,集群到2000台左右时,出现性能瓶颈。 运维管理需求,根据 cpu_busy,latency,iowait 等来自动下线 offline 机器 除主动心跳外,还支持更多的服务有效性检查测试.2. 2012年CM经过了一次重构,以便更好的支持集群间的服务定位与发现的应用需求.Now背景介绍1功能特性2整体架构4性能与应用2目录性能与应用性能测试说明1. 测试环境:linux 2.6.18-164.el5cpu: 16 core Intel(R) Xeon(R) CPU E5620 cpu MHz: 2400memory: 32G测试结果1. 在无 CM 级连的情况下,单个CMServer 可以同时支持: 心跳汇报节点(汇报周期100ms) 10000个 4/7层健康检查节点(检查周期1s) 6000个 订阅节点(更新周期1s) 4000个 瓶颈主要是千M网卡的带宽占满性能与应用应用性能与应用应用1. 管理搜索内部所有集群,14个业务线,31个集群2. 统一搜索内部所有服务定位和集群状态管理3. 替换搜索内部LB负载均衡设备(近 50 亿PV)目录CONTENTS背景介绍1功能特性2整体架构3性能与应用4功能特性订 阅心跳汇报运维管理健康检查同步ConfigServer负载均衡监控&报警PHP扩展名词说明Cluster: 多个节点组成的集合称为一个ClusterCMServer: ClusterMap内部的服务端,管理集群和节点HBNode: 表示心跳汇报节点,汇报自己状态信息到CMServerSubscriber: 订阅者,与CMServer通讯,获取集群信息CMSubProxy: 订阅者代理,订阅者功能基础上还会写共享内存CMCtrl: 工具,用来提供集群的增/删/改,节点的上下线ConfigServer: 淘宝的一个管理配置的服务功能特性心跳汇报1/汇报类型a)需要预先配置的节点 b)不需要预先配置的直接汇报的节点2/节点可以汇报心跳和负载信息,及用户自定 义的数据信息3/支持一个节点对应多个集群 即一个节点在多个集群中存在4/支持一个节点注册多个端口和协议功能特性健康检查节点健康检查1) 节点不需要向CMServer汇报,CMServer会主动定期检 查节点的状态是否正常 2) 包括四层健康检查,和七层健康检查 3) 同时支持一个节点对应多个集群 4) 定义 4/7 层健康检查协议,可以向 CM 返回集群系统 状态(cpu_busy等),qps,latency 信息(暂未实现)功能特性同步ConfigServerCMServer上的节点信息同步到ConfigServer1) 根据配置, 可以将某些集群的信息同步的 ConfigServer, 方 便基于Hsf/Configserver 框架的Java前端,这样就可以通 过 ConfigServer 来获取搜索后台服务的有效节点信息, 直 接访问, 而不再通过VIP方式访问功能特性订 阅1/订阅集群方式1) 订阅所有集群 2) 根据配置,订阅1个或多个集群2/集群的拓扑结构 1) 类似于Kingso的物理集群到拓扑集群 1-1 映射 2) 类似与Ups的物理集群到拓扑集群 1-N 映射 3/支持本机房优先分配的策略 4/支持订阅者为虚节点,只订阅不发心跳 5/支持多种语言的订阅(C, Php, Java, Lua,Node.js)功能特性订 阅6/对外提供的查询接口 1) allocRow 获取一行节点 2) allocValidRow 获取一行有效节点 3) allocNodeOfPartition 获取一列的所有节点 4) allocValidNodeOfPartition 获取一列的所有有效节点 5) allocNodeByPartitionId 获取一个 TopoCluster 的某个分区中分 配一个的节点 6) 6) allocValidNodeByPartitionId 获取一个 TopoCluster 某个分区 中分配一个可用的节点 7) allocAllNode 获取集群所有节点 8) allocAllValidNode 获取集群所有有效节点 9) getNodeStatus 根据节点spec获取当前节点的状态 10)getNodeMetaInfo 根据节点spec获取当前节点的MetaInfo信息 11)getPartitionCnt 获取一个 TopoCluster 中的分区数 12)getNodeCntOfPartition 获取一个 TopoCluster 中的某分区的节 点数功能特性负载均衡LB_ROUNDROBIN 轮询随机分配 LB_RANDOMLB_WEIGHT 根据权重LB_CONHASH 指定行失败后,用一 致性获取节点指定选取哪一行 LB_LOCATING功能特性PHP扩展订阅者支持: Nginx+Php基于共享内存方式同步集群变更信息的CMSubProxy 和 Php Extension Lib订阅者支持: Nginx+Lua基于共享内存方式同步集群变更信息的CMSubProxy 和 Lua Extension Lib订阅者支持: TNginx基于共享内存方式同步集群变更信息的CMSubProxy 和 Tnginx Module功能特性1/集群配置隔离 ,方便管理ClusterMap做到一个集群只在一个配置文件里,不同 集群互不影响运维管理2/集群操作添加,删除,查询,上线,下线3/节点操作添加,删除,查询,上线,下线4/支持节点自动下线当节点的负载或者Qps超过节点承受能力时,CMServer 可以自动下线该节点功能特性5/支持CMServer级联即一台CMServer订阅另一台CMServer上的集群6/支持CMServer主从切换不需要同步集群信息,通过的ZK的leader选举机制,进行 CMServer主从切换,即当前的CMMaster服务停掉,ZK上会 立即选举一个CMMaster,新的Master会从ZK上拿到集最新 的集群全量信息运维管理功能特性监控&警报监控&报警 Zk服务监控 CMServer服务和配置文件监控 集群状态和内部节点的状态监控 同步到ConfigServer上的节点信息监控WebServer 上下线集群和节点 查看所有的订阅者 查看集群状态和内部节点的状态 查看同步到ConfigServer上的节点信息目录背景介绍1功能特性3整体架构4性能与应用2整体架构整体架构ZK 提供可靠的持久化存储服务与Leader选举机制实现多台Server间主从互备整体架构 管理机器,负责管理集群拓扑结构、收集节点 状态信息、向订阅者推送集群状态信息CMServer整体架构 Server级联功能CMServer2整体架构 运维管理工具:用来提供 集群的增/删/改,节点的 offline/online等操作 CMCtrl整体架构 操作集群,监控和报警WebServer整体架构 定期向CMServer汇报心跳和负载信息HBNode整体架构 CMServer端定期检查服务状态、APPServer3# 整体架构 定期同步管理的结点信息给 ConfigServerConfigServer整体架构 集群的订阅者,先向CMServer 订阅集群信息,构建拓扑集群 Subscriber整体架构 读取共享内存,构 建内部拓扑结构FE发展展望1. 快速应对业务需求,支持多种语言的服务2. 监控更加简洁智能、运维自动化3. 探索更智能的负载均衡策略4. 搜索内外部流量使用CM2替换负载均衡设备跨越 只为走得更远。 。Thanks!淘五竹tiechou
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号