Docker關聯使用的一些工具:Clip名字服務(轉載)

YatHo發表於2017-11-16

Clip名字服務

 

Clip(http://blog.puppeter.com/read.php?7)是一個名字服務C/S架構,它將傳統的IP管理維度替換為名字服務即有意義可記憶的String。Clip將IP對應的String關係儲存在Server端。Client端可以下載SDK,通過SDK遍歷Server端的String對應IP的關係,並在本地對獲取的IP模組關係進行重新的組織與編排。傳統伺服器IP方式與String方式相比,String方式有3點優勢:


    傳統IP管理方式,IP由4組無意義的數字組成,比較難記憶。String更方便記憶;
    管理海量服務時,IP相似經常會導致運營故障,譬如A模組(10.131.24.37 )和B模組(10.117.24.37),後兩組數字一致,系統慣性的認為B模組就是A模組,傳送配置導致線上故障。通過string管理方式可以規避此問題;
    String 可以解析1個IP,也可以解析一組IP ,根據IP也可以反解析String對應關係,使得管理一組服務更加方便。


  Clip中的String由四段(欄位含義idc-product-modules-group)組成,讀者會發現String與Cmdb的結構很像:四級模組定位一個服務。但是為了充分利用資源我們的業務要求一個IP可能要對應多個服務,不同的服務有自己的波峰與波谷,在相同的IP上只要保證各業務的波峰不重疊就滿足了業務的需求,也充分了利用資源。而在一臺伺服器上混合部署不同的業務模組,四級模組就只能定位到服務的IP級別,而無法精確定位到真正的服務,所以Clip名字服務在Cmdb的基礎上增加了port埠,即五段(欄位含義idc-product-modules-group-port)定位一個服務。我們可以將動態的IP通過Clip介面註冊到指定含義的String上,通過Clip自帶工具來解析實時的String對應IP關係,譬如:


# clip cstring -q idc-product-modules-group-port
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5


Clip資料儲存結構分為兩層:
關係層儲存了String對應IP或內部系統Cmdb的模組關係(見圖3)。

 


Clip名字服務關係表(圖3)
關係層資料含義見表1

 


關係層資料含義表1
資料層儲存了String與IP的具體關係(見圖4)。

 


Clip名字服務資料表(圖4)

 


Clip名字服務在儲存String對應IP關係基礎上,在SDK上還提供了遠端埠掃描、遠端ssh、遠端檔案拷貝和查詢String關係結構的工具子命令等,更多可以見http://blog.puppeter.com/read.php?7。

 

Clip名字服務與Docker應用
如筆者上文所提,離線系統的建設思路就是將離線業務通過Docker快速的部署在資源空閒的機器上,而空閒的機器是通過資料分析系統長期分析沉澱的結果,Clip名字服務就是這兩種資源建立聯絡的橋樑,但只有Clip繫結關係還是不夠的,還需要建立繫結關係String對應Docker環境的關係,所以在Clip名字服務的基礎上我們又擴充了Docker的資源關係表。

 


Docker資源關係表圖5
其中Docker資源使用的關係表的欄位含義見表3:

 


我們來看一個需求案例:某視訊轉碼業務在上海需要使用資源約1000核心,對應的關係表為表4

 


由於buffer資源不時在變動,我們需監控String (sh-buffer-qq-video-2877)整體核數是否低於mcount值,如果低於則出發自動擴容策略。同時也需針對Docker資源使用關係中的app_port欄位來監控整體String (sh-buffer-qq-video-2877)業務是否處於健康狀態。在這裡我們沉澱了String (sh-buffer-qq-video-2877)的一些基礎資料如負載、記憶體、網路和磁碟IO等為資源的排程奠定的基石(見圖6)。

 


離線運營系統圖6

相關文章