Skydive клиентээр дамжуулан Skydive топологид зангилаа нэмж байна

Skydive бол нээлттэй эх сурвалж, бодит цагийн сүлжээний топологи, протокол анализатор юм. Энэ нь сүлжээний дэд бүтцэд юу болж байгааг ойлгох цогц арга замыг өгөх зорилготой юм.

Таны сонирхлыг татахын тулд би Skydive-ийн талаар хэдэн дэлгэцийн агшин өгөх болно. Доор нь Skydive-ийн танилцуулгатай нийтлэл байх болно.

Skydive клиентээр дамжуулан Skydive топологид зангилаа нэмж байна

Skydive клиентээр дамжуулан Skydive топологид зангилаа нэмж байна

Нийтлэл "skydive.network-ийн танилцуулга» Хабре дээр.

Skydive нь Skydive агентуудаас сүлжээний үйл явдлуудыг хүлээн авснаар сүлжээний топологийг харуулдаг. Та Skydive агент сүлжээнээс гадуур байгаа сүлжээний бүрэлдэхүүн хэсгүүд эсвэл TOR, өгөгдөл хадгалах гэх мэт сүлжээний бус объектуудыг хэрхэн топологийн диаграммд нэмэх, харуулах талаар бодож байсан уу. Node дүрмийн API-ийн ачаар энэ талаар санаа зовох шаардлагагүй болсон.

0.20 хувилбараас хойш Skydive нь шинэ зангилаа, ирмэг үүсгэх, одоо байгаа зангилааны мета өгөгдлийг шинэчлэхэд ашиглаж болох Node дүрмийн API-г өгдөг. Зангилааны дүрмийн API нь зангилааны дүрмийн API болон захын дүрмийн API гэсэн хоёр API-д хуваагдана. Node Rule API нь шинэ зангилаа үүсгэх, одоо байгаа зангилааны мета өгөгдлийг шинэчлэхэд ашиглагддаг. Edge дүрмийн API нь хоёр зангилааны хоорондох хил хязгаарыг бий болгоход хэрэглэгддэг, i.e. хоёр зангилаа холбодог.

Энэ блогт бид хоёр ашиглалтын тохиолдлыг харах болно, тэдгээрийн нэг нь шүхрээр буух сүлжээний нэг хэсэг биш сүлжээний бүрэлдэхүүн хэсэг юм. Хоёр дахь сонголт нь сүлжээний бус бүрэлдэхүүн хэсэг юм. Үүнээс өмнө бид 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 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 шилжүүлэгч хэрэгтэй. Хэдийгээр бид тохиргооны файл дахь бүтцийн зангилаа болон холбоосыг тодорхойлох замаар үүнийг хийж чадна, гэхдээ бид Topology Rules API ашиглан хэрхэн ижил зүйлийг хийж болохыг харцгаая.

TOR шилжүүлэгчгүйгээр хоёр агент нь доорх зурагт үзүүлсэн шиг ямар ч холбоосгүй хоёр өөр зангилаа болж харагдах болно.

Skydive клиентээр дамжуулан Skydive топологид зангилаа нэмж байна

Одоо TOR шилжүүлэгч болон портуудыг үүсгэхийн тулд дараах Host Rules командуудыг ажиллуулна уу.

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 топологид зангилаа нэмж байна

Одоо TOR шилжүүлэгч, порт 1 болон хост 1-ийн нийтийн интерфейсийн хооронд холболт үүсгэхийн тулд дараах Edge Rule командуудыг ажиллуулна уу.

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 холбоосууд, мөн агентууд болон портуудын хоорондох давхаргын 2 холбоосууд үүсгэгдсэн. Одоо эцсийн топологи нь доорх зураг шиг харагдах болно.

Skydive клиентээр дамжуулан Skydive топологид зангилаа нэмж байна

Одоо хоёр хост/агент зөв холбогдсон бөгөөд та холболтыг шалгах эсвэл хоёр хостын хооронд хамгийн богино замыг үүсгэх боломжтой.

PS холбоос анхны нийтлэл

Бид Skydive-ын бусад функцуудын талаар нийтлэл бичиж чадах хүмүүсийг хайж байна.
Telegram чат skydive.network-ээр дамжуулан.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх