Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
clustermap
Search
tiechou
May 20, 2013
Technology
1
500
clustermap
tiechou
May 20, 2013
Tweet
Share
Other Decks in Technology
See All in Technology
大規模データ基盤チームのオンプレTiDB運用への挑戦 / dpu-tidb
cyberagentdevelopers
PRO
1
110
Commitment vs Harrisonism - Keynote for Scrum Niseko 2024
miholovesq
6
1.1k
CAMERA-Suite: 広告文生成のための評価スイート / ai-camera-suite
cyberagentdevelopers
PRO
3
270
日経電子版におけるリアルタイムレコメンドシステム開発の事例紹介/nikkei-realtime-recommender-system
yng87
1
500
Vueで Webコンポーネントを作って Reactで使う / 20241030-cloudsign-vuefes_after_night
bengo4com
4
2.5k
Fargateを使った研修の話
takesection
0
120
急成長中のWINTICKETにおける品質と開発スピードと向き合ったQA戦略と今後の展望 / winticket-autify
cyberagentdevelopers
PRO
1
160
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
570
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
生成AIと知識グラフの相互利用に基づく文書解析
koujikozaki
1
140
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
110
20241031_AWS_生成AIハッカソン_GenMuck
tsumita
0
110
Featured
See All Featured
Side Projects
sachag
452
42k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
GraphQLとの向き合い方2022年版
quramy
43
13k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
A Modern Web Designer's Workflow
chriscoyier
692
190k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Embracing the Ebb and Flow
colly
84
4.4k
Transcript
Clustermap简介 Tiechou DESIGN
Tiechou DESIGN ClusterMap 搜索集群中的服务发现和集群地图功能
Tiechou DESIGN ⺫⽬目录 CONTENTS 背景介绍 1 功能特性 2 整体架构 3
应⽤用表现 4 快速使⽤用 5
Tiechou DESIGN ⺫⽬目录 CONTENTS 背景介绍 1
Tiechou DESIGN 1# 背景介绍 1. 搜索内部引擎群英荟萃,难于管理 2. 使用负载均衡设备多一层网络开销 3. 单独使用Zookeeper管理集群性能受限
4. 多种语言的前端需要访问搜索的服务(C, Java, PHP, Lua, Node.js) 5. 运维管理难于满足(根据节点负载自动上下线,界面操作,监控,报警)
Tiechou DESIGN ⺫⽬目录 CONTENTS 功能特性 2
Tiechou DESIGN 2# 功能特性 订 阅 心跳汇报 集群管理 健康检查 同步ConfigServer
负载均衡 监控&报警 PHP扩展
Tiechou DESIGN 2# 名词说明 Cluster: 多个节点组成的集合称为一个Cluster CMServer: ClusterMap内部的服务端,管理集群和节点 HBNode: 表示心跳汇报节点,汇报自己状态信息到CMServer
Subscriber: 订阅者,与CMServer通讯,获取集群信息 CMSubProxy: 订阅者代理,订阅者功能基础上还会写共享内存 CMCtrl: 工具,用来提供集群的增/删/改,节点的上下线 ConfigServer: 淘宝的一个管理配置的服务
Tiechou DESIGN 2# 功能特性 ⼼心跳汇报 1/汇报类型 1) 需要预先配置的节点 2) 不需要预先配置的直接汇报的节点
2/节点可以汇报心跳和负载信息,及用户自定义的数据信息 3/支持一个节点对应多个集群 即⼀一个节点在多个集群中存在 4/支持一个节点注册多个端口和协议
Tiechou DESIGN 2# 功能特性 健康检查 健康检查节点 1) 节点不需要向CMServer汇报,CMServer会主动定期检查节点的状 态是否正常 2)
包括四层健康检查,和七层健康检查 3) 同时⽀支持⼀一个节点对应多个集群
Tiechou DESIGN 2# 功能特性 1/集群配置隔离 ,方便管理 ClusterMap做到⼀一个集群只在⼀一个配置⽂文件⾥里,不同集群互不影响 集群管理
2/集群操作 添加,删除,查询,上线,下线 3/节点操作 添加,删除,查询,上线,下线 4/支持节点自动下线 当节点的负载或者Qps超过节点承受能⼒力时,CMServer可以⾃自动下 线该节点
Tiechou DESIGN 2# 功能特性 5/支持CMServer级联 即⼀一台CMServer订阅另⼀一台CMServer上的集群 6/支持CMServer主从切换 不需要同步集群信息,通过的ZK的leader选举机制,进⾏行CMServer主
从切换,即当前的CMMaster服务停掉,ZK上会⽴立即选举⼀一个CMMaster, 新的Master会从ZK上拿到集最新的集群全量信息 集群管理
Tiechou DESIGN 2# 功能特性 订 阅 1/订阅集群方式 1) 订阅所有集群
2) 根据配置,订阅1个或多个集群 2/集群的拓扑结构 1) 类似于Kingso的物理集群到拓扑集群 1-‐1 映射 2) 类似与Ups的物理集群到拓扑集群 1-‐N 映射 3/支持本机房优先分配的策略 4/支持订阅者为虚节点,只订阅不发心跳 5/支持多种语言的订阅(C, Php, Java, Lua, Node.js)
Tiechou DESIGN 2# 功能特性 订 阅 6/对外提供的查询接口 1) allocRow获取⼀一⾏行节点
2) allocValidRow获取⼀一⾏行有效节点 3) allocNodeOfParFFon 获取⼀一列的 所有节点 4) allocValidNodeOfParFFon 获取⼀一 列的所有有效节点 5) allocNodeByParFFonId 获取⼀一个 TopoCluster 的某个分区中分配⼀一 个的节点 6) allocValidNodeByParFFonId 获取 ⼀一个 TopoCluster 某个分区中分配⼀一个可⽤用的节点 7) allocAllNode 获取集群所有节点 8) allocAllValidNode 获取集群所有有效节点 9) getNodeStatus 根据节点spec获取当前节点的 状态 10) getNodeMetaInfo 根据节点spec获取当前节点 的MetaInfo信息 11) getParFFonCnt 获取⼀一个 TopoCluster 中的分 区数 12) getNodeCntOfParFFon 获取⼀一个 TopoCluster 中的某分区的节点数 13) freeNode 释放节点 14) freeNodes 释放多个节点
Tiechou DESIGN 2# 功能特性 同步ConfigServer CMServer上的节点信息同步到ConfigServer 根据配置, 可以将某些集群的信息同步的 ConfigServer, ⽅方便基于Hsf/
Configserver 框架的Java前端,这样就可以通过 ConfigServer 来获取搜索后 台服务的有效节点信息, 直接访问, ⽽而不再通过VIP⽅方式访问
Tiechou DESIGN 2# 功能特性 PHP扩 展 订阅者支持Nginx+Php 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Php
Extension Lib 订阅者支持Nginx+Lua 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Lua Extension Lib 订阅者支持TNginx 基于共享内存⽅方式同步集群变更信息的CMSubProxy 和 Tnginx Module
Tiechou DESIGN 2# 功能特性 负载均衡 LB_ROUNDROBIN 轮询 随机分配 LB_RANDOM
LB_WEIGHT 根据权重 LB_CONHASH 指定⾏行失败后,⽤用 ⼀一致性获取节点 指定选取哪⼀一⾏行 LB_LOCATING
Tiechou DESIGN 2# 功能特性 监控&警报 监控&&报警 • Zk服务监控 •
CMServer服务和配置⽂文件监控 • 集群状态和内部节点的状态监控 • 同步到ConfigServer上的节点信息监控 WebServer • 上下线集群和节点 • 查看所有的订阅者 • 查看集群状态和内部节点的状态 • 查看同步到ConfigServer上的节点信息
Tiechou DESIGN ⺫⽬目录 CONTENTS 整体架构 3
Tiechou DESIGN 3# 整体架构
Tiechou DESIGN 3# 整体架构 Z K ü 提供可靠的持久化存储服务与Leader选举机制实现多台Server间主从互备
Tiechou DESIGN 3# 整体架构 ü 管理机器,负责管理集群拓扑结构、收集 节点状态信息、向使用者推送集群 CMSe r ve
r
Tiechou DESIGN 3# 整体架构 ü Server级联功能 CMServer2
Tiechou DESIGN 3# 整体架构 ü 集群管理工具:用来提供 集群的增/删/改,节点的 offline/online等操作 C M
C t r l
Tiechou DESIGN 3# 整体架构 ü 操作集群,监控和报警 WebServer
Tiechou DESIGN 3# 整体架构 ü 定期向CMServer汇报心跳和负载信息 H B N o
d e
Tiechou DESIGN 3# 整体架构 ü CMServer端定期检查服务状态、 APPServer
Tiechou DESIGN 3# 整体架构 ü 定期同步管理的结点信息给 ConfigServer ConfigServer
Tiechou DESIGN 3# 整体架构 ü 集群的订阅者,先向CMServer 订阅集群信息,构建拓扑集群 Subscriber
Tiechou DESIGN 3# 整体架构 ü 读取共享内存,构 建内部拓扑结构 FE
Tiechou DESIGN ⺫⽬目录 CONTENTS 应⽤用表现 4
Tiechou DESIGN 4# 应⽤用表现 测试说明 1. 测试机器:线上CM5机房机器 2. 编译选项:-‐g -O2
3. 机器部署:ZK(3台机器), CMServer(2台机器),⼼心跳节点(55 台机器),七层健康检查节点(55台 机器,复⽤用), 四层健康检查节点 (55台机器,复⽤用), 订阅者(55台机 器,复⽤用) 4. 配置说明: hb_interval=100ms 7level_check_period=1000ms 4level_check_period=1000ms sub_status_interval=500ms 测试结果 测试结论: 1. 随着订阅者数量增加到10K, ⺴⽹网络Bytes Out到达100M+, CMServer管理的集群节点开始不稳 定 2. CMServer对节点数量没有限 制,可以⽀支持10K个订阅者 性能分析
Tiechou DESIGN 4# 应⽤用表现 业务成果 1. 管理搜索内部所有集群,14个业务线 2. 订阅者有180个
3. 统⼀一内部所有服务定位和集群管理 4. 替换搜索内部LB负载均衡设备
Tiechou DESIGN 4# 应⽤用表现 发展展望 1. 快速应对业务需求,⽀支持多种语⾔言的服务 2. 监控更加简洁智能、运维⾃自动化
3. 搜索内外部流量使⽤用CM2替换负载均衡设备 4. 搜索内部使⽤用CM2进⾏行服务定位 5. 技术分享,推⼲⼴广到更多的业务平台
Tiechou DESIGN ⺫⽬目录 CONTENTS 快速使⽤用 5
Tiechou DESIGN 5# 快速使⽤用 4/参考文档 • hfp://10.232.41.135:8080/ • hfp://searchwiki.taobao.ali.com/index.php/CM2
1/编译依赖 • arpc ⺴⽹网络通讯框架 • auFl, anet, alog提供的公共 库 • pb 定义的消息结构 • zk 做leader选举机制 • hsf,easy 同步configserver 3/启动服务 • 配置修改 cm_server.cfg 运⾏行cmserver,建议2-‐3台机器来运⾏行cm_server • 配置修改cm_client.xml 启动⼼心跳节点 • 配置修改cm_client.xml 启动订阅者 2/代码编译 • 进⼊入代码⺫⽬目录; • 执⾏行 sh install_depend_lib.sh,会在当前⺫⽬目录下,创建⼀一个 contribute⺫⽬目录; • 执⾏行 scons install_prefix=[安装路径] mode=release install 编 译代码和安装; • 执⾏行 scons check,编译和运⾏行单元测试。
Tiechou DESIGN 跨·越 只为⾛走得更远。。。 @Fechou 铁丑
Tiechou DESIGN THANKS