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
小米自动化运维实践 qcon 2014 Beijing
Search
laiwei
April 28, 2014
Technology
12k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
小米自动化运维实践 qcon 2014 Beijing
小米自动化运维
laiwei
April 28, 2014
More Decks by laiwei
See All by laiwei
小米-企业安全实践
laiwei
1
5.3k
小米运维自动化
laiwei
0
5.6k
小米运维基础设施
laiwei
2
1.4k
noops in xiaomi @ Velocity 2013 beijing
laiwei
1
1.4k
laiwei #adc2013# #taobao adc#
laiwei
5
3.8k
Other Decks in Technology
See All in Technology
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
160
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
2
730
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.1k
はじめてのWDM
miyukichi_ospf
1
140
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
140
Zoom2Youtube.Claude
kawaguti
PRO
3
490
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
1
110
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
120
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
350
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
120
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
WENDY [Excerpt]
tessaabrams
11
38k
Designing for humans not robots
tammielis
254
26k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Design in an AI World
tapps
1
260
The Pragmatic Product Professional
lauravandoore
37
7.4k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
390
Transcript
运维⾃自动化 实践之路
• 3年应⽤用运维 • 3年运维⾃自动化建设 2005 ~ 2012 BAIDU • 应⽤用运维团队
• 运维⾃自动化事务 2013 ~ 今 ⼩小⽶米 ⾃自我介绍 伏晔 微博:http://weibo.com/xingfuge613
搭业 务环 境 改配 置 线上 升级 迁移 扩容 关联
变更 运维基础设施 部署 监控 名字 服务 配置管理数据库 调度 服务树&机器管理&…
OUTLINE " 服务树 " 部署系统 " 规范要求
服务树 – 设计 公司 部门 产品 服务 服务实例 分组 服务实例
服务实例 状态 地域 机房 组织结构 系统组成 集群 物理位置 机器TAG形式进行标记 根据TAG动态筛选机器
服务树 – WEB cop.xiaomi_owt.miliao_pdl.im_service.xiaomi- mq_jobgroup.micloud_job.xmq-micloud-cell01- micloud011_status.service_loc.bj_idc.sd_cluster.production-sd
APP SERVER GOD ⾃自动部署 – 架构 WEB ODIN Build Server
APP SERVER FRIGGA THOR …… GOD FRIGGA THOR Service Tree Naming
部署系统 – WEB
部署系统 – WEB
部署系统 – WEB
" Cluster.yml cluster: name: databae-change-handler version: 1.0.0.1
env: production jobs: [job.database-change-handler_ service.database-change-handler_cluster.preview_ pdl.account_owt.miliao_cop.xiaomi, xxxx, xxx] dch: host: [10.237.37.43, 10.237.37.45, 10.237.37.46] user: root version: 93043 path: /home/work/passport-dch pkg_url: ftp:// db_passwd:xxxx backup_key:68e7012d5bdca6eaceeb2682e4b20a96 mon_value: mon.template.yml 部署系统 – ODIN ODIN解析 cluster.yml 下载PKG并重新生成 发布包 触发host中机器的 FRIGGA 通过frigga调用god 接口检查服务状态
" Config.template.yml base: basedir: "$<path>" user: "$<
user >" mod_name: "$< name >" db_password: "$< db_passwd >" tag: "$< job >" #app running control mod_start: "${basedir}/bin/run.sh" mod_stop: "${basedir}/bin/stop.sh" to_email:
[email protected]
production: zookeeper_host: zk.xiaomi.com staging: zookeeper_host: zk.staging.xiaomi.com " Init.yml Dch: type:file name:${basedir}/conf/dch.conf source:template( "dch.conf.erb") monitor: type: mon name: ${basedir}/conf/mon.conf source:template("mon.conf.erb") backup: type: backup name: ${basedir}/conf/ backup.conf source:template("backup.conf.erb") 部署系统 – THOR 替换模板生 成临时配置 下载要部署 的包文件 进行文件的 部署 生成GOD 启动配置 触发GOD 启动程序
部署系统 – GOD God.watch do |w| w.ver = "139594" w.name
= "job.database-change-handler_service.database-change- handler_cluster.production-sd_pdl.account_owt.miliao_cop.xiaomi" w.start = "sh /home/work/database-change-handler/bin/DbEventListener.sh -r" w.gid = "root" w.uid = "root” w.log = "/data/soft/database-change/logs/database-change.log" w.dir = "/home/work/database-change-handler/” w.cron = "/etc/god_cron.d/job.database-change-handler_service.database-change- handler_cluster.production-sd_pdl.account_owt.miliao_cop.xiaomi.cron” w.stop_timeout = 300.seconds w.lifecycle do |on| on.condition(:flapping) do |c| c.to_state = [:start, :restart] c.times = 3 c.within = 10.minute c.notify = 'proc_down' end end end
部署系统 – 管理
部署系统 – 管理
部署系统 – 持续部署 " Odin.rb –f cluster.yml " Thor
–f cluster.yml " god status
规范要求
规范要求 – ⺫⽬目录结构 " 发布包结构 Passport-agent |- release |- target
|- deploy |- config.template.yml |- init.yml | - 模板⺫⽬目录 |- dch.conf.erb " 程序、数据分离 /home/xxx/passport-agent |- bin |- conf /data/passport-agent |- log |- dict
规范要求 – 环境 " 统⼀一系统内核、发⾏行版、初始环境 " 编译环境 " 解释器 "
系统Lib " 关键配置依赖 " 命令⾏行
C B A 规范要求 – Runtime依赖 Serveice Package B Runtime
PHP-5.5.10 Runtime NGINX-1.4.6 Runtime RabbitMQ-3.3.0 deploy " 优点 " 部署动作简单 " 不污染系统及其业务 " 问题 " root权限 " 公有、私有runtime Runtime PHP-5.5.09 Runtime NGINX-1.4.3 Runtime Redis-2.8.8 Service Package A B A online online B A online
规范要求 – 解耦关联配置 A A B B B B A
A B B B B Naming service " Naming所做 " 抽取连接类信息 " 树状结构 " 固定tag组合查询 " 区域化解析 " Naming不做 " 配置管理 " 实时通知
资源隔离 节省硬件资源,约 15% 容易动态调整资源 资源隔离更彻 底 资源 CPU MEMORY DISK
QUOTA DISK IO NET IO IP PORT PATH 虚拟化 KVM 容器 Docker
动态筛选、调度 筛选器 网络 分布 物理 分布 资源 资源数据库 调度器 创建容器
Naming 部署系统
目标:noops 技术博客:http://www.noops.me/ About Us
Thanks!