Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
小米自动化运维实践 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
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
130
Metadata - Section 1: HTML Basics
mohab1
0
110
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
150
夫婦で子育てするための育児標準化
codmoninc
PRO
0
310
Rust で関数型ドメインモデリング
takonda
0
130
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
190
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.6k
hackers_champloo_2026_tidb
makocchi
0
160
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
DGX Spark でどこまでハッキングができるのか?
kash1064
3
1.3k
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
BBQ
matthewcrist
90
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Writing Fast Ruby
sferik
630
63k
エンジニアに許された特別な時間の終わり
watany
109
250k
Google's AI Overviews - The New Search
badams
0
1.6k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
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!