Skydive-ը բաց կոդով, իրական ժամանակի ցանցի տոպոլոգիա և արձանագրության անալիզատոր է: Այն նպատակ ունի ապահովելու համապարփակ ճանապարհ՝ հասկանալու, թե ինչ է կատարվում ցանցային ենթակառուցվածքում:
Ձեզ հետաքրքրելու համար ես ձեզ մի քանի սքրինշոթ կտամ Skydive-ի մասին: Ստորև կլինի մի գրառում Skydive-ի ներածության մասին:
գրառում»
Skydive-ը ցուցադրում է ցանցի տոպոլոգիան՝ ստանալով ցանցային իրադարձություններ Skydive գործակալներից: Երբևէ մտածե՞լ եք, թե ինչպես ավելացնել կամ ցուցադրել տոպոլոգիայի դիագրամում ցանցային բաղադրիչներ, որոնք գտնվում են Skydive գործակալական ցանցից դուրս կամ ոչ ցանցային օբյեկտներ, ինչպիսիք են TOR-ը, տվյալների պահեստը և այլն: Այդ մասին այլևս անհանգստանալու կարիք չկա՝ շնորհիվ Node rule API-ի:
0.20 տարբերակից ի վեր Skydive-ը տրամադրում է Node կանոնի API, որը կարող է օգտագործվել նոր հանգույցներ և եզրեր ստեղծելու և գոյություն ունեցող հանգույցների մետատվյալները թարմացնելու համար: Node կանոնի API-ն բաժանված է երկու API-ի՝ հանգույցի կանոնների API-ի և եզրային կանոնների API-ի: Node Rule API-ն օգտագործվում է նոր հանգույց ստեղծելու և գոյություն ունեցող հանգույցի մետատվյալները թարմացնելու համար։ Edge կանոն API-ն օգտագործվում է երկու հանգույցների միջև սահման ստեղծելու համար, այսինքն. միացնում է երկու հանգույց:
Այս բլոգում մենք կտեսնենք երկու օգտագործման դեպքեր, որոնցից մեկը ցանցային բաղադրիչ է, որը skydive ցանցի մաս չէ: Երկրորդ տարբերակը ոչ ցանցային բաղադրիչն է: Մինչ այդ, մենք կանդրադառնանք Topology Rules 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 Edge-ի ստեղծում
Եզր ստեղծելու համար դուք պետք է նշեք սկզբնաղբյուրը և նպատակակետային հանգույցները և եզրի կապի տեսակը, երեխայի հանգույց ստեղծելու համար կապի տիպի արժեքը պետք է լինի սեփականության իրավունքը, նմանապես, կապի տիպի շերտ2 ստեղծելու համար, հղումի տեսակի արժեքը պետք է լինի. շերտ 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 տոպոլոգիայում: Համարենք, որ մենք ունենք տվյալների պահեստ, որը պետք է ցուցադրվի skydive տոպոլոգիայի դիագրամում՝ որոշ օգտակար մետատվյալներով:
Մենք պարզապես պետք է ստեղծենք հանգույցի կանոն՝ սարքը տոպոլոգիայում ավելացնելու համար: Մենք կարող ենք սարքի մետատվյալներ ավելացնել որպես ստեղծել հրամանի մաս, կամ հետագայում ստեղծել մեկ կամ մի քանի թարմացման հանգույցի կանոնների հրամաններ:
Տոպոլոգիայի դիագրամում պահեստավորման սարք ավելացնելու համար գործարկեք հյուրընկալող կանոնի հետևյալ հրամանը:
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 անջատիչ: Թեև մենք կարող ենք հասնել դրան՝ սահմանելով կառուցվածքային հանգույցներ և հղումներ կազմաձևման ֆայլում, եկեք տեսնենք, թե ինչպես կարող ենք նույնն անել՝ օգտագործելով Topology Rules API-ն:
Առանց TOR անջատիչի, երկու գործակալները կհայտնվեն որպես երկու տարբեր հանգույցներ՝ առանց որևէ կապի, ինչպես ցույց է տրված ստորև նկարում:
Այժմ գործարկեք հետևյալ Host Rules հրամանները՝ 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 switch պորտի 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"
Այժմ ստեղծվում են սեփականության և layer2 ասոցիացիաներ TOR անջատիչի և պորտի միջև, ինչպես նաև layer2 ասոցիացիաներ գործակալների և նավահանգիստների միջև: Այժմ վերջնական տոպոլոգիան նման կլինի ստորև ներկայացված պատկերին:
Այժմ երկու հոսթները/գործակալները ճիշտ են միացված, և դուք կարող եք փորձարկել կապը կամ ստեղծել ամենակարճ ճանապարհը երկու հոսթների միջև:
PS Հղում դեպի
Մենք փնտրում ենք մարդկանց, ովքեր կարող են գրառումներ գրել Skydive-ի այլ հնարավորությունների մասին:
Source: www.habr.com