Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Skydive er en åpen kildekode, sanntids nettverkstopologi og protokollanalysator. Den har som mål å gi en omfattende måte å forstå hva som skjer i en nettverksinfrastruktur.

For å interessere deg, vil jeg gi deg et par skjermbilder om Skydive. Nedenfor vil det komme et innlegg om en introduksjon til Skydive.

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Post "Introduksjon til fallskjermhopping.nettverk» på Habré.

Skydive viser nettverkstopologien ved å motta nettverkshendelser fra Skydive-agenter. Har du noen gang lurt på hvordan du legger til eller viser i et topologidiagram nettverkskomponenter som er utenfor Skydive-agentnettverket eller ikke-nettverksobjekter som TOR, datalagring osv. Du trenger ikke bekymre deg for det lenger takket være Node rule API.

Siden versjon 0.20 har Skydive en Node rule API som kan brukes til å lage nye noder og kanter og til å oppdatere metadataene til eksisterende noder. Node rule API er delt inn i to APIer: node rule API og edge rule API. Node Rule API brukes til å opprette en ny node og oppdatere metadataene til en eksisterende node. Edgeregel API brukes til å lage en grense mellom to noder, dvs. kobler sammen to noder.

I denne bloggen vil vi se to brukstilfeller, hvorav den ene er en nettverkskomponent som ikke er en del av fallskjermhoppingsnettverket. Det andre alternativet er en ikke-nettverkskomponent. Før det skal vi se på noen grunnleggende måter å bruke Topology Rules API på.

Opprette en skydive-node

For å opprette en node må du oppgi et unikt nodenavn og en gyldig nodetype. Du kan også gi noen tilleggsalternativer.

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

Oppdater metadata for Skydive Nodes

For å oppdatere metadataene til en eksisterende node, må du gi en gremlin-spørring for å velge nodene du vil oppdatere metadataene på. I henhold til forespørselen din kan du oppdatere metadataene til en eller flere noder ved å bruke 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')"
}

Opprette en Skydive Edge

For å opprette en kant må du spesifisere kilde- og destinasjonsnodene og lenketypen til kanten; for å opprette en undernode må koblingstypeverdien være eierskap; på samme måte, for å opprette en koblingstype layer2, må koblingstypeverdien være lag2. Du kan opprette mer enn én kobling mellom to noder, men koblingstypen må være forskjellig.

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 brukstilfelle

I dette tilfellet vil vi se på hvordan du viser en ikke-nettverksenhet i fallskjermhoppetoppologien. La oss vurdere at vi har et datavarehus som må vises i et fallskjermhoppstopologidiagram med noen nyttige metadata.

Vi trenger bare å lage en noderegel for å legge enheten til topologien. Vi kan legge til enhetsmetadata som en del av create-kommandoen, eller senere opprette en eller flere oppdateringsnoderegelkommandoer.

Kjør følgende vertsregelkommando for å legge til en lagringsenhet 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"

Kjør kommandoen under edge-regelen for å knytte den opprettede noden til vertsnoden.

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

Etter kommandoene ovenfor kan du nå se enheten synlig i fallskjermhoppetopologidiagrammet med de gitte metadataene som vist på bildet nedenfor.

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Andre brukstilfelle

I dette tilfellet vil vi se hvordan du legger til en nettverksenhet som ikke er en del av fallskjermhoppnettverket. La oss se på dette eksemplet. Vi har to fallskjermhoppeagenter som kjører på to forskjellige verter, for å koble disse to vertene trenger vi en TOR-svitsj. Selv om vi kan oppnå dette ved å definere strukturnoder og lenker i en konfigurasjonsfil, la oss se hvordan vi kan gjøre det samme ved å bruke Topology Rules API.

Uten en TOR-svitsj vil de to agentene vises som to forskjellige noder uten noen koblinger, som vist på bildet nedenfor.

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Kjør nå følgende Host Rules-kommandoer for å lage TOR-svitsjen 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-bryteren og portene opprettet og lagt til fallskjermhoppetoppologien, og topologien vil nå se ut som bildet nedenfor.

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Kjør nå følgende Edge Rule-kommandoer for å opprette en forbindelse mellom TOR-svitsjen, port 1 og det offentlige grensesnittet til vert 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"

Kjør følgende kommandoer for å opprette en kobling mellom TOR-svitsjport 2 og vert 2 offentlig grensesnitt

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"

Eierskap og lag2-tilknytninger opprettes nå mellom TOR-svitsjen og porten, samt lag2-tilknytninger mellom agenter og porter. Nå vil den endelige topologien se ut som bildet nedenfor.

Legge til en node til Skydive-topologien manuelt via Skydive-klienten

Nå er de to vertene/agentene tilkoblet riktig, og du kan teste tilkoblingen eller lage en korteste banefangst mellom de to vertene.

PS Link til opprinnelig innlegg

Vi ser etter folk som kan skrive innlegg om andre Skydive-funksjoner.
Telegram chat via skydive.network.

Kilde: www.habr.com

Legg til en kommentar