اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت Skydive

Skydive یک منبع باز، توپولوژی شبکه و آنالیز پروتکل بلادرنگ است. هدف آن ارائه یک راه جامع برای درک آنچه در زیرساخت شبکه اتفاق می افتد.

برای علاقه مندی شما، چند تصویر از Skydive به شما می دهم. در زیر پستی در مورد معرفی Skydive وجود خواهد داشت.

اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت Skydive

اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت Skydive

پست "مقدمه ای بر skydive.network» در هابره.

Skydive توپولوژی شبکه را با دریافت رویدادهای شبکه از عوامل Skydive نمایش می دهد. آیا تا به حال به این فکر کرده اید که چگونه اجزای شبکه را که خارج از شبکه عامل Skydive یا اشیاء غیر شبکه ای مانند TOR، ذخیره سازی داده ها و غیره هستند، در نمودار توپولوژی اضافه یا نمایش دهید. به لطف Node rule API دیگر نیازی به نگرانی در مورد آن نیست.

از نسخه 0.20، Skydive یک API قانون گره ارائه می کند که می تواند برای ایجاد گره ها و لبه های جدید و به روز رسانی ابرداده گره های موجود استفاده شود. Node rule API به دو API تقسیم می شود: API قانون گره و API قانون لبه. Node Rule 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 Nodes Metadata

برای به روز رسانی ابرداده یک گره موجود، باید یک پرس و جوی 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

مورد استفاده دوم

در این مورد نحوه اضافه کردن یک دستگاه شبکه که بخشی از شبکه skydive نیست را خواهیم دید. بیایید به این مثال نگاه کنیم. ما دو عامل skydive داریم که روی دو هاست مختلف اجرا می شوند، برای اتصال این دو هاست به یک سوئیچ TOR نیاز داریم. حتی اگر می‌توانیم با تعریف گره‌ها و پیوندهای ساختاری در یک فایل پیکربندی به این مهم دست یابیم، بیایید ببینیم چگونه می‌توانیم با استفاده از API قوانین توپولوژیکی همین کار را انجام دهیم.

همانطور که در تصویر زیر نشان داده شده است، بدون سوئیچ TOR، دو عامل به صورت دو گره مختلف بدون هیچ پیوندی ظاهر می شوند.

اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت Skydive

اکنون دستورات 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 اضافه شده اند و اکنون توپولوژی مانند تصویر زیر خواهد بود.

اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت 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"

مالکیت و ارتباط لایه 2 بین سوئیچ TOR و پورت و همچنین ارتباط لایه 2 بین عامل ها و پورت ها ایجاد شده است. اکنون توپولوژی نهایی مانند تصویر زیر خواهد بود.

اضافه کردن یک گره به توپولوژی Skydive به صورت دستی از طریق کلاینت Skydive

اکنون دو هاست/عامل به درستی به هم متصل شده‌اند و می‌توانید اتصال را آزمایش کنید یا کوتاه‌ترین مسیر را بین دو میزبان ایجاد کنید.

PS لینک به پست اصلی

ما به دنبال افرادی هستیم که بتوانند در مورد سایر ویژگی های Skydive پست بنویسند.
چت تلگرام از طریق skydive.network.

منبع: www.habr.com

اضافه کردن نظر