Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Skydive er en open source-netværkstopologi og protokolanalysator i realtid. Det har til formål at give en omfattende måde at forstå, hvad der sker i en netværksinfrastruktur.

For at interessere dig, vil jeg give dig et par skærmbilleder om Skydive. Nedenfor vil der være et indlæg om en introduktion til Skydive.

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Post"Introduktion til skydive.network»på Habré.

Skydive viser netværkstopologien ved at modtage netværksbegivenheder fra Skydive-agenter. Har du nogensinde undret dig over, hvordan du tilføjer eller viser netværkskomponenter i et topologidiagram, der er uden for Skydive-agentnetværket eller ikke-netværksobjekter såsom TOR, datalagring osv. Du behøver ikke længere bekymre dig om det takket være Node rule API.

Siden version 0.20 har Skydive leveret en Node rule API, der kan bruges til at oprette nye noder og kanter og til at opdatere metadataene for eksisterende noder. Node rule API er opdelt i to API'er: node rule API og edge rule API. Node Rule API bruges til at oprette en ny node og opdatere metadataene for en eksisterende node. Edgeregel API'en bruges til at skabe en grænse mellem to noder, dvs. forbinder to noder.

I denne blog vil vi se to use cases, hvoraf den ene er en netværkskomponent, der ikke er en del af skydive-netværket. Den anden mulighed er en ikke-netværkskomponent. Før det vil vi se på nogle grundlæggende måder at bruge Topology Rules API på.

Oprettelse af en Skydive Node

For at oprette en node skal du angive et unikt nodenavn og en gyldig nodetype. Du kan også give nogle yderligere muligheder.

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": ""
}

Opdater metadata for Skydive Nodes

For at opdatere metadataene for en eksisterende node skal du angive en gremlin-forespørgsel for at vælge de noder, som du vil opdatere metadataene på. I henhold til din anmodning kan du opdatere metadataene for en eller flere noder ved hjælp af en enkelt noderegel.

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')"
}

Oprettelse af en Skydive Edge

For at oprette en kant skal du angive kilde- og destinationsknuderne og linktypen for kanten; for at oprette en underknude skal linktypeværdien være ejerskab; på samme måde skal linktypeværdien for at oprette en linktypelag2 være lag 2. Du kan oprette mere end ét link mellem to noder, men linktypen skal være forskellig.

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"
  }
}

Første use case

I dette tilfælde vil vi se på, hvordan man viser en ikke-netværksenhed i skydive-topologien. Lad os overveje, at vi har et datavarehus, der skal vises i et skydive-topologidiagram med nogle nyttige metadata.

Vi skal bare oprette en noderegel for at tilføje enheden til topologien. Vi kan tilføje enhedsmetadata som en del af oprettelseskommandoen eller senere oprette en eller flere opdateringsknuderegelkommandoer.

Kør følgende værtsregelkommando for at tilføje en lagerenhed til topologidiagrammet.

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"

Kør kommandoen under edge-reglen for at knytte den oprettede node til værtsknuden.

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

Efter ovenstående kommandoer kan du nu se enheden synlig i skydive-topologidiagrammet med de givne metadata som vist på billedet nedenfor.

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Anden brugssag

I dette tilfælde vil vi se, hvordan du tilføjer en netværksenhed, der ikke er en del af skydive-netværket. Lad os se på dette eksempel. Vi har to skydive-agenter, der kører på to forskellige værter, for at forbinde disse to værter har vi brug for en TOR-switch. Selvom vi kan opnå dette ved at definere strukturnoder og links i en konfigurationsfil, lad os se, hvordan vi kan gøre det samme ved at bruge Topology Rules API.

Uden en TOR-switch vil de to agenter fremstå som to forskellige noder uden nogen links, som vist på billedet nedenfor.

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Kør nu følgende Host Rules-kommandoer for at oprette TOR-switchen og portene.

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"

Som du kan se, er TOR-switchen og portene blevet oprettet og tilføjet til skydive-topologien, og topologien vil nu se ud som på billedet nedenfor.

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Kør nu følgende Edge Rule-kommandoer for at skabe en forbindelse mellem TOR-switchen, port 1 og den offentlige grænseflade på vært 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"

Kør følgende kommandoer for at oprette et link mellem TOR-switchport 2 og værts 2 offentlige grænseflade

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"

Der oprettes nu ejerskab og layer2-tilknytninger mellem TOR-switchen og porten, såvel som layer2-tilknytninger mellem agenter og porte. Nu vil den endelige topologi se ud som billedet nedenfor.

Tilføjelse af en node til Skydive-topologien manuelt via Skydive-klient

Nu er de to værter/agenter forbundet korrekt, og du kan teste forbindelsen eller oprette en korteste sti-fangst mellem de to værter.

PS Link til oprindelige indlæg

Vi leder efter folk, der kan skrive indlæg om andre Skydive-funktioner.
Telegram chat via skydive.network.

Kilde: www.habr.com

Tilføj en kommentar