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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
200個のGitHubリポジトリを横断調査したかった
icck
0
110
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
600
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
140
Claude Codeをどのように キャッチアップしているか
oikon48
5
3.7k
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
800
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
800
脆弱性対応、どこで線を引くか
rymiyamoto
0
360
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
Snowflakeと仲良くなる第一歩
coco_se
4
430
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
200
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
300
Featured
See All Featured
Designing for Performance
lara
611
70k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
The Cost Of JavaScript in 2023
addyosmani
55
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Practical Orchestrator
shlominoach
191
11k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
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!