Skydive – гэта аналізатар тапалогіі сеткі і пратаколаў з адчыненым зыходным кодам у рэальным часе. Ён накіраваны на тое, каб даць вычарпальны спосаб зразумець, што адбываецца ў сеткавай інфраструктуры.
Каб зацікавіць вас, прывяду пару скрыншотаў пра Skydive. Крыху ніжэй будзе пост па ўвядзенні ў Skydive.
Пост «
Skydive адлюстроўвае тапалогію сеткі, атрымліваючы сеткавыя падзеі ад агентаў Skydive. Вы калі-небудзь задаваліся пытаннем, як дадаць або адлюстраваць на дыяграме тапалогіі сеткавыя кампаненты, якія знаходзяцца па-за агенцкай сеткай Skydive ці не сеткавыя аб'екты, такія як TOR, сховішча дадзеных і т. д. Больш не варта турбавацца пра гэта, дзякуючы Node rule API .
Пачынаючы з версіі 0.20, Skydive дае Node rule API, якое можа выкарыстоўвацца для стварэння новых вузлоў і рэбраў і для абнаўлення метададзеных існуючых вузлоў. Node rule API падзелены на два API-інтэрфейсу: API-інтэрфейс правілы вузла і API-інтэрфейс правілы рабра. API правілы вузла выкарыстоўваецца для стварэння новага вузла і абнаўлення метададзеных існуючага вузла. API правілы рабра выкарыстоўваецца для стварэння мяжы паміж двума вузламі, г.зн. звязвае два вузлы.
У гэтым блогу мы ўбачым два варыянты выкарыстання, адзін з якіх з'яўляецца сеткавым кампанентам, які не з'яўляецца часткай сеткі skydive. Другі варыянт - нясеткавы кампанент. Перад гэтым мы разгледзім некаторыя асноўныя спосабы выкарыстання API правілаў тапалогіі.
Стварэнне вузла Skydive
Каб стварыць вузел, неабходна паказаць унікальнае імя вузла і дапушчальны тып вузла. Вы таксама можаце даць некаторыя дадатковыя параметры.
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": ""
}
Абнаўленне Метададзеных Вузлоў Skydive
Каб абнавіць метададзеныя існуючага вузла, неабходна прадаставіць запыт на мове 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')"
}
Стварэнне рабра Skydive
Для стварэння рабра неабходна ўказаць зыходны і канчатковы вузлы і тып сувязі рэбры, для стварэння даччынага вузла значэнне тыпу сувязі павінна быць ownership аналагічна для стварэння сувязі тыпу layer2 значэнне тыпу сувязі павінна быць layer2. Вы можаце стварыць больш за адну сувязі паміж двума вузламі, але тып сувязі павінен быць розным.
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. Давайце разгледзім, што ў нас ёсць сховішча дадзеных, якое павінна быць адлюстравана ў тапалагічнай дыяграме skydive з некаторымі карыснымі метададзенымі.
Нам проста трэба стварыць правіла вузла, каб дадаць прыладу ў тапалогію. Мы можам дадаць метададзеныя прылады як частка каманды create ці пазней стварыць адну ці некалькі каманд update node rule.
Выканайце прыведзеную ніжэй каманду правіла вузла, каб дадаць запамінальную прыладу ў схему тапалогіі.
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. Давайце разгледзім гэты прыклад. У нас ёсць два агента skydive, якія працуюць на двух розных хастах, для падлучэння гэтых двух хастоў нам патрэбен камутатар TOR. Нават калі мы можам дасягнуць гэтага, вызначыўшы вузлы структуры і спасылкі ў канфігурацыйным файле, давайце паглядзім, як мы можам зрабіць тое ж самае з дапамогай API правілаў тапалогіі.
Без камутатара TOR два агенты будуць выглядаць як два розных вузла без якіх-небудзь спасылак, як паказана на малюнку ніжэй.
Цяпер выканайце наступныя каманды Правілы вузла, каб стварыць камутатар 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, і зараз тапалогія будзе выглядаць так, як паказана на малюнку ніжэй.
Цяпер выканайце прыведзеныя ніжэй каманды 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"
Цяпер ствараюцца сувязі ownership і layer2 паміж камутатарам TOR і портам, а таксама сувязі layer2 паміж агентамі і партамі. Цяпер канчатковая тапалогія будзе выглядаць так, як паказана на малюнку ніжэй.
Цяпер два хаста / агента звязаны правільна, і вы можаце праверыць падключэнне або стварыць захоп найкарацейшага шляху паміж двума хастамі.
PS Спасылка на
Шукаюцца людзі, якія маглі б пісаць пасты аб іншых магчымасцях Skydive.
Крыніца: habr.com