| epmd(1) | Erlang Module Definition | epmd(1) |
نام (NAME)
epmd - دیمن نگاشت درگاه ارلنگ (Erlang Port Mapper Daemon)
توضیحات (DESCRIPTION)
دستور epmd میتواند برای راهاندازی دیمن نگاشت درگاه استفاده شود:
-
epmd [-d|-debug] [DbgExtra...] [-address Addresses] [-port No] [-daemon] [-relaxed_command_check]
همچنین میتواند برای برقراری ارتباط با دیمن نگاشت درگاهِ در حال اجرا استفاده شود:
-
epmd [-d|-debug] [-port No] [-names|-kill|-stop Name]
این دیمن به عنوان سرور نام روی تمام میزبانهای درگیر در محاسبات توزیعشده ارلنگ عمل میکند. هنگامی که یک گره ارلنگ شروع به کار میکند، دارای یک نام است و آدرسی را از هسته سیستمعامل میزبان دریافت میکند. نام و آدرس به دیمن epmd که روی میزبان محلی در حال اجراست فرستاده میشوند. در محیط TCP/IP، آدرس شامل آدرس IP و یک شماره درگاه است. نام گره یک اتم به شکل Name@Node است. وظیفه دیمن epmd پیگیری این است که کدام نام گره به کدام آدرس گوش میدهد. بنابراین، epmd نامهای نمادین گره را به آدرسهای ماشین نگاشت میکند.
دیمن TCP/IP epmd تنها بخش Name (بخش اول) از نام گره ارلنگ را پیگیری میکند. بخش Host (هر آنچه پس از @ میآید) و همچنین آدرس IP که گره ارلنگ در آن در دسترس است، به صورت ضمنی در نام گرهای که با دیمن epmd ارتباط برقرار کرده مشخص است. بنابراین، برای عملکرد صحیح یک شبکه ارلنگ، سرویسهای نامگذاری TCP سازگار و درست مورد نیاز است.
نکته: در ویندوز حداکثر تعداد گرههای مجاز در یک نمونه epmd برابر با ۶۰ است. این به دلیل محدودیتهای پیادهسازی فعلی است. اگر به گرههای بیشتری نیاز دارید، باید از پیادهسازیهای epmd مبتنی بر ارلنگ مانند Erlang EPMD استفاده کنید.
راهاندازی دیمن نگاشت درگاه
اگر آرگومان -daemon مشخص نشود، epmd به عنوان یک برنامه معمولی با ترمینال کنترلی شلی که در آن شروع شده اجرا میشود. در حالت عادی، باید به عنوان دیمن اجرا شود.
گزینههای راهاندازی معمول در بخش «گزینههای معمول» شرح داده شدهاند.
گزینههای DbgExtra در بخش «گزینههای DbgExtra» شرح داده شدهاند.
ارتباط با دیمن نگاشت درگاه در حال اجرا
پرسوجوهای مختلف در بخش «گزینههای تعاملی» شرح داده شدهاند.
گزینههای معمول (Regular Options)
این گزینهها هنگام راهاندازی سرور نام در دسترس هستند. سرور نام به طور معمول خودکار توسط دستور erl(1) (در صورت عدم وجود) راهاندازی میشود، اما در زمان بالا آمدن سیستم نیز میتواند شروع شود.
- -address List
- به این نمونه از epmd اجازه میدهد فقط به فهرستِ با کاما جداشده آدرسهای IP و آدرس loopback (که در صورت مشخص نشدن به طور ضمنی اضافه میشود) گوش دهد. این مقدار را میتوان با استفاده از متغیر محیطی ERL_EPMD_ADDRESS نیز تنظیم کرد؛ بخش متغیرهای محیطی را ببینید.
- -port No
- به این نمونه از epmd اجازه میدهد به درگاه TCP دیگری غیر از درگاه پیشفرض ۴۳۶۹ گوش دهد. این مقدار را میتوان با استفاده از متغیر محیطی ERL_EPMD_PORT نیز تنظیم کرد؛ بخش متغیرهای محیطی را ببینید.
- -d | -debug
- خروجی اشکالزدایی را فعال میکند. هرچه فلگهای -d بیشتری مشخص شود، خروجی اشکالزدایی بیشتری (تا حدی معین) دریافت خواهید کرد. این گزینه زمانی بیشترین کاربرد را دارد که دیمن epmd به عنوان دیمن راهاندازی نشده باشد.
- -daemon
- برنامه epmd را به صورت جداشده از ترمینال کنترلی اجرا میکند. در صورت موجود بودن و پیکربندی صحیح، لاگها در syslog ثبت میشوند. اگر دیمن epmd در زمان بوت راهاندازی شود، این گزینه حتماً باید استفاده شود. همچنین زمانی استفاده میشود که دستور erl به طور خودکار epmd را اجرا میکند.
- -relaxed_command_check
- برنامه epmd را با بررسی دستوری آسانگیرانه (عمدتاً برای سازگاری با نسخههای پیشین) اجرا میکند. این مورد روی موارد زیر اثر میگذارد:
با فعال بودن بررسی دستوری آسانگیرانه، میتوانید گرههای فعال را به صورت اجباری لغو ثبت کنید.
بررسی دستوری آسانگیرانه را میتوان با تنظیم متغیر محیطی ERL_EPMD_RELAXED_COMMAND_CHECK پیش از راهاندازی epmd نیز فعال کرد.
از بررسی دستوری آسانگیرانه فقط در سیستمهایی با استفاده تعاملی بسیار محدود استفاده کنید.
گزینههای DbgExtra (DbgExtra Options)
نکته: این گزینهها فقط برای اشکالزدایی و آزمایش کلاینتهای epmd هستند. در استفاده عادی نباید به کار روند.
- -packet_timeout Seconds
- تعداد ثانیههایی را مشخص میکند که یک اتصال میتواند پیش از اتمام مهلت زمانی (Timeout) و بسته شدن اتصال توسط epmd، غیرفعال بماند. پیشفرض ۶۰ است.
- -delay_accept Seconds
- برای شبیهسازی یک سرور شلوغ، میتوانید تاخیری بین زمانی که epmd از درخواست اتصال جدید آگاه میشود و زمانی که اتصال پذیرفته میشود ایجاد کنید.
- -delay_write Seconds
- این نیز شبیهسازی یک سرور شلوغ است. تاخیری پیش از ارسال پاسخ اعمال میکند.
گزینههای تعاملی (Interactive Options)
این گزینهها باعث میشوند epmd به عنوان یک دستور تعاملی اجرا شده و نتایج ارسال پرسوجوها به یک نمونه در حال اجرای epmd را نمایش دهد. نمونه epmd مورد تماس همواره روی گره محلی است، اما گزینه -port میتواند برای انتخاب میان نمونهها در صورتی که چندین نمونه با استفاده از درگاههای مختلف روی میزبان در حال اجرا باشند استفاده شود.
- -port No
- با epmd که روی شماره درگاه TCP مشخصشده (پیشفرض ۴۳۶۹) گوش میدهد ارتباط برقرار میکند. این مقدار را میتوان با استفاده از متغیر محیطی ERL_EPMD_PORT نیز تنظیم کرد؛ بخش متغیرهای محیطی را ببینید.
- -names
- نامهای ثبتشده در epmd در حال اجرای فعلی را فهرست میکند.
- -kill
- دیمن epmd در حال اجرای فعلی را متوقف میکند.
متوقف کردن epmd در حال اجرا فقط زمانی مجاز است که epmd -names یک پایگاهداده خالی را نشان دهد یا گزینه -relaxed_command_check هنگام راهاندازی نمونه در حال اجرای epmd مشخص شده باشد.
توجه داشته باشید که -relaxed_command_check هنگام راهاندازی دیمنی مشخص میشود که قرار است در صورت داشتن گرههای فعال ثبتشده، متوقف شدن را بپذیرد. هنگام اجرای تعاملی epmd، گزینه -relaxed_command_check هیچ تاثیری ندارد. دیمنی که بدون بررسی دستوری آسانگیرانه راهاندازی شده باشد، در صورت داشتن کلاینتهای فعال ثبتشده باید با استفاده از سیگنالها یا روشهای دیگر سیستمعامل متوقف شود.
- -stop Name
- یک گره فعال را به صورت اجباری از پایگاهداده epmd لغو ثبت میکند.
این دستور فقط هنگام برقراری ارتباط با نمونههای epmd که با فلگ -relaxed_command_check راهاندازی شدهاند قابل استفاده است.
توجه داشته باشید که بررسی دستوری آسانگیرانه باید برای دیمن epmd مورد تماس فعال شده باشد. هنگام اجرای تعاملی epmd، گزینه -relaxed_command_check هیچ تاثیری ندارد.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
- ERL_EPMD_ADDRESS
- میتواند روی یک فهرست با کاما جداشده از آدرسهای IP تنظیم شود که در این صورت دیمن epmd فقط به آدرس(های) مشخصشده و آدرس loopback (که در صورت مشخص نشدن به طور ضمنی اضافه میشود) گوش میدهد. رفتار پیشفرض گوش دادن به تمام آدرسهای IP موجود است.
- ERL_EPMD_PORT
- میتواند شامل شماره درگاهی باشد که epmd استفاده خواهد کرد. درگاه پیشفرض در بیشتر موارد مناسب است. میتوان درگاه دیگری را مشخص کرد تا چندین نمونه از epmd، به نمایندگی از خوشههای مستقل از گرهها، بتوانند روی یک میزبان همزیستی داشته باشند. تمام گرهها در یک خوشه باید از شماره درگاه epmd یکسان استفاده کنند.
- ERL_EPMD_RELAXED_COMMAND_CHECK
- اگر پیش از راهاندازی تنظیم شود، دیمن epmd به گونهای رفتار میکند که گویی گزینه -relaxed_command_check در زمان راهاندازی مشخص شده است. در نتیجه، اگر این گزینه پیش از راهاندازی ماشین مجازی ارلنگ تنظیم شده باشد، دیمن epmd که خودکار راهاندازی میشود دستورات -kill و -stop را بدون محدودیت میپذیرد.
ثبت وقایع (LOGGING)
در برخی سیستمعاملها هنگامی که epmd به عنوان دیمن اجرا میشود، از syslog برای گزارش خطا استفاده خواهد شد. برای فعالسازی ثبت خطا، باید فایل /etc/syslog.conf را ویرایش کرده و یک ورودی اضافه کنید:
-
!epmd *.*<TABs>/var/log/epmd.log
که در آن <TABs> حداقل یک نویسه تب (Tab) واقعی است. فاصلهها (Spaces) نادیده گرفته میشوند.
محدودیتهای دسترسی (ACCESS RESTRICTIONS)
دیمن epmd پیامها را هم از میزبان محلی و هم از میزبانهای راه دور میپذیرد. با این حال، اگر پرسوجو از یک میزبان راه دور بیاید، فقط به دستورات پرسوجو پاسخ داده میشود (و طبق آنها عمل میگردد). تلاش برای ثبت نام یک گره در صورتی که کلاینت فرآیندی روی همان میزبانِ محل اجرای نمونه epmd نباشد، همیشه یک خطا است. چنین درخواستهایی خصمانه تلقی شده و اتصال فوراً بسته میشود.
پرسوجوهای زیر از گرههای راه دور پذیرفته میشوند:
برای محدود کردن بیشتر دسترسی، باید از نرمافزار دیوار آتش (Firewall) استفاده شود.
| erts 17.0.6 | Ericsson AB |