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個子命令:
各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 「執行命令」,以下為結構。
Clip Server安裝
1) 安裝Apache\PHP和MySQL
# yum install httpd php msyql mysql-server
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 wds@tencent.com
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
# 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
5)導入環境變量
export PATH=$PATH:/usr/local/services/clip/ (安裝路徑)
或者 echo 『export PATH=$PATH:/usr/local/services/clip/ 『 >> /etc/profile && source /etc/profile
6)執行Cllip命令 (見截圖)
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-*-* 對應開放的埠
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用逗號分隔
◆–remove_ip (-r) # 刪除String原有IP列表的IP
◆–join (-j) # 指定輸出的格式,支持(「|」 「,」 「\n」,space) 4種格式輸出
◆–log_disable(-o)# 默認日誌會上報伺服器,並通過history命令查看歷史,通過此命令可以關閉日誌上報,建議頻繁使用clip關閉clip
◆–count (-c) # 統計輸出IP個數
◆–dryrun (-d) # 輸出調用接口用例
clip cstring演示:
解析*-qq-*-* 對應的IP關係。
解析192.168.0.7 對應的String。
clip ssh (遠程命令執行工具)
◆–password (-p) # 密碼
◆–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) #指定自定義埠(註:默認為22埠)
◆–dryrun (-d) # 輸出調用接口用例
◆–log_disable(-o)# 默認日誌會上報伺服器,並通過history命令查看歷史,通過此命令可以關閉日誌上報,建議頻繁使用clip關閉clip
clip ssh演示:
查看string(sh-docker-base_v1-*) 對應機器上負載。
查看string(sh-docker-base_v1-*)的第一臺伺服器對應負載。
clip scp (遠程命令執行工具)
◆–password (-p) # 密碼
◆–append (-a) # 在原有String基礎上,追加IP,追加多個(192.168.0.1,192.168.0.2)IP用逗號分隔
◆–remove_ip (-r) # 刪除cstring原有IP列表的IP
◆–limit(-l)# 解析String中指定範圍的IP範圍
◆–port (-P) # 指定自定義埠(註:默認為22埠)
◆–dryrun (-d) # 輸出調用接口用例
◆–log_disable(-o)# 默認日誌會上報伺服器,並通過history命令查看歷史,通過此命令可以關閉日誌上報,建議頻繁使用clip關閉clip
clip scp演示:
將ip文件推送到string(sh-docker-base_v1-*)對應機器的/tmp目錄上。
tree(String關係遍歷工具)
◆–query_string(-p) # 密碼
◆–json (-j) # 指定輸出的格式
◆–dryrun (-d) # 輸出調用接口用例
◆–log_disable(-o)# 默認日誌會上報伺服器,並通過history命令查看歷史,通過此命令可以關閉日誌上報,建議頻繁使用clip關閉clip
clip tree 演示:
遍歷*-*-*-* 下的節點
import(IP關係導入工具)
◆–insert (-i) # 將文件內的clip對應關係導入資料庫
◆–bulid (-b) # 創建clip導入資料庫,關係模板文件
◆–list_struct (-l) # 顯示clip資料庫結構
clip import 演示:
clip import -b 創建導入string與關係模板
lt(Local tools 本地獲取IP關係管理工具)
◆–password (-p) # 密碼
◆–append (-a) # 追加IP,多個IP用逗號分隔
◆–remove (-r) # # 刪除原有IP列表的IP
◆–port (-P) # 指定自定義埠(註:默認為22埠)
clip import 演示:
clip lt 根據本地文件IP文件,進行遠程ssh command,其中root@「本地IP關係文件名」
【編輯推薦】
【責任編輯:
火鳳凰TEL:(010)68476606】