透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

Skydive 是一款開源的即時網路拓撲和協定分析器。 它旨在提供一種全面的方法來了解網路基礎設施中發生的情況。

為了引起您的興趣,我將給您一些有關 Skydive 的螢幕截圖。 下面會有一篇介紹跳傘的文章。

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

郵政 ”skydive.network簡介» 關於哈布雷。

Skydive 透過接收來自 Skydive 代理程式的網路事件來顯示網路拓撲。 您是否想知道如何在拓撲圖中新增或顯示 Skydive 代理網路以外的網路元件或非網路物件(例如 TOR、資料儲存等)。使用 Node 規則 API,無需再擔心這一點。

從0.20版本開始,Skydive提供了節點規則API,可用來建立新節點和邊以及更新現有節點的元資料。 節點規則API分成兩個API:節點規則API和邊緣規則API。 節點規則 API 用於建立新節點並更新現有節點的元資料。 邊緣規則 API 用於在兩個節點之間建立邊界,即連接兩個節點。

在本部落格中,我們將看到兩個用例,其中之一是不屬於跳傘網路的網路元件。 第二個選項是非網路元件。 在此之前,我們將了解使用拓樸規則 API 的一些基本方法。

創建跳傘節點

要建立節點,您必須提供唯一的節點名稱和有效的節點類型。 您也可以提供一些附加選項。

skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
  "UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
  "Name": "node rule1",
  "Description": "",
  "Metadata": {
    "Name": "node1",
    "Type": "fabric"
  },
  "Action": "create",
  "Query": ""
}

更新跳傘節點元數據

若要更新現有節點的元數據,您必須提供 gremlin 查詢來選擇要更新元資料的節點。 根據您的要求,您可以使用單節點規則更新一個或多個節點的元資料。

skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
  "UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
  "Name": "update rule",
  "Description": "",
  "Metadata": {
    "key1": "val1",
    "key2": "val2"
  },
  "Action": "update",
  "Query": "G.V().Has('Name', 'node1')"
}

創建跳傘邊緣

建立邊時,必須指定來源節點、目的節點以及邊的連結類型;當建立子節點時,連結類型值必須為ownership;同樣,當建立連結類型layer2時,連結類型值必須為第2層。 您可以在兩個節點之間建立多個鏈接,但連結的類型必須不同。

skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
  "UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
  "Name": "edge",
  "Description": "",
  "Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
  "Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
  "Metadata": {
    "RelationType": "both"
  }
}

第一個用例

在本例中,我們將了解如何在跳傘拓撲中顯示非網路設備。 讓我們考慮一下我們有一個資料倉儲,需要在跳傘拓撲圖中顯示一些有用的元資料。

我們只需要建立一個節點規則即可將設備新增到拓撲中。 我們可以新增設備元資料作為建立命令的一部分,或稍後建立一個或多個更新節點規則命令。

執行下列主機規則指令,將儲存裝置新增至拓樸圖中。

skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"

執行邊緣規則下方的指令,將建立的節點與宿主節點關聯起來。

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

執行上述命令後,您現在可以在跳傘拓撲圖中看到帶有給定元資料的設備,如下圖所示。

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

第二個用例

在本例中,我們將了解如何新增不屬於跳傘網路的網路設備。 讓我們看一下這個例子。 我們有兩個跳傘代理程式在兩個不同的主機上,為了連接這兩個主機,我們需要一個 TOR 交換器。 儘管我們可以透過在設定檔中定義結構節點和連結來實現此目的,但讓我們看看如何使用拓樸規則 API 來實現相同的目的。

如果沒有 TOR 交換機,兩個代理將顯示為兩個不同的節點,沒有任何鏈接,如下圖所示。

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

現在執行下列主機規則命令來建立 TOR 交換器和連接埠。

skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"

如您所見,TOR 交換器和連接埠已建立並新增至 skydive 拓撲中,拓撲現在如下圖所示。

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

現在執行以下 Edge Rule 指令在 TOR 交換器、連接埠 1 和主機 1 的公共介面之間建立連線。

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"

執行以下命令在 TOR 交換器連接埠 2 和主機 2 公共介面之間建立鏈接

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"

現在,在 TOR 交換器和連接埠之間以及代理和連接埠之間建立了所有權和第 2 層關聯。 現在最終的拓樸如下圖所示。

透過 Skydive 用戶端手動將節點新增至 Skydive 拓撲

現在,兩個主機/代理程式已正確連接,您可以測試連接或建立兩個主機之間的最短路徑擷取。

PS 連結到 原帖

我們正在尋找可以撰寫有關其他跳傘功能的帖子的人。
電報聊天 透過 skydive.network。

來源: www.habr.com

添加評論