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
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
16
13k
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
5
150
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
510
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
130
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
170
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
580
UI State設計とテスト方針
rmakiyama
2
600
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
160
Qiita埋め込み用スライド
naoki_0531
0
5.1k
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
100
コンテナセキュリティのためのLandlock入門
nullpo_head
2
320
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
270
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.2k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Bash Introduction
62gerente
608
210k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Code Review Best Practice
trishagee
65
17k
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