Clip是一款自動化運維工具,适用于海量伺服器的管理場景,可以降低系統誤操作風險,提高工作效率等。Clip将傳統的IP管理緯度替換為String管理緯度,管理方式的改變使海量運維時更加的便捷、可靠與高效。
<a href="http://s1.51cto.com/wyfs02/M00/74/44/wKiom1YXaxKwCm5zAAHYPlUnBpY016.jpg" target="_blank"></a>
Clip是一款自動化運維工具,适用于海量伺服器的管理場景,可以降低系統誤操作風險,提高工作效率等。
Clip将傳統的IP管理緯度替換為String管理緯度,管理方式的改變使海量運維時更加的便捷、可靠與高效。Clip是C/S架構,它将IP關系儲存在Server端,Client端可以下載下傳SDK,通過SDK周遊Server端的IP與子產品關系等,并在本地對擷取的IP子產品關系進行重新的組織與編排,這就是Clip。在此基礎上Clip還提供了遠端指令、檔案拷貝、IP組織樹周遊、曆史指令檢視、IP對應String關系正反解析與導入等功能。為海量伺服器運維保駕護航,奠定基礎。
下面來詳細介紹以下clip這款自動換運維工具。
首先,傳統伺服器管理方式與String管理方式的相比,String管理方式的3點優勢:
1) 傳統為IP管理方式,IP由4組無意義的數字組成,比較難記憶。與傳統方式相比String可以見名識意,友善記憶;
2) 管理海量服務時,IP相似經常會導緻營運故障,譬如A子產品(10.131.24.37 )和B子產品(10.117.24.37) ,後兩位數字一緻,慣性的認為兩個B子產品就是A子產品,發送配置導緻線上故障。通過string管理方式可以很友善的規避此問題;
3) String 可以解析1個IP,也可以解析一組IP ,根據IP也可以反解析String對應關系,這讓我們管理一組服務更加的友善。
我們再來看一下String的組成。String由(idc-product-modules-group) 4段組成,了解cmdb的同學會發現它與cmdb的結構很像,4級子產品定位一個服務,但是随着業務的發展,筆者覺得4級服務已經無法定位到一個服務,譬如,在一台伺服器上混合部署不同的業務子產品,這裡4級隻能定位到服務的IP級别,而無法精确定位到真正的服務,是以Clip在此基礎上增加了一級(idc-product-modules-group-port),port端口,通過5段定位一個服務,這也是Clip優勢,靈活變換來定位一組服務,滿足業務需求。再來舉一個實際的例子,上海機房,A子產品使用80端口提供服務,目前有100多個機器 ,B子產品使用8080端口提供服務,目前有100多個機器,由于業務流量下降,為了節約資源目前想将兩個子產品200台機器資源合并,但功能不合并 。我們可将兩個服務表示到不通的String中,如A子產品(sh-weixin-friend-a-80), B子產品(sh-weixin-friend-b-8080),通過String就很容易的将兩個服務分别開,并部署在相同的伺服器上提供服務了。
剛介紹到Clip 為C/S架構 ,String對應的IP關系儲存在server伺服器中,Client 通過Clip的SDK擷取IP ,其優勢3點:
1) IP與String建議一次關系後,所有的的伺服器上通過SDK都可以調用到。
2)SDK在解析IP的基礎上提供了其他豐富的功能,如掃描伺服器,遠端指令,遠端拷貝等。
3)Clip 提供簡單清晰的API與SDK代碼結構與文檔,當Clip不能滿足我們需求時,可以通過文檔很容易的擴充Clip 滿足自己的需求。
接着我們來看Clip SDK,目前SDK共有8個子指令:
<a href="http://s6.51cto.com/wyfs02/M00/74/40/wKiom1YXTuyCbvhfAABcYJeAy0E413.jpg" target="_blank"></a>
各SDK子指令功能如下:
◆scan:用于對String對應的IP進行端口存活狀态掃描;
◆cstring:用于對String對應IP解析,與IP對應String關系的解析;
◆ssh:用于對String對應IP,遠端執行系統指令;
◆scp:用于對String對應IP,遠端拷貝檔案;
◆tree:周遊String下的子節點;
◆history:顯示曆史執行過的指令;
◆import:導入IP對應String關系;
◆lt:從本地擷取IP關系進行管理;
◆help:顯示Clip當天有多少子指令。
最後,我們再來看一下應用案例 ,來比較一下傳統方式vs clip管理方式差異:
傳統方式:在 A 子產品的100台伺服器上,執行uptime指令,具體的操作步驟如下:
1) 找到要同步的A子產品ip清單;
2) 編寫腳本與ip清單中的伺服器建立連接配接;
3) 連接配接伺服器時輸入賬号密碼;
4) 賬号密碼認證成功後拷貝檔案;
5) 在每個IP重複以上步驟。
Clip 方式:
1)建立A子產品ip清單與string對應關系,譬如為tj-qzone-qzoneini-access6;
2)clip ssh -p 密碼 root@tj-qzone-qzoneini-access6 “執行指令”,以下為結構。
<a href="http://s5.51cto.com/wyfs02/M01/74/41/wKiom1YXUKuhvljZAADAvjVVhuE830.jpg" target="_blank"></a>
Clip Server安裝
1) 安裝Apache\PHP和MySQL
# yum install httpd php msyql mysql-server
<a href="http://s2.51cto.com/wyfs02/M01/74/3E/wKioL1YXUkmhCLQbAABay9kcV4E163.jpg" target="_blank"></a>
2) 安裝Clip WEB接口程式。(注: Clip WEB程式由Doitphp架構開發)
2.1) mkdir -p /data/webroot/ (建立http虛拟主機釋出目錄)
2.2) wget http://blog.puppeter.com/download/clip/clip_web.tar.gz
2.3) tar -xvzf clip_web.tar.gz -C (Apache程式釋出目錄/data/webroot/)
2.4) 配置httpd.conf ,追加虛拟主機配置資訊。
NameVirtualHost *:80
ServerAdmin [email protected]
DocumentRoot /data/webroot/clip_server/
ServerName clip.puppeter.com
ErrorLog logs/clip.puppeter.com-error_log
CustomLog logs/clip.puppeter.com-access_log common
2.5) 啟動httpd。
3)service mysqld start 啟動Mysql
3.1) wget http://blog.puppeter.com/download/clip/clip_db.tar.gz 下載下傳表結構
3.2 ) mysql -u root -p 進入mysql,導入表結構
mysql-> create databases clip 建立clip庫
mysql-> mysql -u root -p clip < clip.sql 導入資料表。
3.3 ) SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’); 設定mysql密碼
3.4 ) FLUSH PRIVILEGES; 重新整理mysql配置
4 ) 設定Clip WEB連接配接mysql
編輯 /data/webroot/clip_server/application/config/clip.ini.php
Clip SDK安裝
Cllip SDK 由Python開發,以下為Clip依賴環境安裝過程:
1)下載下傳安裝Python (注:目前支援Python 2.6.* 和 2.7.*版本) && expect
# yum install python expect
<a href="http://s9.51cto.com/wyfs02/M02/74/41/wKiom1YXUrjwcaDGAABqNBPMdHo838.jpg" target="_blank"></a>
# python源碼安裝,推薦2.6.6(下載下傳頁面:https://www.python.org/download/releases/2.6.6/)
2)下載下傳Clip SDK
# wget http://blog.puppeter.com/download/clip/clip_latest.tar.gz
3)安裝Cllip SDK
# tar -xvzf clip_p1.0.tar.gz -C /usr/local/servcers (注:指定安裝目錄)
4)設定Clip。 編輯 clip/conf/clip.ini 檔案,變更server_ip選項為Clip_webIP
<a href="http://s1.51cto.com/wyfs02/M00/74/3E/wKioL1YXUwKhVb9bAACmfLCsW4c571.jpg" target="_blank"></a>
5)導入環境變量
export PATH=$PATH:/usr/local/services/clip/ (安裝路徑)
或者 echo ‘export PATH=$PATH:/usr/local/services/clip/ ‘ >> /etc/profile && source /etc/profile
6)執行Cllip指令 (見截圖)
<a href="http://s7.51cto.com/wyfs02/M02/74/41/wKiom1YXUxniYA5QAAEF1lYVuvU211.jpg" target="_blank"></a>
Clip SDK使用
Clip SDK 功能用于擷取Server上的IP關系,并在Client上重新組織編排IP關系。(注:目前clip也支援将IP存放到本地檔案中管理)。目前Clip 提供8個子指令,以下Clip子指令的參數解釋與示範(更多案例參考:Clip SDK 案例):
clip scan (用于對String對應的IP進行端口存活狀态掃描)
◆–query_string(-q)# 根據String掃描IP的端口
◆–ip (-i) # 掃描指定IP的端口
◆–query_string (-q) *-test-*-*,*-docker-*-* # 多String掃描用逗号分隔
◆–append (-a) # 在原有String基礎上,追加IP,追加多個(192.168.0.1,192.168.0.2)IP用逗号分隔
◆–remove_ip (-r) # 删除String原有IP清單的IP
◆–limit(-l)# 掃描String中指定範圍的IP範圍
◆–port (-P) # 指定自定義掃描端口(注:預設為80端口)
◆–log_disable(-o)# 預設日志會上報伺服器,并通過history指令檢視曆史,通過此指令可以關閉日志上報,建議頻繁使用clip關閉clip
clip scan 使用示範:
掃描*-puppet-*-* 對應開放的端口
<a href="http://s5.51cto.com/wyfs02/M00/74/3E/wKioL1YXU8KSKhpKAABuNcRHIrc595.jpg" target="_blank"></a>
clip cstring(正解與反解String對應IP關系)
◆–query_string(-q)# 解析String對應的IP清單
◆–ip (-i) # 解析IP對應的String
◆–query_string (-q) *-test-*-*,*-docker-*-* # 解析多個String對應IP清單,多String用逗号分隔
◆–limit(-l)# 解析String中指定範圍的IP範圍
◆–append (-a) #在原有String基礎上,追加IP,追加多個(192.168.0.1,192.168.0.2)IP用逗号分隔
◆–join (-j) # 指定輸出的格式,支援(“|” “,” “\n”,space) 4種格式輸出
◆–count (-c) # 統計輸出IP個數
◆–dryrun (-d) # 輸出調用接口用例
clip cstring示範:
解析*-qq-*-* 對應的IP關系。
<a href="http://s1.51cto.com/wyfs02/M01/74/3F/wKioL1YXVRLR2QyCAABq9nu793s292.jpg" target="_blank"></a>
解析192.168.0.7 對應的String。
<a href="http://s7.51cto.com/wyfs02/M00/74/42/wKiom1YXVVnjgVWWAAAzuPmniL4220.jpg" target="_blank"></a>
clip ssh (遠端指令執行工具)
◆–password (-p) # 密碼
◆–port (-P) #指定自定義端口(注:預設為22端口)
clip ssh示範:
檢視string(sh-docker-base_v1-*) 對應機器上負載。
<a href="http://s5.51cto.com/wyfs02/M00/74/41/wKioL1YXaIiCPTEnAACOYg-WIac304.jpg" target="_blank"></a>
檢視string(sh-docker-base_v1-*)的第一台伺服器對應負載。
<a href="http://s7.51cto.com/wyfs02/M02/74/44/wKiom1YXaKDRK1ndAABRmLhArOE864.jpg" target="_blank"></a>
clip scp (遠端指令執行工具)
◆–remove_ip (-r) # 删除cstring原有IP清單的IP
◆–port (-P) # 指定自定義端口(注:預設為22端口)
clip scp示範:
将ip檔案推送到string(sh-docker-base_v1-*)對應機器的/tmp目錄上。
<a href="http://s4.51cto.com/wyfs02/M00/74/41/wKioL1YXaQqRbxT7AABDpcKGizk622.jpg" target="_blank"></a>
tree(String關系周遊工具)
◆–query_string(-p) # 密碼
◆–json (-j) # 指定輸出的格式
clip tree 示範:
周遊*-*-*-* 下的節點
<a href="http://s2.51cto.com/wyfs02/M02/74/44/wKiom1YXaT2yDE2mAACYqAqPtXA380.jpg" target="_blank"></a>
import(IP關系導入工具)
◆–insert (-i) # 将檔案内的clip對應關系導入資料庫
◆–bulid (-b) # 建立clip導入資料庫,關系模闆檔案
◆–list_struct (-l) # 顯示clip資料庫結構
clip import 示範:
clip import -b 建立導入string與關系模闆
<a href="http://s5.51cto.com/wyfs02/M02/74/41/wKioL1YXaaPC_ptuAACgdNQrSCc107.jpg" target="_blank"></a>
lt(Local tools 本地擷取IP關系管理工具)
◆–append (-a) # 追加IP,多個IP用逗号分隔
◆–remove (-r) # # 删除原有IP清單的IP
clip lt 根據本地檔案IP檔案,進行遠端ssh command,其中root@“本地IP關系檔案名”
<a href="http://s4.51cto.com/wyfs02/M01/74/44/wKiom1YXadDCWjtLAAA-kOEmrw0891.jpg" target="_blank"></a>
本文轉自 tianya1993 51CTO部落格,原文連結:http://blog.51cto.com/dreamlinux/1732089,如需轉載請自行聯系原作者