| IPVSADM(8) | Linux Administrator's Guide | IPVSADM(8) |
نام (NAME)
ipvsadm - ابزار مدیریت سرویس سرور مجازی لینوکس (IPVS)
خلاصه دستور (SYNOPSIS)
ipvsadm -A|E virtual-service [-s scheduler]
[-p [timeout]] [-M netmask] [-b sched-flags]
ipvsadm -D virtual-service
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e virtual-service -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d virtual-service -r server-address
ipvsadm -L|l [virtual-service] [options]
ipvsadm -Z [virtual-service]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [daemon-options] [--syncid
syncid]
ipvsadm --stop-daemon state
ipvsadm -h
توضیحات (DESCRIPTION)
دستور Ipvsadm(8) برای راهاندازی، نگهداری یا بازرسی جدول سرور مجازی در هسته لینوکس استفاده میشود. سرور مجازی لینوکس (LVS) میتواند برای ساخت سرویسهای شبکهای مقیاسپذیر بر پایه کلاستری از دو یا چند گره به کار رود. گره فعال کلاستر، درخواستهای سرویس را به مجموعهای از میزبانهای سرور هدایت میکند که عملاً خدمات را انجام میدهند. قابلیتهای پشتیبانیشده شامل سه پروتکل (TCP، UDP و SCTP)، سه روش هدایت بسته (NAT، تونلسازی و مسیریابی مستقیم) و هشت الگوریتم متعادلسازی بار (نوبتگردشی، نوبتگردشی وزندار، کمترین اتصال، کمترین اتصال وزندار، کمترین اتصال مبتنی بر محلی بودن، کمترین اتصال مبتنی بر محلی بودن با تکرار، درهمسازی مقصد و درهمسازی مبدأ) است.
این دستور دارای دو قالب اجرایی پایه است:
- ipvsadm COMMAND virtual-service
- [scheduling-method] [persistence options]
- ipvsadm command virtual-service
- server-address [packet-forwarding-method] [weight options]
قالب نخست یک سرویس مجازی و الگوریتم تخصیص درخواستهای سرویس به سرورهای واقعی را مدیریت میکند. به صورت اختیاری، یک مهلت زمانی ماندگاری و ماسک شبکه برای تعیین دقت تفکیک سرویس ماندگار و همچنین یک موتور ماندگاری میتواند مشخص شود. قالب دوم، یک سرور واقعی مرتبط با یک سرویس مجازی موجود را مدیریت میکند. هنگام مشخص کردن یک سرور واقعی، روش هدایت بسته و وزن سرور واقعی نسبت به سایر سرورهای واقعی آن سرویس مجازی میتواند تعیین شود، در غیر این صورت مقادیر پیشفرض استفاده خواهند شد.
دستورها (COMMANDS)
دستور ipvsadm(8) دستورهای شرح داده شده در زیر را میشناسد. دستورهای با حروف بزرگ، سرویسهای مجازی را مدیریت میکنند. دستورهای با حروف کوچک، سرورهای واقعی متصل به یک سرویس مجازی را مدیریت میکنند.
- -A, --add-service
- افزودن یک سرویس مجازی. نشانی یک سرویس به طور یکتا با یک سهتایی مشخص میشود: نشانی IP، شماره درگاه و پروتکل. همچنین میتوان یک سرویس مجازی را با علامت فایروال (firewall-mark) تعریف کرد.
- -E, --edit-service
- ویرایش یک سرویس مجازی.
- -D, --delete-service
- حذف یک سرویس مجازی به همراه تمام سرورهای واقعی مرتبط با آن.
- -C, --clear
- پاک کردن جدول سرور مجازی.
- -R, --restore
- بازیابی قوانین سرور مجازی لینوکس از ورودی استاندارد (stdin). هر خط خوانده شده از ورودی استاندارد به عنوان گزینههای خط فرمان برای یک فراخوانی جداگانه از ipvsadm در نظر گرفته میشود. خطوط خوانده شده از ورودی استاندارد میتوانند به صورت اختیاری با "ipvsadm" آغاز شوند. این گزینه برای جلوگیری از اجرای تعداد زیادی دستور ipvsadm هنگام ساخت یک جدول مسیریابی گسترده مفید است.
- -S, --save
- تخلیه قوانین سرور مجازی لینوکس در خروجی استاندارد (stdout) در قالبی که بتواند توسط -R|--restore خوانده شود.
- -a, --add-server
- افزودن یک سرور واقعی به یک سرویس مجازی.
- -e, --edit-server
- ویرایش یک سرور واقعی در یک سرویس مجازی.
- -d, --delete-server
- حذف یک سرور واقعی از یک سرویس مجازی.
- -L, -l, --list
- فهرست کردن جدول سرور مجازی در صورتی که هیچ آرگومانی مشخص نشده باشد. اگر یک service-address انتخاب شده باشد، فقط همین سرویس فهرست میشود. اگر گزینه -c انتخاب شده باشد، جدول اتصالات نمایش داده میشود. خروجی دقیق تحت تأثیر سایر آرگومانهای ارائهشده قرار میگیرد.
- -Z, --zero
- صفر کردن شمارندههای بستهها، بایتها و نرخها در یک سرویس یا تمام سرویسها.
- --set tcp tcpfin udp
- تغییر مقادیر مهلت زمانی (timeout) مورد استفاده برای اتصالات IPVS. این دستور همیشه ۳ پارامتر میگیرد که به ترتیب بیانگر مقادیر مهلت زمانی (به ثانیه) برای نشستهای TCP، نشستهای TCP پس از دریافت بسته FIN، و بستههای UDP هستند. مقدار مهلت زمانی 0 به این معنی است که مقدار مهلت زمانی فعلی مدخل مربوطه حفظ میشود.
- --start-daemon state
- شروع دیمن همگامسازی اتصالات. پارامتر state مشخص میکند که دیمن در حالت master (اصلی) یا backup (پشتیبان) راهاندازی شود. دیمن همگامسازی اتصالات در هسته لینوکس پیادهسازی شده است. دیمن اصلی که روی متعادلکننده بار اولیه اجرا میشود، تغییرات اتصالات را به طور دورهای به صورت چندپخشی (multicast) ارسال میکند، و دیمن پشتیبان که روی متعادلکنندههای بار پشتیبان اجرا میشود پیامهای چندپخشی را دریافت کرده و اتصالات متناظر را ایجاد میکند. در این صورت، اگر متعادلکننده بار اولیه با شکست مواجه شود، یک متعادلکننده بار پشتیبان وظایف را به دست میگیرد و وضعیت تقریباً تمام اتصالات را در اختیار دارد، به طوری که تقریباً تمام اتصالات برقرارشده میتوانند به دسترسی به سرویس ادامه دهند.
دیمن همگامسازی از اتصالات IPv4 و IPv6 پشتیبانی میکند.
- --stop-daemon
- متوقف کردن دیمن همگامسازی اتصالات.
- -h, --help
- نمایش توضیحی درباره نحو و قواعد دستور.
سرویس مجازی (virtual-service)
سرویس مجازی را بر پایه پروتکل/نشانی/درگاه یا علامت فایروال مشخص میکند.
- -t, --tcp-service service-address
- استفاده از سرویس TCP. پارامتر service-address به فرم host[:port] است. Host میتواند یک نشانی IP ساده یا نام میزبان باشد. Port میتواند یک شماره درگاه عددی یا نام سرویسِ درگاه باشد. Port میتواند حذف شود که در این حالت صفر استفاده خواهد شد. مقدار Port برابر صفر تنها زمانی معتبر است که سرویس با گزینه -p|--persistent ماندگار شده باشد؛ در این حالت درگاه عام (wild-card) محسوب میشود و اتصالات به هر درگاهی پذیرفته خواهند شد.
- -u, --udp-service service-address
- استفاده از سرویس UDP. برای مشاهده توضیحات service-address گزینه -t|--tcp-service را ببینید.
- --sctp-service service-address
- استفاده از سرویس SCTP. برای مشاهده توضیحات service-address گزینه -t|--tcp-service را ببینید.
- -f, --fwmark-service integer
- استفاده از
علامت
فایروال
(firewall-mark)، که یک
مقدار عدد
صحیح
بزرگتر از
صفر است، به
جای نشانی،
درگاه و
پروتکل (UDP، TCP
یا SCTP) برای
نشان دادن
یک سرویس
مجازی.
علامتگذاری
بستهها با
علامت
فایروال با
استفاده از
گزینه -m|--mark در
iptables(8)، گزینه
meta mark set value در nft(8) یا
از طریق یک
برنامه eBPF
پیکربندی
میشود. این
گزینه
میتواند
برای ساخت
یک سرویس
مجازی
مرتبط با
همان
سرورهای
واقعی،
شامل چندین
سهتایی از
نشانی IP،
درگاه و
پروتکل به
کار رود. در
صورت
استفاده از
نشانیهای
IPv6، باید از
گزینه -6
استفاده
شود.
استفاده از سرویسهای مجازی با علامت فایروال، روش مناسبی برای گروهبندی نشانیهای IP، درگاهها و پروتکلهای مختلف در قالب یک سرویس مجازی واحد فراهم میکند. این کار هم برای سادهسازی پیکربندی در صورت نیاز به تعداد زیادی سرویس مجازی مفید است و هم برای گروهبندی ماندگاری در میان سرویسهایی که در غیر این صورت چند سرویس مجازی جداگانه میبودند.
پارامترها (PARAMETERS)
دستورهای بالا هیچ یا چند مورد از پارامترهای زیر را میپذیرند یا به آنها نیاز دارند.
- -s, --scheduler scheduling-method
- scheduling-method
الگوریتم
تخصیص
اتصالات TCP و
دیتاگرامهای
UDP به
سرورهای
واقعی است.
الگوریتمهای
زمانبندی
به عنوان
ماژولهای
هسته
پیادهسازی
شدهاند. ده
مورد به
همراه سرور
مجازی
لینوکس
عرضه
میشوند:
rr - نوبتگردشی (Round Robin): کارها را به طور مساوی میان سرورهای واقعی در دسترس توزیع میکند.
wrr - نوبتگردشی وزندار (Weighted Round Robin): کارها را متناسب با وزن سرورهای واقعی به آنها اختصاص میدهد. سرورهای با وزن بالاتر ابتدا کارهای جدید را دریافت میکنند و نسبت به سرورهای با وزن کمتر کارهای بیشتری میگیرند. سرورهای با وزن برابر سهم مساوی از کارهای جدید دریافت میکنند.
lc - کمترین اتصال (Least-Connection): کارهای بیشتری را به سرورهای واقعی با کارهای فعال کمتر اختصاص میدهد.
wlc - کمترین اتصال وزندار (Weighted Least-Connection): کارهای بیشتری را به سرورهای با کارهای کمتر و متناسب با وزن سرور واقعی (Ci/Wi) اختصاص میدهد. این گزینه پیشفرض است.
lblc - کمترین اتصال مبتنی بر محلی بودن (Locality-Based Least-Connection): کارهای دارای مقصد نشانی IP یکسان را به همان سرور اختصاص میدهد، در صورتی که سرور بار اضافی نداشته و در دسترس باشد؛ در غیر این صورت کارها را به سرورهای با کارهای کمتر اختصاص داده و آن را برای تخصیصهای آینده نگه میدارد.
lblcr - کمترین اتصال مبتنی بر محلی بودن با تکرار (Locality-Based Least-Connection with Replication): کارهای با مقصد نشانی IP یکسان را به گره با کمترین اتصال در مجموعه سرورهای مربوط به آن نشانی IP اختصاص میدهد. اگر تمام گرههای مجموعه سرورها دارای بار اضافی باشند، یک گره با کارهای کمتر در کلاستر انتخاب کرده و آن را به مجموعه سرورهای هدف اضافه میکند. اگر مجموعه سرورها برای مدت زمان مشخصی تغییر نکرده باشد، گره با بیشترین بار از مجموعه سرورها حذف میشود تا از درجه بالای تکرار جلوگیری شود.
dh - درهمسازی مقصد (Destination Hashing): با جستجو در یک جدول درهمسازی اختصاصیافته به صورت ایستا بر اساس نشانی IP مقصد، کارها را به سرورها اختصاص میدهد.
sh - درهمسازی مبدأ (Source Hashing): با جستجو در یک جدول درهمسازی اختصاصیافته به صورت ایستا بر اساس نشانی IP مبدأ، کارها را به سرورها اختصاص میدهد. این زمانبند دارای دو فلگ است: sh-fallback که در صورت در دسترس نبودن سرور انتخابشده بازگشت به یک سرور دیگر را فعال میکند، و sh-port که شماره درگاه مبدأ را به محاسبات درهمسازی اضافه میکند.
sed - کوتاهترین تأخیر مورد انتظار (Shortest Expected Delay): یک کار ورودی را به سروری با کوتاهترین تأخیر مورد انتظار اختصاص میدهد. تأخیر مورد انتظاری که کار تجربه خواهد کرد در صورت ارسال به سرور i-ام برابر (Ci + 1) / Ui است، که در آن Ci تعداد کارهای روی سرور i-ام و Ui نرخ سرویسدهی ثابت (وزن) سرور i-ام است.
nq - هرگز در صف نماندن (Never Queue): یک کار ورودی را در صورت وجود به یک سرور بیکار اختصاص میدهد، به جای آنکه منتظر یک سرور سریع بماند؛ اگر تمام سرورها مشغول باشند، از سیاست کوتاهترین تأخیر مورد انتظار برای تخصیص کار استفاده میکند.
fo - جایگزینی با شکست وزندار (Weighted Failover): یک کار ورودی را به سروری با بالاترین وزن که در حال حاضر در دسترس است اختصاص میدهد.
ovf - سرریز وزندار (Weighted Overflow): یک کار ورودی را به سروری با بالاترین وزن که در حال حاضر در دسترس است اختصاص میدهد و هنگامی که اتصالات فعال از وزن گره فراتر رود، به سرور بعدی سرریز میکند. توجه داشته باشید که این زمانبند ممکن است برای UDP مناسب نباشد زیرا فقط از اتصالات فعال استفاده میکند.
mh - درهمسازی مگلو (Maglev Hashing): کارهای ورودی را بر اساس الگوریتم درهمسازی Maglev گوگل اختصاص میدهد، سهمی تقریباً برابر از کارها را برای هر سرور واقعی فراهم کرده و کمترین اختلال را ایجاد میکند. هنگامی که مجموعه سرورهای واقعی تغییر میکند، احتمالاً یک اتصال به همان سرور واقعی فرستاده میشود که قبلاً ارسال میشد. این زمانبند دارای دو فلگ است: mh-fallback که در صورت در دسترس نبودن سرور انتخابشده بازگشت به سرور دیگر را فعال میکند، و mh-port که شماره درگاه مبدأ را به محاسبات درهمسازی اضافه میکند.
- -p, --persistent [timeout]
- مشخص
میکند که
یک سرویس
مجازی
ماندگار (persistent)
است. در
صورت مشخص
شدن این
گزینه،
درخواستهای
چندگانه از
یک کلاینت
به همان
سرور واقعی
که برای
درخواست
اول انتخاب
شده بود
هدایت
میشوند. به
صورت
اختیاری،
timeout (مهلت
زمانی)
نشستهای
ماندگار
میتواند
بر حسب
ثانیه مشخص
شود، در غیر
این صورت
مقدار
پیشفرض
۳۰۰ ثانیه
استفاده
خواهد شد.
این گزینه
میتواند
در کنار
پروتکلهایی
مانند SSL یا FTP
استفاده
شود که در
آنها
اتصال
پیوسته
کلاینتها
به همان
سرور واقعی
اهمیت دارد.
نکته: اگر قرار است یک سرویس مجازی اتصالات FTP را مدیریت کند، در صورتی که از مسیریابی مستقیم (Direct Routing) یا تونلسازی (Tunnelling) به عنوان مکانیزم هدایت استفاده شود، ماندگاری باید برای سرویس مجازی تنظیم شود. اگر از Masquerading در کنار یک سرویس FTP استفاده شود، ماندگاری ضروری نیست، اما ماژول هسته ip_vs_ftp باید استفاده شود. این ماژول را میتوان به صورت دستی با استفاده از insmod(8) در هسته درج کرد.
- -M, --netmask netmask
- دقت تفکیکی که کلاینتها با آن برای سرویسهای مجازی ماندگار گروهبندی میشوند را مشخص میکند. نشانی مبدأ درخواست با این ماسک شبکه ماسک میشود تا تمام کلاینتهای یک شبکه به همان سرور واقعی هدایت شوند. مقدار پیشفرض 255.255.255.255 است؛ یعنی دقت تفکیک ماندگاری به ازای هر میزبان کلاینت است. ماسکهای شبکه با عمومیت بیشتر میتوانند برای حل مشکلات خوشههای کش غیرماندگار در سمت کلاینت استفاده شوند. ماسکهای شبکه IPv6 باید به عنوان طول پیشوند بین ۱ تا ۱۲۸ مشخص شوند. طول پیشوند پیشفرض ۱۲۸ است.
- --pe persistence-engine
- یک موتور ماندگاری جایگزین برای استفاده را مشخص میکند. در حال حاضر تنها موتور ماندگاری جایگزین موجود sip است.
- -b, --sched-flags sched-flags
- تنظیم فلگهای زمانبند برای این سرور مجازی. sched-flags یک فهرست جدا شده با کاما از فلگها است. برای مشاهده فلگهای معتبر زمانبند، توضیحات زمانبندها را ببینید.
- -r, --real-server server-address
- سرور واقعی که یک درخواست متناظر برای سرویس ممکن است به آن تخصیص یابد. server-address نشانی host یک سرور واقعی است و میتواند شامل port نیز باشد. Host میتواند یک نشانی IP ساده یا نام میزبان باشد. Port میتواند یک شماره درگاه ساده یا نام سرویسِ درگاه باشد. در روش masquerading، نشانی میزبان معمولاً یک نشانی IP خصوصی RFC 1918 است و درگاه میتواند متفاوت از درگاه سرویس مربوطه باشد. در روشهای تونلسازی و مسیریابی مستقیم، port باید برابر با درگاه نشانی سرویس باشد. برای سرویسهای عادی، در صورتی که port مشخص نشده باشد، درگاه تعیینشده در نشانی سرویس استفاده خواهد شد. برای سرویسهای fwmark، port میتواند حذف شود که در این حالت درگاه مقصد در سرور واقعی، همان درگاه مقصد درخواست ارسالشده به سرویس مجازی خواهد بود.
- [packet-forwarding-method]
-
-g, --gatewaying استفاده از gatewaying (مسیریابی مستقیم). این گزینه پیشفرض است.
-i, --ipip استفاده از کپسولهسازی ipip (تونلسازی).
--tun-type tun-type tun-type یکی از مقادیر ipip|gue|gre است. مقدار پیشفرض tun-type برابر با ipip است.
--tun-port tun-port tun-port یک عدد صحیح است که درگاه مقصد را مشخص میکند. فقط برای tun-type با مقدار gue معتبر است.
--tun-nocsum غیرفعال بودن جمعهای کنترلی (checksums) تونل را مشخص میکند. این حالت پیشفرض است. فقط برای tun-type با مقادیر gue و gre معتبر است.
--tun-csum فعال بودن جمعهای کنترلی تونل را مشخص میکند. فقط برای tun-type با مقادیر gue و gre معتبر است.
--tun-remcsum مشخص میکند که تخلیه بار جمع کنترلی از راه دور (Remote Checksum Offload) فعال است. فقط برای tun-type با مقدار gue معتبر است.
-m, --masquerading استفاده از masquerading (ترجمه دسترسی شبکه، یا NAT).
نکته: صرفنظر از مکانیزم هدایت بسته مشخصشده، سرورهای واقعی مربوط به نشانیهایی که رابطی برای آنها روی گره محلی وجود دارد، از روش هدایت محلی استفاده خواهند کرد و سپس بستههای سرورها به لایه بالاتر روی گره محلی ارسال میشوند. این مورد توسط ipvsadm قابل مشخص کردن نیست، بلکه با افزودن یا ویرایش سرورهای واقعی توسط هسته تنظیم میشود.
- -w, --weight weight
- Weight یک عدد صحیح است که ظرفیت یک سرور را نسبت به سایر سرورهای موجود در استخر مشخص میکند. مقادیر معتبر weight از 0 تا 65535 است. مقدار پیشفرض 1 است. سرورهای غیرفعال موقت (quiescent) با وزن صفر مشخص میشوند. یک سرور غیرفعال در تمامی الگوریتمهای زمانبندی ارائهشده با سرور مجازی لینوکس، هیچ کار جدیدی دریافت نخواهد کرد اما همچنان به کارهای موجود سرویس میدهد. تنظیم یک سرور غیرفعال در حالتی که سرور دارای بار اضافی است یا نیاز است برای تعمیر و نگهداری از مدار خارج شود، میتواند مفید باشد.
- -x, --u-threshold uthreshold
- uthreshold یک عدد صحیح است که آستانه بالای اتصال یک سرور را مشخص میکند. مقادیر معتبر uthreshold از 0 تا 65535 است. مقدار پیشفرض 0 است، به این معنی که آستانه بالای اتصال تنظیم نشده است. اگر uthreshold با مقادیر دیگری تنظیم شود، هنگامی که تعداد اتصالات سرور از آستانه بالای اتصال آن فراتر رود، هیچ اتصال جدیدی به آن ارسال نخواهد شد.
- -y, --l-threshold lthreshold
- lthreshold یک عدد صحیح است که آستانه پایین اتصال یک سرور را مشخص میکند. مقادیر معتبر lthreshold از 0 تا 65535 است. مقدار پیشفرض 0 است، به این معنی که آستانه پایین اتصال تنظیم نشده است. اگر lthreshold با مقادیر دیگری تنظیم شود، زمانی که تعداد اتصالات سرور به زیر آستانه پایین اتصال آن کاهش یابد، اتصالات جدید دریافت خواهد کرد. اگر lthreshold تنظیم نشده باشد اما uthreshold تنظیم شده باشد، هنگامی که تعداد اتصالات سرور به زیر سه چهارم آستانه بالای اتصال آن کاهش یابد، سرور اتصالات جدید دریافت خواهد کرد.
- -c, --connection
- خروجی اتصالات. دستور list همراه با این گزینه، اتصالات فعلی IPVS را فهرست میکند.
- --timeout
- خروجی مهلتهای زمانی. دستور list همراه با این گزینه، مقادیر مهلت زمانی (به ثانیه) را برای نشستهای TCP، نشستهای TCP پس از دریافت بسته FIN، و بستههای UDP نمایش میدهد.
- --daemon
- خروجی اطلاعات دیمن. دستور list همراه با این گزینه، وضعیت دیمن و رابط چندپخشی آن را نمایش میدهد.
- --stats
- خروجی اطلاعات آماری. دستور list همراه با این گزینه، اطلاعات آماری سرویسها و سرورهای آنها را نمایش میدهد.
- --rate
- خروجی اطلاعات نرخ. دستور list همراه با این گزینه، اطلاعات نرخ (مانند اتصالات بر ثانیه، بایت بر ثانیه و بسته بر ثانیه) سرویسها و سرورهای آنها را نمایش میدهد.
- --thresholds
- خروجی اطلاعات آستانهها. دستور list همراه با این گزینه، اطلاعات آستانه بالا/پایین اتصال هر سرور را در فهرست سرویس نمایش میدهد.
- --persistent-conn
- خروجی
اطلاعات
اتصال
ماندگار.
دستور list
همراه با
این گزینه،
اطلاعات
شمارنده
اتصال
ماندگار هر
سرور را در
فهرست
سرویس
نمایش
میدهد.
اتصال
ماندگار
برای هدایت
اتصالات
واقعی از یک
کلاینت/شبکه
یکسان به
همان سرور
استفاده
میشود.
دستور list همراه با گزینه -c, --connection و این گزینه، دادههای موتور ماندگاری را (در صورت وجود) هنگام فهرست کردن اتصالات نمایش خواهد داد.
- --tun-info
- خروجی اطلاعات تونلسازی. دستور list همراه با این گزینه، اطلاعات تونلسازی سرویسها و سرورهای آنها را نمایش میدهد.
- --sort
- مرتبسازی فهرست سرویسهای مجازی و سرورهای واقعی. مدخلهای سرویس مجازی به صورت صعودی بر اساس <پروتکل، نشانی، درگاه> مرتب میشوند. مدخلهای سرور واقعی به صورت صعودی بر اساس <نشانی، درگاه> مرتب میشوند (پیشفرض).
- --nosort
- عدم مرتبسازی فهرست سرویسهای مجازی و سرورهای واقعی.
- -n, --numeric
- خروجی عددی. نشانیهای IP و شماره درگاهها به جای نامهای میزبان و سرویسها، در قالب عددی چاپ میشوند که حالت پیشفرض است.
- --exact
- بسط و نمایش دقیق اعداد. نمایش مقدار دقیق شمارندههای بسته و بایت، به جای نمایش عدد گردشده در قالب K (ضریبهای ۱۰۰۰)، M (ضریبهای ۱۰۰۰K) یا G (ضریبهای ۱۰۰۰M). این گزینه فقط برای دستور -L کاربرد دارد.
- -6, --ipv6
- همراه با -f برای نشان دادن اینکه قانون fwmark از نشانیهای IPv6 استفاده میکند.
- -o, --ops
- زمانبندی تکبستهای (One-packet scheduling). در کنار یک سرویس مجازی UDP یا یک سرویس مجازی fwmark که فقط بستههای UDP را مدیریت میکند استفاده میشود. تمام اتصالات به گونهای ایجاد میشوند که تنها یک بسته را زمانبندی کنند.
پارامترهای دیمن همگامسازی (PARAMETERS FOR SYNCHRONIZATION DAEMON)
دستور --start-daemon به هیچ یا چند مورد از پارامترهای زیر نیاز دارد.
- --syncid syncid
- شناسه syncid را مشخص میکند که دیمن اصلی همگامسازی هنگام ارسال پیامهای چندپخشی در هدر SyncID قرار میدهد، یا دیمن پشتیبان همگامسازی برای فیلتر کردن پیامهای چندپخشی که با مقدار SyncID مطابقت ندارند از آن استفاده میکند. مقادیر معتبر syncid از 0 تا 255 است. مقدار پیشفرض 0 است که به معنای عدم اعمال هیچگونه فیلتر است.
- --sync-maxlen length
- طول مورد نظر برای پیامهای همگامسازی (اندازه داده مفید در UDP) را مشخص میکند. انتظار میرود سرور پشتیبان از مقداری استفاده کند که کمتر از مقدار مورد استفاده در سرور اصلی نباشد. مقادیر معتبر length در محدوده 1 .. (65535 - 20 - 8) قرار دارند اما هسته فضایی را حداقل برای یک پیام همگامسازی تضمین میکند. اگر مقدار کمتر از MTU باشد، پیامهای همگامسازی توسط لایه IP قطعهقطعه (fragment) خواهند شد. مقدار پیشفرض در زمان شروع دیمن از مقدار MTU مشتق میشود، اما دیمن اصلی به دلایل سازگاری به طور پیشفرض مقداری بالاتر از 1500 نخواهد داشت.
- --mcast-interface interface
- رابط چندپخشی را مشخص میکند که دیمن اصلی همگامسازی پیامهای چندپخشی خروجی را از طریق آن ارسال میکند، یا دیمن پشتیبان همگامسازی برای دریافت پیامهای چندپخشی به آن گوش میدهد.
- --mcast-group address
- نشانی چندپخشی IPv4 یا IPv6 را برای پیامهای همگامسازی مشخص میکند. مقدار پیشفرض 224.0.0.81 است.
- --mcast-port port
- درگاه UDP را برای پیامهای همگامسازی مشخص میکند. مقدار پیشفرض 8848 است.
- --mcast-ttl ttl
- مقدار TTL را برای پیامهای همگامسازی مشخص میکند (1 .. 255). مقدار پیشفرض 1 است.
مثال ۱ - سرویس مجازی ساده (EXAMPLE 1 - Simple Virtual Service)
دستورهای زیر یک هدایتکننده لینوکس (Linux Director) را به گونهای پیکربندی میکنند که درخواستهای ورودی به درگاه 80 در نشانی 207.175.44.110 را به طور مساوی به درگاه 80 روی پنج سرور واقعی توزیع کند. روش هدایت استفادهشده در این مثال NAT است، به طوری که هر یک از سرورهای واقعی توسط هدایتکننده لینوکس ماسک (masqueraded) میشوند.
ipvsadm -A -t 207.175.44.110:80 -s rr ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
روش دیگر، انجام این کار در قالب یک دستور واحد ipvsadm است:
echo " -A -t 207.175.44.110:80 -s rr -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m " | ipvsadm -R
از آنجا که در این مثال از masquerading به عنوان مکانیزم هدایت استفاده شده است، مسیر پیشفرض سرورهای واقعی باید روی هدایتکننده لینوکس تنظیم شود که خود باید برای هدایت و مبدل کردن بستهها پیکربندی شود. این کار را میتوان با دستورهای زیر انجام داد:
echo "1" > /proc/sys/net/ipv4/ip_forward
مثال ۲ - سرویس مجازی با علامت فایروال (EXAMPLE 2 - Firewall-Mark Virtual Service)
دستورهای زیر یک هدایتکننده لینوکس را برای توزیع مساوی درخواستهای ورودی ارسالشده به هر درگاهی در نشانیهای 207.175.44.110 یا 207.175.44.111 به درگاه متناظر روی پنج سرور واقعی پیکربندی میکنند. همانند مثال قبل، روش هدایت در این مثال NAT است و هر یک از سرورهای واقعی توسط هدایتکننده لینوکس مبدل (masqueraded) میشوند.
ipvsadm -A -f 1 -s rr ipvsadm -a -f 1 -r 192.168.10.1:0 -m ipvsadm -a -f 1 -r 192.168.10.2:0 -m ipvsadm -a -f 1 -r 192.168.10.3:0 -m ipvsadm -a -f 1 -r 192.168.10.4:0 -m ipvsadm -a -f 1 -r 192.168.10.5:0 -m
از آنجا که در این مثال از masquerading به عنوان مکانیزم هدایت استفاده شده است، مسیر پیشفرض سرورهای واقعی باید روی هدایتکننده لینوکس تنظیم شود که خود نیازمند پیکربندی برای هدایت و مبدلسازی بستهها است. سرور واقعی همچنین باید به گونهای پیکربندی شود که بستههای ورودی ارسالشده به هر درگاهی روی 207.175.44.110 و 207.175.44.111 را با علامت فایروال 1 نشانهگذاری کند. اگر قرار است ترافیک FTP توسط این سرویس مجازی مدیریت شود، ماژول هسته ip_vs_ftp باید در هسته درج شود. این عملیات را میتوان با استفاده از دستورهای زیر انجام داد:
echo "1" > /proc/sys/net/ipv4/ip_forward modprobe ip_tables iptables -A PREROUTING -t mangle -d 207.175.44.110/31 -j MARK --set-mark 1 modprobe ip_vs_ftp
مثال ۳ - سرویس مجازی با تونلسازی GUE (EXAMPLE 3 - Virtual Service with GUE Tunneling)
دستورهای زیر یک هدایتکننده لینوکس را پیکربندی میکنند تا درخواستهای ورودی به درگاه 80 در نشانی 207.175.44.110 را به طور مساوی به درگاه 80 روی پنج سرور واقعی توزیع کند. روش هدایت استفادهشده در این مثال تونلسازی با کپسولهسازی gue است.
ipvsadm -A -t 207.175.44.110:80 -s rr ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -i --tun-type gue --tun-port 6080 --tun-nocsum ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -i --tun-type gue --tun-port 6080 --tun-csum ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -i --tun-type gue --tun-port 6080 --tun-remcsum ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -i --tun-type gue --tun-port 6078 ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -i --tun-type gue --tun-port 6079
روش دیگر، انجام این کار در قالب یک دستور واحد ipvsadm است:
echo " -A -t 207.175.44.110:80 -s rr -a -t 207.175.44.110:80 -r 192.168.10.1:80 -i --tun-type gue --tun-port 6080 --tun-nocsum -a -t 207.175.44.110:80 -r 192.168.10.2:80 -i --tun-type gue --tun-port 6080 --tun-csum -a -t 207.175.44.110:80 -r 192.168.10.3:80 -i --tun-type gue --tun-port 6080 --tun-remcsum -a -t 207.175.44.110:80 -r 192.168.10.4:80 -i --tun-type gue --tun-port 6078 -a -t 207.175.44.110:80 -r 192.168.10.5:80 -i --tun-type gue --tun-port 6079 " | ipvsadm -R
مثال ۴ - سرویس مجازی با تونلسازی GRE (EXAMPLE 4 - Virtual Service with GRE Tunneling)
دستورهای زیر یک هدایتکننده لینوکس را برای استفاده از کپسولهسازی GRE پیکربندی میکنند.
ipvsadm -A -t 10.0.0.1:80 -s rr ipvsadm -a -t 10.0.0.1:80 -r 192.168.11.1:80 -i --tun-type gre --tun-csum
نشانیهای IPv6
نشانیهای IPv6 باید در براکت مربع ([ و ]) محصور شوند.
ipvsadm -A -t [2001:db8::80]:80 -s rr ipvsadm -a -t [2001:db8::80]:80 -r [2001:db8::a0a0]:80 -m
سرویسهای fwmark مبتنی بر IPv6 به گزینه -6 نیاز دارند.
نکات (NOTES)
سرور مجازی لینوکس سه راهبرد دفاعی را در برابر برخی انواع حملات محرومسازی از سرویس (DoS) پیادهسازی کرده است. هدایتکننده لینوکس برای حفظ وضعیت هر اتصال، یک مدخل ایجاد میکند و هر مدخل ۱۲۸ بایت حافظه مؤثر اشغال میکند. آسیبپذیری LVS در برابر حمله DoS ناشی از پتانسیل افزایش هرچه بیشتر تعداد مدخلها تا زمان اتمام حافظه هدایتکننده لینوکس است. این سه راهبرد دفاعی در برابر حمله عبارتند از: انداختن تصادفی برخی مدخلها در جدول؛ انداختن بستهها به نسبت 1/rate پیش از هدایت آنها؛ و استفاده از جدول گذار وضعیت امن TCP و مهلتهای زمانی کوتاه. این راهبردها توسط متغیرهای sysctl و مدخلهای متناظر در سیستم فایل /proc کنترل میشوند:
/proc/sys/net/ipv4/vs/drop_entry /proc/sys/net/ipv4/vs/drop_packet /proc/sys/net/ipv4/vs/secure_tcp
مقادیر معتبر برای هر متغیر از 0 تا 3 است. مقدار پیشفرض 0 است که راهبرد دفاعی مربوطه را غیرفعال میکند. مقادیر 1 و 2 حالتهای خودکار هستند - هنگامی که حافظه در دسترس کافی نباشد، راهبرد مربوطه فعال شده و متغیر به طور خودکار روی 2 تنظیم میشود، در غیر این صورت راهبرد غیرفعال شده و متغیر روی 1 تنظیم میشود. مقدار 3 نشان میدهد که راهبرد مربوطه همیشه فعال است. آستانه حافظه در دسترس و مهلتهای زمانی امن TCP را میتوان با استفاده از متغیرهای sysctl و مدخلهای متناظر در سیستم فایل /proc تنظیم کرد:
/proc/sys/net/ipv4/vs/amemthresh /proc/sys/net/ipv4/vs/timeout_*
فایلها (FILES)
/proc/net/ip_vs
/proc/net/ip_vs_app
/proc/net/ip_vs_conn
/proc/net/ip_vs_stats
/proc/sys/net/ipv4/vs/am_droprate
/proc/sys/net/ipv4/vs/amemthresh
/proc/sys/net/ipv4/vs/drop_entry
/proc/sys/net/ipv4/vs/drop_packet
/proc/sys/net/ipv4/vs/secure_tcp
/proc/sys/net/ipv4/vs/timeout_close
/proc/sys/net/ipv4/vs/timeout_closewait
/proc/sys/net/ipv4/vs/timeout_established
/proc/sys/net/ipv4/vs/timeout_finwait
/proc/sys/net/ipv4/vs/timeout_icmp
/proc/sys/net/ipv4/vs/timeout_lastack
/proc/sys/net/ipv4/vs/timeout_listen
/proc/sys/net/ipv4/vs/timeout_synack
/proc/sys/net/ipv4/vs/timeout_synrecv
/proc/sys/net/ipv4/vs/timeout_synsent
/proc/sys/net/ipv4/vs/timeout_timewait
/proc/sys/net/ipv4/vs/timeout_udp
همچنین ببینید (SEE ALSO)
وبسایت LVS به نشانی (http://www.linuxvirtualserver.org) برای مستندات بیشتر درباره LVS.
ipvsadm-save(8), ipvsadm-restore(8),
iptables(8),
insmod(8), modprobe(8)
نویسندگان (AUTHORS)
ipvsadm - Wensong Zhang <wensong@linuxvirtualserver.org> Peter Kese <peter.kese@ijs.si> man page - Mike Wangsmo <wanger@redhat.com> Wensong Zhang <wensong@linuxvirtualserver.org> Horms <horms@verge.net.au>
| 5th July 2003 | 4th Berkeley Distribution |