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
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
110
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
170
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
810
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
1
210
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
420
お客様の「やりたい」の先を見通す合意形成プロセス ~裏にある課題と不安を解きほぐすコツ~
yukakoseki
0
110
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
130
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
300
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
160
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
1
670
AIコーディングはじめました
miso
0
150
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
550
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
550
Making the Leap to Tech Lead
cromwellryan
135
10k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
650
The Curious Case for Waylosing
cassininazir
1
610
Ethics towards AI in product and experience design
skipperchong
2
460
Odyssey Design
rkendrick25
PRO
2
930
Building Adaptive Systems
keathley
44
3.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
For a Future-Friendly Web
brad_frost
184
11k
How to Ace a Technical Interview
jacobian
280
24k
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!