keepalive در OpenVPN یا restart در systemd: کدام اتصال را بازیابی میکند؟
طرف مقابل ساکت، فرایند مرده و برنامهای غیرقابل استفاده سه خرابی متفاوتاند. keepalive را به OpenVPN و فرایند را به systemd بسپارید و هر مورد را جداگانه بیازمایید.
سه چیز متفاوت میتواند در یک تونل خراب شود، و سه واکنش متفاوت میطلبند. طرف مقابل پاسخ دادن را متوقف میکند، فرایند سرویس از کار میافتد، یا برنامهای که پشت تونل است سرویسدهی را متوقف میکند. پیکربندیای که سرویس را روی هر یک از اینها دوباره راهاندازی کند نظارت دقیق نیست؛ یک اقدام خام روی خرابیهای نامرتبط است. مقایسه اینکه هر سازوکار واقعاً چه چیزی را میتواند ببیند، تقسیم کار را بدیهی میکند.
سه خرابی که شبیه یکی هستند
سکوت طرف مقابل یعنی آن سر دیگر فرستادن را متوقف کرده است، و OpenVPN میتواند خودش این را تشخیص دهد چون ضربان قلب را در اختیار دارد. مرگ فرایند یعنی سرویس خارج شده است، که مدیر سرویس متوجه میشود و OpenVPN نمیتواند. خرابی برنامه یعنی تونل سالم است و چیزی پشت آن نیست، و هیچیک از دو سازوکار دیگر راهی برای دانستن آن ندارد. هر کدام واکنش متفاوتی لازم دارد و هیچیک با توجه به اینکه تونل برپاست یکسان نیست.
اینها نشانههای متفاوت از لایههای متفاوتاند و هر یک صاحبی دارد که میتواند بدون حدس زدن بر آن عمل کند. آمیختن آنها سامانهای میسازد که بر نشانههایی که نمیتواند تفسیر کند دوباره راهاندازی میشود.
پیش از تغییر هر زمانسنج، سه مورد را بنویسید. خود فهرست معمولاً نشان میدهد که از یک سازوکار خواسته شده هر سه را پوشش دهد.
keepalive در واقع به چه چیزی گسترش مییابد
دستور keepalive کوتاهنویسی است و گسترش آن بر حسب حالت متفاوت است. روی یک سرور، keepalive 10 60 به یک ping محلی هر ده ثانیه، یک مهلت راهاندازی مجدد محلی 120 ثانیهای و مقادیر 10 و 60 که به کارخواهها فرستاده میشود تبدیل میشود. مهلت سرور عمداً دو برابر میشود تا کارخواه فرصت راهاندازی مجدد پیش از تسلیم سرور را داشته باشد. شکل گسترده را در پیکربندی در حال اجرا بخوانید، نه کوتاهنویسی را در پروفایل.
همین دو برابر شدن دلیل نادرست بودن هر توضیحی است که ادعا میکند هر دو سر پس از شصت ثانیه دوباره راهاندازی میشوند. همچنین توضیح میدهد چرا وقتی مسیری بدتر میشود دو سر با هم نوسان نمیکنند.
ضربان قلب ترافیک همتای OpenVPN است، نه یک کاوش ICMP از یک میزبان عمومی. پاسخ فقط ثابت میکند که سر دور تونل زنده است. درباره پایگاه داده یا سرویس وبی که کاربر واقعاً نیاز دارد چیزی نمیگوید.
Restart=on-failure چه چیزی را نمیپاید
پیش از افزودن بازنویسی، واحد نصبشده را بخوانید. Restart=on-failure به شرایط مستند خرابی فرایند پاسخ میدهد، که با پایش وضعیت اتصال یکسان نیست. به این دلیل فعال نمیشود که یک اتصال مجدد داخلی آغاز شده است، و خروج تمیز معنایی متفاوت از فروریختن دارد.
این تمایز مهم است چون راهاندازی مجدد داخلی همان فرایند را زنده نگه میدارد. واحد چیزی نمیبیند، تونل خودبهخود بازیابی میشود، و همین نتیجه درست است.
RestartSec و محدودیتهای آغاز را آگاهانه تنظیم کنید، وگرنه حلقهای از فروریختنها به دروازه فشار میآورد و خطای واقعی را زیر پیامهای راهاندازی مجدد دفن میکند. محدودیت راهاندازی مجددی که فعال شود واحد را در وضعیت شکست رها میکند، که دیدنی است، در حالی که حلقه بیپایان دیدنی نیست.
ping-restart و ping-exit قابل تبادل نیستند
ping-restart راهاندازی مجدد داخلی OpenVPN را برمیانگیزد و فرایند را نگه میدارد. ping-exit فرایند را در همان نوع مهلت پایان میدهد، که تصمیم را به مدیر سرویس میسپارد. این دو یکدیگر را نفی میکنند و انتخاب دومی تغییر میدهد که بازیابی از آن کیست. تفاوت در این است که چه کسی تصمیم میگیرد دوباره تلاش کند و چه مقدار حالت از تلاش جان سالم به در میبرد.
اگر خروج در پایان مهلت را انتخاب کنید، واحد به سیاست راهاندازی مجدد و مدیریت وضعیت خروج نیاز دارد که با هم بخوانند، وگرنه خرابی زندهبودن مانند توقف دائمی به نظر میرسد. گزینههای ماندگاری هم میتوانند رابطها و مسیرها را در طول یک راهاندازی مجدد داخلی حفظ کنند، اما در طول خروج فرایند نه.
برای هر استقرار یک چرخه عمر انتخاب کنید و دلیل آن را بنویسید. پروفایلی که هر دو دستور را دارد پروفایلی است که تصمیم نگرفته است.
هر خرابی را به عنوان مورد مستقل خودش بیازمایید
در یک پنجره تأییدشده، طرف مقابل خاموش، سرویس کشتهشده و برنامهای که در دسترس نیست را شبیهسازی کنید، سپس بررسی کنید کدام بازیابی فعال شد. طرف مقابل خاموش باید اتصال مجدد داخلی تولید کند، فرایند کشتهشده راهاندازی مجدد واحد، و قطعی برنامه هیچیک از این دو. وقتی دو مورد یک اقدام تولید میکنند، مالکیت هنوز آمیخته است.
بازیابی مکرر هم تعمیر نیست. اعتبارنامههای ردشده یا دو کارخواه که یک نام مؤثر را به اشتراک میگذارند به جایگزینی یکدیگر ادامه میدهند، و زمانسنجهای سریعتر آن نوسان را فقط سریعتر میکنند.