.\" .\" ipvsadm(8) manual page .\" .\" $Id$ .\" .\" Authors: Mike Wangsmo .\" Wensong Zhang .\" .\" Changes: .\" Horms : Updated to reflect recent change of ipvsadm .\" : Style guidance taken from ipchains(8) .\" where appropriate. .\" Wensong Zhang : Added a short note about the defense strategies .\" Horms : Tidy up some of the description and the .\" grammar in the -f and sysctl sections .\" Wensong Zhang : --set option description taken from ipchains(8) .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License, or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; if not, write to the Free Software .\" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. .\" .\" .TH IPVSADM 8 "5th July 2003" "LVS Administration" "Linux Administrator's Guide" .UC 4 .SH "نام (NAME)" ipvsadm \- ابزار مدیریت سرویس سرور مجازی لینوکس (IPVS) .SH "خلاصه دستور (SYNOPSIS)" .B ipvsadm -A|E \fIvirtual-service\fP [-s \fIscheduler\fP] .ti 15 .B [-p [\fItimeout\fP]] [-M \fInetmask\fP] [-b \fIsched-flags\fP] .br .B ipvsadm -D \fIvirtual-service\fP .br .B ipvsadm -C .br .B ipvsadm -R .br .B ipvsadm -S [-n] .br .B ipvsadm -a|e \fIvirtual-service\fP -r \fIserver-address\fP .ti 15 .B [-g|i|m] [-w \fIweight\fP] [-x \fIupper\fP] [-y \fIlower\fP] .br .B ipvsadm -d \fIvirtual-service\fP -r \fIserver-address\fP .br .B ipvsadm -L|l [\fIvirtual-service\fP] [options] .br .B ipvsadm -Z [\fIvirtual-service\fP] .br .B ipvsadm --set \fItcp\fP \fItcpfin\fP \fIudp\fP .br .B ipvsadm --start-daemon \fIstate\fP [daemon-options] .ti 15 .B [--syncid \fIsyncid\fP] .br .B ipvsadm --stop-daemon \fIstate\fP .br .B ipvsadm -h .SH "توضیحات (DESCRIPTION)" دستور \fBIpvsadm\fR(8) برای راه‌اندازی، نگهداری یا بازرسی جدول سرور مجازی در هسته لینوکس استفاده می‌شود. سرور مجازی لینوکس (LVS) می‌تواند برای ساخت سرویس‌های شبکه‌ای مقیاس‌پذیر بر پایه کلاستری از دو یا چند گره به کار رود. گره فعال کلاستر، درخواست‌های سرویس را به مجموعه‌ای از میزبان‌های سرور هدایت می‌کند که عملاً خدمات را انجام می‌دهند. قابلیت‌های پشتیبانی‌شده شامل سه پروتکل (TCP، UDP و SCTP)، سه روش هدایت بسته (NAT، تونل‌سازی و مسیریابی مستقیم) و هشت الگوریتم متعادل‌سازی بار (نوبت‌گردشی، نوبت‌گردشی وزن‌دار، کمترین اتصال، کمترین اتصال وزن‌دار، کمترین اتصال مبتنی بر محلی بودن، کمترین اتصال مبتنی بر محلی بودن با تکرار، درهم‌سازی مقصد و درهم‌سازی مبدأ) است. .PP این دستور دارای دو قالب اجرایی پایه است: .TP .B ipvsadm \fICOMMAND\fP \fIvirtual-service\fP .ti 15 .B [\fIscheduling-method\fP] [\fIpersistence options\fP] .TP .B ipvsadm \fIcommand\fP \fIvirtual-service\fP .ti 15 .B \fIserver-address\fP [\fIpacket-forwarding-method\fP] .ti 15 .B [\fIweight options\fP] .PP قالب نخست یک سرویس مجازی و الگوریتم تخصیص درخواست‌های سرویس به سرورهای واقعی را مدیریت می‌کند. به صورت اختیاری، یک مهلت زمانی ماندگاری و ماسک شبکه برای تعیین دقت تفکیک سرویس ماندگار و همچنین یک موتور ماندگاری می‌تواند مشخص شود. قالب دوم، یک سرور واقعی مرتبط با یک سرویس مجازی موجود را مدیریت می‌کند. هنگام مشخص کردن یک سرور واقعی، روش هدایت بسته و وزن سرور واقعی نسبت به سایر سرورهای واقعی آن سرویس مجازی می‌تواند تعیین شود، در غیر این صورت مقادیر پیش‌فرض استفاده خواهند شد. .SS "دستورها (COMMANDS)" دستور \fBipvsadm\fR(8) دستورهای شرح داده شده در زیر را می‌شناسد. دستورهای با حروف بزرگ، سرویس‌های مجازی را مدیریت می‌کنند. دستورهای با حروف کوچک، سرورهای واقعی متصل به یک سرویس مجازی را مدیریت می‌کنند. .TP .B -A, --add-service افزودن یک سرویس مجازی. نشانی یک سرویس به طور یکتا با یک سه‌تایی مشخص می‌شود: نشانی IP، شماره درگاه و پروتکل. همچنین می‌توان یک سرویس مجازی را با علامت فایروال (firewall-mark) تعریف کرد. .TP .B -E, --edit-service ویرایش یک سرویس مجازی. .TP .B -D, --delete-service حذف یک سرویس مجازی به همراه تمام سرورهای واقعی مرتبط با آن. .TP .B -C, --clear پاک کردن جدول سرور مجازی. .TP .B -R, --restore بازیابی قوانین سرور مجازی لینوکس از ورودی استاندارد (stdin). هر خط خوانده شده از ورودی استاندارد به عنوان گزینه‌های خط فرمان برای یک فراخوانی جداگانه از \fIipvsadm\fP در نظر گرفته می‌شود. خطوط خوانده شده از ورودی استاندارد می‌توانند به صورت اختیاری با "ipvsadm" آغاز شوند. این گزینه برای جلوگیری از اجرای تعداد زیادی دستور \fIipvsadm\fP هنگام ساخت یک جدول مسیریابی گسترده مفید است. .TP .B -S, --save تخلیه قوانین سرور مجازی لینوکس در خروجی استاندارد (stdout) در قالبی که بتواند توسط .BR -R|--restore خوانده شود. .TP .B -a, --add-server افزودن یک سرور واقعی به یک سرویس مجازی. .TP .B -e, --edit-server ویرایش یک سرور واقعی در یک سرویس مجازی. .TP .B -d, --delete-server حذف یک سرور واقعی از یک سرویس مجازی. .TP .B -L, -l, --list فهرست کردن جدول سرور مجازی در صورتی که هیچ آرگومانی مشخص نشده باشد. اگر یک \fIservice-address\fP انتخاب شده باشد، فقط همین سرویس فهرست می‌شود. اگر گزینه \fI-c\fP انتخاب شده باشد، جدول اتصالات نمایش داده می‌شود. خروجی دقیق تحت تأثیر سایر آرگومان‌های ارائه‌شده قرار می‌گیرد. .TP .B -Z, --zero صفر کردن شمارنده‌های بسته‌ها، بایت‌ها و نرخ‌ها در یک سرویس یا تمام سرویس‌ها. .TP .B --set \fItcp\fP \fItcpfin\fP \fIudp\fP تغییر مقادیر مهلت زمانی (timeout) مورد استفاده برای اتصالات IPVS. این دستور همیشه ۳ پارامتر می‌گیرد که به ترتیب بیانگر مقادیر مهلت زمانی (به ثانیه) برای نشست‌های TCP، نشست‌های TCP پس از دریافت بسته FIN، و بسته‌های UDP هستند. مقدار مهلت زمانی 0 به این معنی است که مقدار مهلت زمانی فعلی مدخل مربوطه حفظ می‌شود. .TP .B --start-daemon \fIstate\fP شروع دیمن همگام‌سازی اتصالات. پارامتر \fIstate\fP مشخص می‌کند که دیمن در حالت \fImaster\fP (اصلی) یا \fIbackup\fP (پشتیبان) راه‌اندازی شود. دیمن همگام‌سازی اتصالات در هسته لینوکس پیاده‌سازی شده است. دیمن اصلی که روی متعادل‌کننده بار اولیه اجرا می‌شود، تغییرات اتصالات را به طور دوره‌ای به صورت چندپخشی (multicast) ارسال می‌کند، و دیمن پشتیبان که روی متعادل‌کننده‌های بار پشتیبان اجرا می‌شود پیام‌های چندپخشی را دریافت کرده و اتصالات متناظر را ایجاد می‌کند. در این صورت، اگر متعادل‌کننده بار اولیه با شکست مواجه شود، یک متعادل‌کننده بار پشتیبان وظایف را به دست می‌گیرد و وضعیت تقریباً تمام اتصالات را در اختیار دارد، به طوری که تقریباً تمام اتصالات برقرارشده می‌توانند به دسترسی به سرویس ادامه دهند. .PP دیمن همگام‌سازی از اتصالات IPv4 و IPv6 پشتیبانی می‌کند. .TP .B --stop-daemon متوقف کردن دیمن همگام‌سازی اتصالات. .TP \fB-h, --help\fR نمایش توضیحی درباره نحو و قواعد دستور. .SS "سرویس مجازی (virtual-service)" سرویس مجازی را بر پایه پروتکل/نشانی/درگاه یا علامت فایروال مشخص می‌کند. .TP .B -t, --tcp-service \fIservice-address\fP استفاده از سرویس TCP. پارامتر \fIservice-address\fP به فرم \fIhost[:port]\fP است. \fIHost\fP می‌تواند یک نشانی IP ساده یا نام میزبان باشد. \fIPort\fP می‌تواند یک شماره درگاه عددی یا نام سرویسِ درگاه باشد. \fIPort\fP می‌تواند حذف شود که در این حالت صفر استفاده خواهد شد. مقدار \fIPort\fP برابر صفر تنها زمانی معتبر است که سرویس با گزینه .B -p|--persistent ماندگار شده باشد؛ در این حالت درگاه عام (wild-card) محسوب می‌شود و اتصالات به هر درگاهی پذیرفته خواهند شد. .TP .B -u, --udp-service \fIservice-address\fP استفاده از سرویس UDP. برای مشاهده توضیحات \fIservice-address\fP گزینه .B -t|--tcp-service را ببینید. .TP .B --sctp-service \fIservice-address\fP استفاده از سرویس SCTP. برای مشاهده توضیحات \fIservice-address\fP گزینه .B -t|--tcp-service را ببینید. .TP .B -f, --fwmark-service \fIinteger\fP استفاده از علامت فایروال (firewall-mark)، که یک مقدار عدد صحیح بزرگ‌تر از صفر است، به جای نشانی، درگاه و پروتکل (UDP، TCP یا SCTP) برای نشان دادن یک سرویس مجازی. علامت‌گذاری بسته‌ها با علامت فایروال با استفاده از گزینه .B -m|--mark در \fBiptables\fR(8)، گزینه .I meta mark set value در \fBnft\fR(8) یا از طریق یک برنامه eBPF پیکربندی می‌شود. این گزینه می‌تواند برای ساخت یک سرویس مجازی مرتبط با همان سرورهای واقعی، شامل چندین سه‌تایی از نشانی IP، درگاه و پروتکل به کار رود. در صورت استفاده از نشانی‌های IPv6، باید از گزینه .B \-6 استفاده شود. .sp استفاده از سرویس‌های مجازی با علامت فایروال، روش مناسبی برای گروه‌بندی نشانی‌های IP، درگاه‌ها و پروتکل‌های مختلف در قالب یک سرویس مجازی واحد فراهم می‌کند. این کار هم برای ساده‌سازی پیکربندی در صورت نیاز به تعداد زیادی سرویس مجازی مفید است و هم برای گروه‌بندی ماندگاری در میان سرویس‌هایی که در غیر این صورت چند سرویس مجازی جداگانه می‌بودند. .SS "پارامترها (PARAMETERS)" دستورهای بالا هیچ یا چند مورد از پارامترهای زیر را می‌پذیرند یا به آن‌ها نیاز دارند. .TP .B -s, --scheduler \fIscheduling-method\fP \fIscheduling-method\fP الگوریتم تخصیص اتصالات TCP و دیتاگرام‌های UDP به سرورهای واقعی است. الگوریتم‌های زمان‌بندی به عنوان ماژول‌های هسته پیاده‌سازی شده‌اند. ده مورد به همراه سرور مجازی لینوکس عرضه می‌شوند: .sp \fBrr\fR \- نوبت‌گردشی (Round Robin): کارها را به طور مساوی میان سرورهای واقعی در دسترس توزیع می‌کند. .sp \fBwrr\fR \- نوبت‌گردشی وزن‌دار (Weighted Round Robin): کارها را متناسب با وزن سرورهای واقعی به آن‌ها اختصاص می‌دهد. سرورهای با وزن بالاتر ابتدا کارهای جدید را دریافت می‌کنند و نسبت به سرورهای با وزن کمتر کارهای بیشتری می‌گیرند. سرورهای با وزن برابر سهم مساوی از کارهای جدید دریافت می‌کنند. .sp \fBlc\fR \- کمترین اتصال (Least-Connection): کارهای بیشتری را به سرورهای واقعی با کارهای فعال کمتر اختصاص می‌دهد. .sp \fBwlc\fR \- کمترین اتصال وزن‌دار (Weighted Least-Connection): کارهای بیشتری را به سرورهای با کارهای کمتر و متناسب با وزن سرور واقعی (Ci/Wi) اختصاص می‌دهد. این گزینه پیش‌فرض است. .sp \fBlblc\fR \- کمترین اتصال مبتنی بر محلی بودن (Locality-Based Least-Connection): کارهای دارای مقصد نشانی IP یکسان را به همان سرور اختصاص می‌دهد، در صورتی که سرور بار اضافی نداشته و در دسترس باشد؛ در غیر این صورت کارها را به سرورهای با کارهای کمتر اختصاص داده و آن را برای تخصیص‌های آینده نگه می‌دارد. .sp \fBlblcr\fR \- کمترین اتصال مبتنی بر محلی بودن با تکرار (Locality-Based Least-Connection with Replication): کارهای با مقصد نشانی IP یکسان را به گره با کمترین اتصال در مجموعه سرورهای مربوط به آن نشانی IP اختصاص می‌دهد. اگر تمام گره‌های مجموعه سرورها دارای بار اضافی باشند، یک گره با کارهای کمتر در کلاستر انتخاب کرده و آن را به مجموعه سرورهای هدف اضافه می‌کند. اگر مجموعه سرورها برای مدت زمان مشخصی تغییر نکرده باشد، گره با بیشترین بار از مجموعه سرورها حذف می‌شود تا از درجه بالای تکرار جلوگیری شود. .sp \fBdh\fR \- درهم‌سازی مقصد (Destination Hashing): با جستجو در یک جدول درهم‌سازی اختصاص‌یافته به صورت ایستا بر اساس نشانی IP مقصد، کارها را به سرورها اختصاص می‌دهد. .sp \fBsh\fR \- درهم‌سازی مبدأ (Source Hashing): با جستجو در یک جدول درهم‌سازی اختصاص‌یافته به صورت ایستا بر اساس نشانی IP مبدأ، کارها را به سرورها اختصاص می‌دهد. این زمان‌بند دارای دو فلگ است: sh-fallback که در صورت در دسترس نبودن سرور انتخاب‌شده بازگشت به یک سرور دیگر را فعال می‌کند، و sh-port که شماره درگاه مبدأ را به محاسبات درهم‌سازی اضافه می‌کند. .sp \fBsed\fR \- کوتاه‌ترین تأخیر مورد انتظار (Shortest Expected Delay): یک کار ورودی را به سروری با کوتاه‌ترین تأخیر مورد انتظار اختصاص می‌دهد. تأخیر مورد انتظاری که کار تجربه خواهد کرد در صورت ارسال به سرور i-ام برابر (Ci + 1) / Ui است، که در آن Ci تعداد کارهای روی سرور i-ام و Ui نرخ سرویس‌دهی ثابت (وزن) سرور i-ام است. .sp \fBnq\fR \- هرگز در صف نماندن (Never Queue): یک کار ورودی را در صورت وجود به یک سرور بیکار اختصاص می‌دهد، به جای آنکه منتظر یک سرور سریع بماند؛ اگر تمام سرورها مشغول باشند، از سیاست کوتاه‌ترین تأخیر مورد انتظار برای تخصیص کار استفاده می‌کند. .sp \fBfo\fR \- جایگزینی با شکست وزن‌دار (Weighted Failover): یک کار ورودی را به سروری با بالاترین وزن که در حال حاضر در دسترس است اختصاص می‌دهد. .sp \fBovf\fR \- سرریز وزن‌دار (Weighted Overflow): یک کار ورودی را به سروری با بالاترین وزن که در حال حاضر در دسترس است اختصاص می‌دهد و هنگامی که اتصالات فعال از وزن گره فراتر رود، به سرور بعدی سرریز می‌کند. توجه داشته باشید که این زمان‌بند ممکن است برای UDP مناسب نباشد زیرا فقط از اتصالات فعال استفاده می‌کند. .sp \fBmh\fR \- درهم‌سازی مگ‌لو (Maglev Hashing): کارهای ورودی را بر اساس الگوریتم درهم‌سازی Maglev گوگل اختصاص می‌دهد، سهمی تقریباً برابر از کارها را برای هر سرور واقعی فراهم کرده و کمترین اختلال را ایجاد می‌کند. هنگامی که مجموعه سرورهای واقعی تغییر می‌کند، احتمالاً یک اتصال به همان سرور واقعی فرستاده می‌شود که قبلاً ارسال می‌شد. این زمان‌بند دارای دو فلگ است: mh-fallback که در صورت در دسترس نبودن سرور انتخاب‌شده بازگشت به سرور دیگر را فعال می‌کند، و mh-port که شماره درگاه مبدأ را به محاسبات درهم‌سازی اضافه می‌کند. .TP .B -p, --persistent [\fItimeout\fP] مشخص می‌کند که یک سرویس مجازی ماندگار (persistent) است. در صورت مشخص شدن این گزینه، درخواست‌های چندگانه از یک کلاینت به همان سرور واقعی که برای درخواست اول انتخاب شده بود هدایت می‌شوند. به صورت اختیاری، \fItimeout\fP (مهلت زمانی) نشست‌های ماندگار می‌تواند بر حسب ثانیه مشخص شود، در غیر این صورت مقدار پیش‌فرض ۳۰۰ ثانیه استفاده خواهد شد. این گزینه می‌تواند در کنار پروتکل‌هایی مانند SSL یا FTP استفاده شود که در آن‌ها اتصال پیوسته کلاینت‌ها به همان سرور واقعی اهمیت دارد. .sp \fBنکته:\fR اگر قرار است یک سرویس مجازی اتصالات FTP را مدیریت کند، در صورتی که از مسیریابی مستقیم (Direct Routing) یا تونل‌سازی (Tunnelling) به عنوان مکانیزم هدایت استفاده شود، ماندگاری باید برای سرویس مجازی تنظیم شود. اگر از Masquerading در کنار یک سرویس FTP استفاده شود، ماندگاری ضروری نیست، اما ماژول هسته ip_vs_ftp باید استفاده شود. این ماژول را می‌توان به صورت دستی با استفاده از \fBinsmod\fR(8) در هسته درج کرد. .TP .B -M, --netmask \fInetmask\fP دقت تفکیکی که کلاینت‌ها با آن برای سرویس‌های مجازی ماندگار گروه‌بندی می‌شوند را مشخص می‌کند. نشانی مبدأ درخواست با این ماسک شبکه ماسک می‌شود تا تمام کلاینت‌های یک شبکه به همان سرور واقعی هدایت شوند. مقدار پیش‌فرض \fI255.255.255.255\fP است؛ یعنی دقت تفکیک ماندگاری به ازای هر میزبان کلاینت است. ماسک‌های شبکه با عمومیت بیشتر می‌توانند برای حل مشکلات خوشه‌های کش غیرماندگار در سمت کلاینت استفاده شوند. ماسک‌های شبکه IPv6 باید به عنوان طول پیشوند بین ۱ تا ۱۲۸ مشخص شوند. طول پیشوند پیش‌فرض ۱۲۸ است. .TP .B --pe \fIpersistence-engine\fP یک موتور ماندگاری جایگزین برای استفاده را مشخص می‌کند. در حال حاضر تنها موتور ماندگاری جایگزین موجود sip است. .TP .B -b, --sched-flags \fIsched-flags\fP تنظیم فلگ‌های زمان‌بند برای این سرور مجازی. \fIsched-flags\fP یک فهرست جدا شده با کاما از فلگ‌ها است. برای مشاهده فلگ‌های معتبر زمان‌بند، توضیحات زمان‌بندها را ببینید. .TP .B -r, --real-server \fIserver-address\fP سرور واقعی که یک درخواست متناظر برای سرویس ممکن است به آن تخصیص یابد. \fIserver-address\fP نشانی \fIhost\fP یک سرور واقعی است و می‌تواند شامل \fIport\fP نیز باشد. \fIHost\fP می‌تواند یک نشانی IP ساده یا نام میزبان باشد. \fIPort\fP می‌تواند یک شماره درگاه ساده یا نام سرویسِ درگاه باشد. در روش masquerading، نشانی میزبان معمولاً یک نشانی IP خصوصی RFC 1918 است و درگاه می‌تواند متفاوت از درگاه سرویس مربوطه باشد. در روش‌های تونل‌سازی و مسیریابی مستقیم، \fIport\fP باید برابر با درگاه نشانی سرویس باشد. برای سرویس‌های عادی، در صورتی که \fIport\fP مشخص نشده باشد، درگاه تعیین‌شده در نشانی سرویس استفاده خواهد شد. برای سرویس‌های fwmark، \fIport\fP می‌تواند حذف شود که در این حالت درگاه مقصد در سرور واقعی، همان درگاه مقصد درخواست ارسال‌شده به سرویس مجازی خواهد بود. .TP .B [packet-forwarding-method] .sp \fB-g, --gatewaying\fR استفاده از gatewaying (مسیریابی مستقیم). این گزینه پیش‌فرض است. .sp \fB-i, --ipip\fR استفاده از کپسوله‌سازی ipip (تونل‌سازی). .sp .ti +8 .B --tun-type \fItun-type\fP .ti +16 \fItun-type\fP یکی از مقادیر \fIipip\fP|\fIgue\fP|\fIgre\fP است. مقدار پیش‌فرض \fItun-type\fP برابر با \fIipip\fP است. .sp .ti +8 .B --tun-port \fItun-port\fP .ti +16 \fItun-port\fP یک عدد صحیح است که درگاه مقصد را مشخص می‌کند. فقط برای \fItun-type\fP با مقدار \fIgue\fP معتبر است. .sp .ti +8 .B --tun-nocsum .ti +16 غیرفعال بودن جمع‌های کنترلی (checksums) تونل را مشخص می‌کند. این حالت پیش‌فرض است. فقط برای \fItun-type\fP با مقادیر \fIgue\fP و \fIgre\fP معتبر است. .sp .ti +8 .B --tun-csum .ti +16 فعال بودن جمع‌های کنترلی تونل را مشخص می‌کند. فقط برای \fItun-type\fP با مقادیر \fIgue\fP و \fIgre\fP معتبر است. .sp .ti +8 .B --tun-remcsum .ti +16 مشخص می‌کند که تخلیه بار جمع کنترلی از راه دور (Remote Checksum Offload) فعال است. فقط برای \fItun-type\fP با مقدار \fIgue\fP معتبر است. .sp \fB-m, --masquerading\fR استفاده از masquerading (ترجمه دسترسی شبکه، یا NAT). .sp \fBنکته:\fR صرف‌نظر از مکانیزم هدایت بسته مشخص‌شده، سرورهای واقعی مربوط به نشانی‌هایی که رابطی برای آن‌ها روی گره محلی وجود دارد، از روش هدایت محلی استفاده خواهند کرد و سپس بسته‌های سرورها به لایه بالاتر روی گره محلی ارسال می‌شوند. این مورد توسط \fIipvsadm\fP قابل مشخص کردن نیست، بلکه با افزودن یا ویرایش سرورهای واقعی توسط هسته تنظیم می‌شود. .TP .B -w, --weight \fIweight\fP \fIWeight\fP یک عدد صحیح است که ظرفیت یک سرور را نسبت به سایر سرورهای موجود در استخر مشخص می‌کند. مقادیر معتبر \fIweight\fP از 0 تا 65535 است. مقدار پیش‌فرض 1 است. سرورهای غیرفعال موقت (quiescent) با وزن صفر مشخص می‌شوند. یک سرور غیرفعال در تمامی الگوریتم‌های زمان‌بندی ارائه‌شده با سرور مجازی لینوکس، هیچ کار جدیدی دریافت نخواهد کرد اما همچنان به کارهای موجود سرویس می‌دهد. تنظیم یک سرور غیرفعال در حالتی که سرور دارای بار اضافی است یا نیاز است برای تعمیر و نگهداری از مدار خارج شود، می‌تواند مفید باشد. .TP .B -x, --u-threshold \fIuthreshold\fP \fIuthreshold\fP یک عدد صحیح است که آستانه بالای اتصال یک سرور را مشخص می‌کند. مقادیر معتبر \fIuthreshold\fP از 0 تا 65535 است. مقدار پیش‌فرض 0 است، به این معنی که آستانه بالای اتصال تنظیم نشده است. اگر \fIuthreshold\fP با مقادیر دیگری تنظیم شود، هنگامی که تعداد اتصالات سرور از آستانه بالای اتصال آن فراتر رود، هیچ اتصال جدیدی به آن ارسال نخواهد شد. .TP .B -y, --l-threshold \fIlthreshold\fP \fIlthreshold\fP یک عدد صحیح است که آستانه پایین اتصال یک سرور را مشخص می‌کند. مقادیر معتبر \fIlthreshold\fP از 0 تا 65535 است. مقدار پیش‌فرض 0 است، به این معنی که آستانه پایین اتصال تنظیم نشده است. اگر \fIlthreshold\fP با مقادیر دیگری تنظیم شود، زمانی که تعداد اتصالات سرور به زیر آستانه پایین اتصال آن کاهش یابد، اتصالات جدید دریافت خواهد کرد. اگر \fIlthreshold\fP تنظیم نشده باشد اما \fIuthreshold\fP تنظیم شده باشد، هنگامی که تعداد اتصالات سرور به زیر سه چهارم آستانه بالای اتصال آن کاهش یابد، سرور اتصالات جدید دریافت خواهد کرد. .TP .B -c, --connection خروجی اتصالات. دستور \fIlist\fP همراه با این گزینه، اتصالات فعلی IPVS را فهرست می‌کند. .TP .B --timeout خروجی مهلت‌های زمانی. دستور \fIlist\fP همراه با این گزینه، مقادیر مهلت زمانی (به ثانیه) را برای نشست‌های TCP، نشست‌های TCP پس از دریافت بسته FIN، و بسته‌های UDP نمایش می‌دهد. .TP .B --daemon خروجی اطلاعات دیمن. دستور \fIlist\fP همراه با این گزینه، وضعیت دیمن و رابط چندپخشی آن را نمایش می‌دهد. .TP .B --stats خروجی اطلاعات آماری. دستور \fIlist\fP همراه با این گزینه، اطلاعات آماری سرویس‌ها و سرورهای آن‌ها را نمایش می‌دهد. .TP .B --rate خروجی اطلاعات نرخ. دستور \fIlist\fP همراه با این گزینه، اطلاعات نرخ (مانند اتصالات بر ثانیه، بایت بر ثانیه و بسته بر ثانیه) سرویس‌ها و سرورهای آن‌ها را نمایش می‌دهد. .TP .B --thresholds خروجی اطلاعات آستانه‌ها. دستور \fIlist\fP همراه با این گزینه، اطلاعات آستانه بالا/پایین اتصال هر سرور را در فهرست سرویس نمایش می‌دهد. .TP .B --persistent-conn خروجی اطلاعات اتصال ماندگار. دستور \fIlist\fP همراه با این گزینه، اطلاعات شمارنده اتصال ماندگار هر سرور را در فهرست سرویس نمایش می‌دهد. اتصال ماندگار برای هدایت اتصالات واقعی از یک کلاینت/شبکه یکسان به همان سرور استفاده می‌شود. .sp دستور \fIlist\fP همراه با گزینه .B -c, --connection و این گزینه، داده‌های موتور ماندگاری را (در صورت وجود) هنگام فهرست کردن اتصالات نمایش خواهد داد. .TP .B --tun-info خروجی اطلاعات تونل‌سازی. دستور \fIlist\fP همراه با این گزینه، اطلاعات تونل‌سازی سرویس‌ها و سرورهای آن‌ها را نمایش می‌دهد. .TP .B --sort مرتب‌سازی فهرست سرویس‌های مجازی و سرورهای واقعی. مدخل‌های سرویس مجازی به صورت صعودی بر اساس <پروتکل، نشانی، درگاه> مرتب می‌شوند. مدخل‌های سرور واقعی به صورت صعودی بر اساس <نشانی، درگاه> مرتب می‌شوند (پیش‌فرض). .TP .B --nosort عدم مرتب‌سازی فهرست سرویس‌های مجازی و سرورهای واقعی. .TP .B -n, --numeric خروجی عددی. نشانی‌های IP و شماره درگاه‌ها به جای نام‌های میزبان و سرویس‌ها، در قالب عددی چاپ می‌شوند که حالت پیش‌فرض است. .TP .B --exact بسط و نمایش دقیق اعداد. نمایش مقدار دقیق شمارنده‌های بسته و بایت، به جای نمایش عدد گردشده در قالب K (ضریب‌های ۱۰۰۰)، M (ضریب‌های ۱۰۰۰K) یا G (ضریب‌های ۱۰۰۰M). این گزینه فقط برای دستور .B \-L کاربرد دارد. .TP .B -6, --ipv6 همراه با .B \-f برای نشان دادن اینکه قانون fwmark از نشانی‌های IPv6 استفاده می‌کند. .TP .B -o, --ops زمان‌بندی تک‌بسته‌ای (One-packet scheduling). در کنار یک سرویس مجازی UDP یا یک سرویس مجازی fwmark که فقط بسته‌های UDP را مدیریت می‌کند استفاده می‌شود. تمام اتصالات به گونه‌ای ایجاد می‌شوند که تنها یک بسته را زمان‌بندی کنند. .SS "پارامترهای دیمن همگام‌سازی (PARAMETERS FOR SYNCHRONIZATION DAEMON)" دستور .B --start-daemon به هیچ یا چند مورد از پارامترهای زیر نیاز دارد. .TP .B --syncid \fIsyncid\fP شناسه \fIsyncid\fP را مشخص می‌کند که دیمن اصلی همگام‌سازی هنگام ارسال پیام‌های چندپخشی در هدر SyncID قرار می‌دهد، یا دیمن پشتیبان همگام‌سازی برای فیلتر کردن پیام‌های چندپخشی که با مقدار SyncID مطابقت ندارند از آن استفاده می‌کند. مقادیر معتبر \fIsyncid\fP از 0 تا 255 است. مقدار پیش‌فرض 0 است که به معنای عدم اعمال هیچ‌گونه فیلتر است. .TP .B --sync-maxlen \fIlength\fP طول مورد نظر برای پیام‌های همگام‌سازی (اندازه داده مفید در UDP) را مشخص می‌کند. انتظار می‌رود سرور پشتیبان از مقداری استفاده کند که کمتر از مقدار مورد استفاده در سرور اصلی نباشد. مقادیر معتبر \fIlength\fP در محدوده 1 .. (65535 - 20 - 8) قرار دارند اما هسته فضایی را حداقل برای یک پیام همگام‌سازی تضمین می‌کند. اگر مقدار کمتر از MTU باشد، پیام‌های همگام‌سازی توسط لایه IP قطعه‌قطعه (fragment) خواهند شد. مقدار پیش‌فرض در زمان شروع دیمن از مقدار MTU مشتق می‌شود، اما دیمن اصلی به دلایل سازگاری به طور پیش‌فرض مقداری بالاتر از 1500 نخواهد داشت. .TP .B --mcast-interface \fIinterface\fP رابط چندپخشی را مشخص می‌کند که دیمن اصلی همگام‌سازی پیام‌های چندپخشی خروجی را از طریق آن ارسال می‌کند، یا دیمن پشتیبان همگام‌سازی برای دریافت پیام‌های چندپخشی به آن گوش می‌دهد. .TP .B --mcast-group \fIaddress\fP نشانی چندپخشی IPv4 یا IPv6 را برای پیام‌های همگام‌سازی مشخص می‌کند. مقدار پیش‌فرض 224.0.0.81 است. .TP .B --mcast-port \fIport\fP درگاه UDP را برای پیام‌های همگام‌سازی مشخص می‌کند. مقدار پیش‌فرض 8848 است. .TP .B --mcast-ttl \fIttl\fP مقدار TTL را برای پیام‌های همگام‌سازی مشخص می‌کند (1 .. 255). مقدار پیش‌فرض 1 است. .SH "مثال ۱ \- سرویس مجازی ساده (EXAMPLE 1 - Simple Virtual Service)" دستورهای زیر یک هدایت‌کننده لینوکس (Linux Director) را به گونه‌ای پیکربندی می‌کنند که درخواست‌های ورودی به درگاه 80 در نشانی 207.175.44.110 را به طور مساوی به درگاه 80 روی پنج سرور واقعی توزیع کند. روش هدایت استفاده‌شده در این مثال NAT است، به طوری که هر یک از سرورهای واقعی توسط هدایت‌کننده لینوکس ماسک (masqueraded) می‌شوند. .PP .nf 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 .fi .PP روش دیگر، انجام این کار در قالب یک دستور واحد ipvsadm است: .PP .nf 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 .fi .PP از آنجا که در این مثال از masquerading به عنوان مکانیزم هدایت استفاده شده است، مسیر پیش‌فرض سرورهای واقعی باید روی هدایت‌کننده لینوکس تنظیم شود که خود باید برای هدایت و مبدل کردن بسته‌ها پیکربندی شود. این کار را می‌توان با دستورهای زیر انجام داد: .PP .nf echo "1" > /proc/sys/net/ipv4/ip_forward .fi .SH "مثال ۲ \- سرویس مجازی با علامت فایروال (EXAMPLE 2 - Firewall-Mark Virtual Service)" دستورهای زیر یک هدایت‌کننده لینوکس را برای توزیع مساوی درخواست‌های ورودی ارسال‌شده به هر درگاهی در نشانی‌های 207.175.44.110 یا 207.175.44.111 به درگاه متناظر روی پنج سرور واقعی پیکربندی می‌کنند. همانند مثال قبل، روش هدایت در این مثال NAT است و هر یک از سرورهای واقعی توسط هدایت‌کننده لینوکس مبدل (masqueraded) می‌شوند. .PP .nf 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 .fi .PP از آنجا که در این مثال از masquerading به عنوان مکانیزم هدایت استفاده شده است، مسیر پیش‌فرض سرورهای واقعی باید روی هدایت‌کننده لینوکس تنظیم شود که خود نیازمند پیکربندی برای هدایت و مبدل‌سازی بسته‌ها است. سرور واقعی همچنین باید به گونه‌ای پیکربندی شود که بسته‌های ورودی ارسال‌شده به هر درگاهی روی 207.175.44.110 و 207.175.44.111 را با علامت فایروال 1 نشانه‌گذاری کند. اگر قرار است ترافیک FTP توسط این سرویس مجازی مدیریت شود، ماژول هسته ip_vs_ftp باید در هسته درج شود. این عملیات را می‌توان با استفاده از دستورهای زیر انجام داد: .PP .nf 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 .fi .SH "مثال ۳ \- سرویس مجازی با تونل‌سازی GUE (EXAMPLE 3 - Virtual Service with GUE Tunneling)" دستورهای زیر یک هدایت‌کننده لینوکس را پیکربندی می‌کنند تا درخواست‌های ورودی به درگاه 80 در نشانی 207.175.44.110 را به طور مساوی به درگاه 80 روی پنج سرور واقعی توزیع کند. روش هدایت استفاده‌شده در این مثال تونل‌سازی با کپسوله‌سازی gue است. .PP .nf 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 .fi .PP روش دیگر، انجام این کار در قالب یک دستور واحد ipvsadm است: .PP .nf 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 .fi .SH "مثال ۴ \- سرویس مجازی با تونل‌سازی GRE (EXAMPLE 4 - Virtual Service with GRE Tunneling)" دستورهای زیر یک هدایت‌کننده لینوکس را برای استفاده از کپسوله‌سازی GRE پیکربندی می‌کنند. .PP .nf 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 .fi .SH "نشانی‌های IPv6" نشانی‌های IPv6 باید در براکت مربع ([ و ]) محصور شوند. .PP .nf ipvsadm -A -t [2001:db8::80]:80 -s rr ipvsadm -a -t [2001:db8::80]:80 -r [2001:db8::a0a0]:80 -m .fi .PP سرویس‌های fwmark مبتنی بر IPv6 به گزینه .B \-6 نیاز دارند. .SH "نکات (NOTES)" سرور مجازی لینوکس سه راهبرد دفاعی را در برابر برخی انواع حملات محروم‌سازی از سرویس (DoS) پیاده‌سازی کرده است. هدایت‌کننده لینوکس برای حفظ وضعیت هر اتصال، یک مدخل ایجاد می‌کند و هر مدخل ۱۲۸ بایت حافظه مؤثر اشغال می‌کند. آسیب‌پذیری LVS در برابر حمله DoS ناشی از پتانسیل افزایش هرچه بیشتر تعداد مدخل‌ها تا زمان اتمام حافظه هدایت‌کننده لینوکس است. این سه راهبرد دفاعی در برابر حمله عبارتند از: انداختن تصادفی برخی مدخل‌ها در جدول؛ انداختن بسته‌ها به نسبت 1/rate پیش از هدایت آن‌ها؛ و استفاده از جدول گذار وضعیت امن TCP و مهلت‌های زمانی کوتاه. این راهبردها توسط متغیرهای sysctl و مدخل‌های متناظر در سیستم فایل /proc کنترل می‌شوند: .sp /proc/sys/net/ipv4/vs/drop_entry /proc/sys/net/ipv4/vs/drop_packet /proc/sys/net/ipv4/vs/secure_tcp .PP مقادیر معتبر برای هر متغیر از 0 تا 3 است. مقدار پیش‌فرض 0 است که راهبرد دفاعی مربوطه را غیرفعال می‌کند. مقادیر 1 و 2 حالت‌های خودکار هستند \- هنگامی که حافظه در دسترس کافی نباشد، راهبرد مربوطه فعال شده و متغیر به طور خودکار روی 2 تنظیم می‌شود، در غیر این صورت راهبرد غیرفعال شده و متغیر روی 1 تنظیم می‌شود. مقدار 3 نشان می‌دهد که راهبرد مربوطه همیشه فعال است. آستانه حافظه در دسترس و مهلت‌های زمانی امن TCP را می‌توان با استفاده از متغیرهای sysctl و مدخل‌های متناظر در سیستم فایل /proc تنظیم کرد: .sp /proc/sys/net/ipv4/vs/amemthresh /proc/sys/net/ipv4/vs/timeout_* .SH "فایل‌ها (FILES)" .I /proc/net/ip_vs .br .I /proc/net/ip_vs_app .br .I /proc/net/ip_vs_conn .br .I /proc/net/ip_vs_stats .br .I /proc/sys/net/ipv4/vs/am_droprate .br .I /proc/sys/net/ipv4/vs/amemthresh .br .I /proc/sys/net/ipv4/vs/drop_entry .br .I /proc/sys/net/ipv4/vs/drop_packet .br .I /proc/sys/net/ipv4/vs/secure_tcp .br .I /proc/sys/net/ipv4/vs/timeout_close .br .I /proc/sys/net/ipv4/vs/timeout_closewait .br .I /proc/sys/net/ipv4/vs/timeout_established .br .I /proc/sys/net/ipv4/vs/timeout_finwait .br .I /proc/sys/net/ipv4/vs/timeout_icmp .br .I /proc/sys/net/ipv4/vs/timeout_lastack .br .I /proc/sys/net/ipv4/vs/timeout_listen .br .I /proc/sys/net/ipv4/vs/timeout_synack .br .I /proc/sys/net/ipv4/vs/timeout_synrecv .br .I /proc/sys/net/ipv4/vs/timeout_synsent .br .I /proc/sys/net/ipv4/vs/timeout_timewait .br .I /proc/sys/net/ipv4/vs/timeout_udp .SH "همچنین ببینید (SEE ALSO)" وب‌سایت LVS به نشانی (http://www.linuxvirtualserver.org) برای مستندات بیشتر درباره LVS. .PP \fBipvsadm-save\fP(8), \fBipvsadm-restore\fP(8), \fBiptables\fP(8), .br \fBinsmod\fP(8), \fBmodprobe\fP(8) .SH "نویسندگان (AUTHORS)" .nf ipvsadm - Wensong Zhang Peter Kese man page - Mike Wangsmo Wensong Zhang Horms .fi