CMDB和運維
目錄
一、傳統運維和自動化運維
1、傳統運維
- 日常工作繁瑣
- 應用運行環境不統一
- 運維及部署效率低下
- 無用報警信息過多
- 資產管理和應用管理混亂
2、自動化運維
- OS的選擇統一化,同一個項目使用同樣的OS系統部署其所需要的各類軟件
- 軟件安裝標准化,例如JAVA虛擬機,php,nginx,mysql等各類應用需要的軟件版本,安裝目錄,數據存放目錄,日志存放目錄等
- 應用包目錄統一標准化,及應用命名標准化
- 啟動腳本統一目錄和名字,需要變化的部分通過參數傳遞
- 配置文件標准化,需要變化的部分通過參數傳遞
- 日志輸出,日志目錄,日志名字標准化
- 應用生成的數據要實現統一的目錄存放
- 主機/虛擬機命名標准化,虛擬機管理使用標准化模板
- 使用docker比較容易實現軟件運行環境的標准化
二、項目
1、項目上線
a. 產品經理前期調研 (需求分析)
b. 和開發進行評審
c. 開發進行開發
d. 測試進行測試
e. 交給運維人員進行上線
2、收集服務器元信息
a. excel表格
缺點:
- 人為干預太嚴重
- 統計的時候也會有問題
b. 搞一個系統(CMDB)
作用: 自動的幫我收集服務器的信息,並且自動的記錄我們的變更信息
三、CMDB(資產管理系統)
CMDB是所有運維工具的數據基礎
1、CMDB的功能
1. 用戶管理,記錄測試,開發,運維人員的用戶表
2. 業務線管理,需要記錄業務的詳情
3. 項目管理,指定此項目用屬於哪條業務線,以及項目詳情
4. 應用管理,指定此應用的開發人員,屬於哪個項目,和代碼地址,部署目錄,部署集群,依賴的應用,軟件等信息
5. 主機管理,包括雲主機,物理機,主機屬於哪個集群,運行着哪些軟件,主機管理員,連接哪些網絡設備,雲主機的資源池,存儲等相關信息
6. 主機變更管理,主機的一些信息變更,例如管理員,所屬集群等信息更改,連接的網絡變更等
7. 網絡設備管理,主要記錄網絡設備的詳細信息,及網絡設備連接的上級設備
8. IP管理,IP屬於哪個主機,哪個網段, 是否被占用等
2、CMDB的四種實現方式
(1)agent采集
agent方式,可以將服務器上面的Agent程序作定時任務,定時將資產信息提交到指定API錄入數據庫
# agent方式本質:
在各個服務器上執行 subprocess.getoutput() 命令,然后將每台機器上執行的結果,返回給主機API,然后主機API收到這些數據之后,放入到數據庫中,最終通過web界面展現給用戶
# 優缺點:
優點:速度快
缺點:需要為每台服務器部署一個agent腳本
# 使用場景
服務器較多的場景
(2)ssh方式(基於Paramiko模塊)
中控機通過 Paramiko(py模塊) 登錄到各個服務器上,然后執行命令的方式去獲取各個服務器上的信息
# ssh方式本質:
中控機獲取主機列表,登錄服務器主機,利用paramiko模塊獲取服務器信息。中控機將信息發給API,API將結果寫入數據庫。后台管理可以從數據庫中將服務器的信息數據從數據庫中讀出。
# 優缺點:
優點:不用再服務器上部署agent腳本
缺點:速度慢,需要一台中控機登錄服務器
# 使用場景
服務器較少的場景
(3)salt-stack方式
# 本質
中控機將命令放在ZeroMQ隊列中;服務器從隊列中取通過執行:salt.cmd('主機地址', 'ifconfig命令')。服務器執行完命令,將結果(服務器信息)放進另一個隊列中;中控機從結果隊列中取出結果。中控機將服務器信息發給API,后台管理可以從數據庫中將服務器的信息數據從數據庫中讀出。
# 優缺點
優點:速度快, 開發成本低
缺點:每一台需要部署salt-stack
# 使用場景
企業的服務器以前就裝好了salt-stack
(4)Puppet方式(很少用)
Ruby語言開發。
每隔30分鍾,通過RPC消息隊列將執行的結果返回給用戶
四、salt-stack的安裝和配置
1、安裝和配置
'''master主機端'''
# 1. 安裝salt-master
yum install salt-master
# 2. 修改配置文件:/etc/salt/master
interface: 0.0.0.0 # 表示Master的IP
# 3. 啟動
service salt-master start
'''slave從機端:'''
# 1. 安裝salt-minion
yum install salt-minion
# 2. 修改配置文件 /etc/salt/minion
master: 10.211.55.4 # master的地址
或
master:
- 10.211.55.4
- 10.211.55.5
random_master: True
id: c2.salt.com # 客戶端在salt-master中顯示的唯一ID
# 3. 啟動
service salt-minion start
2、授權
salt-key -L # 查看已授權和未授權的slave
salt-key -a salve_id # 接受指定id的salve
salt-key -r salve_id # 拒絕指定id的salve
salt-key -d salve_id # 刪除指定id的salve
3、執行命令
在master服務器上對salve進行遠程操作
salt 'c2.salt.com' cmd.run 'ifconfig'