IT運維,指的是對已經搭建好的網絡,軟件,硬件進行維護。運維領域也是細分的,有硬件運維和軟件運維 分類: 硬件運維:IDC運維,硬件運維主要包括對基礎設施的運維,好比機房的設備,主機的硬盤,內存這些物理設備的維護 軟件運維:主要包括系統運維和應用運維,系統運維主要包括對OS,數據庫,中間件的監控和維護,這些系統介於設備和應用之間,應用運維主要是對線上業務系統的運維。好比說對mysql進行備份管理,對nginx,apache軟件的管理以及配置 shell 腳本(基本語言) 傳統運維的特色:平常工做繁瑣,應用運行環境單一,運維及部署效率低下,無用報警信息過多,資產管理及應用管理混亂
1.os的選擇統一化,同一個項目使用一樣的OS系統部署其所須要的各種軟件 2.軟件安裝標準化,例如JAVA虛擬機,php,nginx,mysql等各種應用須要的軟件版本,安裝目錄,數據存放目錄,日誌存放目錄等 3.應用包目錄統一標準化,及應用命名標準化 4.啓動腳本統一目錄和名字,須要變化的部分經過參數傳遞 5.配置文件標準化,須要變化的部分經過參數傳遞 6.日誌輸出,日誌目錄,日誌名字標準化 7.應用生成的數據要實現統一的目錄存放 8.主機/虛擬機命名標準化,虛擬機管理使用標準化模板 9.使用docker比較容易實現軟件運行環境的標準化
是自動化運維的一個基石 全稱:配置管理數據庫 做用:收集服務器的各類信息 (包括收集服務器的內存,硬盤,CPU,IP, 主機名等信息) 包含的功能: 1,用戶管理,記錄測試,開發,運維人員的用戶表 2,業務線管理,須要記錄業務的詳情 3,項目管理,指定此項目用屬於哪條業務線,以及項目詳情 4,應用管理,指定此應用的開發人員,屬於哪一個項目,和代碼地址,部署目錄,部署集羣,依賴的應用,軟件等信息 5,主機管理,包括雲主機,物理機,主機屬於哪一個集羣,運行着哪些軟件,主機管理員,鏈接哪些網絡設備,雲主機的資源池,存儲等相關信息 6,主機變動管理,主機的一些信息變動,例如管理員,所屬集羣等信息更改,鏈接的網絡變動等 7,網絡設備管理,主要記錄網絡設備的詳細信息,及網絡設備鏈接的上級設備 8,IP管理,IP屬於哪一個主機,哪一個網段, 是否被佔用等
1.Agent實現方式:
Agent方式,能夠將服務器上面的Agent程序做定時任務,定時將資產信息提交到指定API錄入數據庫php
本質上就是在各個服務器上執行subprocess.getoutput()命令,而後將每臺機器上執行的結果,返回給主機API,而後主機API收到這些數據以後,放入到數據庫中,最終經過web界面展示給用戶python
優勢:速度快
缺點:部署比較麻煩, 每次新增一臺服務器,都須要部署相應的腳本
使用場景:服務器多(500臺以上)的場景mysql
如何使用python執行linux命令---subprocess
如何將拿到的結果返回給api---啓動一個django服務,鏈接請求requests庫傳輸數據
「header:Content-Type:application/json----只能從request.body中獲取數據
header:application/x-www-form-urlencoded----會將request.body中的值賦值給request.POST」linux
2.ssh實現方式(基於Paramiko模塊)運維裏面是ansiblenginx
中控機經過Paramiko(py模塊)登陸到各個服務器上,而後執行命令的方式去獲取各個服務器上的信息web
優勢:無Agent,相比於第一套方案來講, 不須要額外的部署代碼
缺點:相比於第一套方案來講, 速度比較慢, 由於它須要進行ssh的鏈接sql
若是在服務器較少的狀況下,可應用此方法
************************************
import paramikodocker
ssh = paramiko.SSHClient()shell
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())數據庫
ssh.connect(hostname='c1.salt.com', port=22, username='root', password='123')
stdin, stdout, stderr = ssh.exec_command('df')
result = stdout.read()
ssh.close()
************************************
3.saltstack方式
此方案本質上和第二種方案大體是差很少的流程,中控機發送命令給服務器執行。服務器將結果放入另外一個隊列中,中控機獲取將服務信息發送到API進而錄入數據庫。
安裝和配置
master端
"""
底層原理是zeromq隊列
優勢:快,開發成本低
缺點:依賴於第三方工具,依賴saltstack軟件
"""
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
"""
在master服務器上對salve進行遠程操做
salt 'c2.salt.com' cmd.run 'ifconfig'
基於API的方式
import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
4.puppet方案(沒人用 ruby on rails)
第一種:
第二種
第三種