一步步實施 devops (一)
一步步實施 devops (二)
一步步實施 devops (三)
一步步實施 devops (四)
自動化部署
本章節重點談自動化部署,每個人對自動化部署都有自己的理解,每個企業對自動化部署的需求也不同。
目前很多雲平台開始推出一些列 devops 工具,體驗了一下,仍然處在初級階段,也不十分成熟。嚴格的說他們實現的 cd (持續部署)。
前面講過持續整合不是 devops,這裡我要說持續部署也不是 devops。cd是從ci中分離出來的,將部署單獨提煉出來。
自動化部署遠比 cd 要複雜,涉及包括:
網路層:網路裝置管理,負載均衡切換,路由表管理
系統層:基礎設施,作業系統,軟體執行環境,
軟體層:軟體部署,cd部分
快取層:快取的重新整理
搜尋層:重建全文索引
資料層:資料庫結構管理,資料庫資料管理
日誌層:誰,什麼時間,做了什麼操作,結果怎樣
除此之外,管理上還需要提案和審批流程等等
所以 cd (持續部署)解決不了企業的生產環境自動化部署需求,cd緊緊是ci (持續整合)執行完成後,將構建物部署到指定的執行環境中。通常cd並不提供回撤功能,所以極少由企業使用 cd 部署生產環境。
git -> 編譯 -> 測試 -> 打包 -> 構建物 -> 部署 -> 執行
ci/cd 的流水線作業只能部署單一專案,對於大型**就無能為例,例如很多大型**:
構建過程非常複雜,不僅僅是乙個專案打包, 而是需要多個模組,處理複雜的配置過程。
一次部署多台伺服器,每個伺服器可能有多個例項,例項間相互依賴關係
需要遵守嚴格的部署和啟動順序
記錄部署日誌,檔案的新增,覆蓋,刪除
部署時間點
公升級不僅僅是**,還有資料庫,快取……
需要改變負載均衡裝置節點,設定防火牆策略
需要有完備的回撤方案
除此之外好虛考慮增量部署和差異部署,例如部署100mb 以上的大檔案,甚至gb尺寸的檔案
很多 devops 方案注重 docker,k8s解決方案。但實際情況 docker 並不適用於所有場景,更多是物理伺服器,虛擬機器,雲主機,刀片伺服器…
使用 docker 的前提是,docker必須部署在宿主主機上,在雲主機中部署 docker 意義不大。
很多企業大量使用雲主機,對 docker 並無強烈的需求。
運維需要怎樣的自動化部署工具:
專案管理:公升級提案,工作流轉,工作審批
備份管理:任何生產環境部署前都需要備份,必須實現增量備份和差異備份。
環境管理:環境部署,基礎設施管理
階段管理:開發,測試,生產
倉庫管理:分支切換,分支保護(例如只允許合併不允許提交)
配置管理:每個階段擁有自己的配置
檔案過濾:排除過濾,包含獲取,替換過濾(替換指定檔案中的內容,使用者不同階段的差異區分)
覆蓋刪除:覆蓋指定檔案,刪除指定檔案
自動構建:編譯,測試,測試報告,打包
部署管理:節點管理,增量部署,差異部署,md5sum 校驗檢查
部署指令碼:部署前指令碼(停止),部署後指令碼(啟動)或者環境初始化,解決部署依賴
時間線:誰,什麼時間,做了部署,可以指定時間點隨時回撤到指定版本。
部署日誌:誰,什麼時間,做了什麼操作,產生什麼結果
部署報告:生產 issue或ticker 報告
一步步學ROS
最近因為看svo的 裡面用到catkin決定要好好看ros,年前學會基本操作。啟動節點 rosrun package name executable name 檢視節點 rosnode list 注 rosout 節點是乙個特殊的節點,通過 roscore 自動啟動 檢視特定節點的資訊 rosnod...
windows Thrift c 一步步搭建
1.thrift 原始碼路徑 2.libevent原始碼路徑 3.boost路徑 安裝 conan install boost 1.68.0 conan stable 4.openssl路徑 安裝 conan install openssl 1.1.1a conan stable conan安裝bo...
一步步啟動linux
可以一步一步啟動linux.在ubantu剛一啟動時,按c健即進入grub 提示符狀態,在此狀態下輸入 我用的是ubuntu 13 grub linux vmlinuz grub ls boot grub initrd boot initrd.img 3.11.0 15 generic grub b...