بررسی سلامت

(Health Check)

برای این که بتوانید از قابلیت «استقرار بدون اختلال» لیارا بیشترین استفاده را ببرید، توصیه می‌کنیم که از قابلیت «بررسی سلامت» هم استفاده کنید. هر استقرار جدید منجر به ایجاد یک برنامک مختص به آن استقرار می‌شود. برنامک‌ها، یک نسخه‌ی اجرا شده از استقرار شما هستند. تا زمانی که تست «بررسی سلامت» این برنامک موفق نباشد، ترافیک به آن منتقل نمی‌شود و برنامک قبلی همچنان مسئول پردازش درخواست‌های ارسالی به برنامه‌ی‌تان خواهد بود.

بررسی سلامت به این شکل کار می‌کند که شما یک دستور مشخصی را تعریف می‌کنید و لیارا در بازه‌هایی مشخص این دستور را در برنامک شما اجرا می‌کند. اگر نتیجه موفقیت‌آمیز باشد، برنامک شما «سالم» در نظر گرفته می‌شود. اگر نتیجه ناموفق باشد، ناسالم.

این دستور، باید یک دستورshellوexit codeآن باید برابر 0 و یا 1 باشد. 0 به معنای اجرای موفق و 1 به معنای خطا و اجرای ناموفق دستور است.

ایجاد تست بررسی سلامت

تست بررسی سلامت را باید در فایل liara.json تعریف کنید. برای نمونه:

{
  "port": 3000,
  "healthCheck": {
    "command": "curl --fail http://localhost:3000 || exit 1",
    "interval": 30,
    "timeout": 15,
    "retries": 2,
    "startPeriod": 5
  }
}
docker container health check

در مثال بالا، از ابزارcurlاستفاده کردیم. ابزاری که استفاده می‌کنید، باید در برنامک نصب شده باشد. لیارا به صورت پیش‌فرض،curlرا روی تمام پلتفرم‌های پشتیبانی شده نصب کرده است.

در فایل نمونه‌ی بالا از دستور curl --fail http://localhost:3000 || exit 1 استفاده کرده‌ایم. این دستور به این صورت عمل می‌کند که یا وب‌سرور شما Status 200 برمیگرداند و در نتیجه curl با کد 0 خارج می‌شود (عملیات موفقیت‌آمیز) و یا این که وب‌سرور شما Status 200 برنمیگرداند و curl با کد 0 خارج نمی‌شود و قسمت بعد از || یا همان exit 1 اجرا می‌شود. (عملیات غیرموفقیت‌آمیز)

در مثال بالا، بعد از روشن‌شدن برنامک‌، به اندازه‌یstartPeriodصبر کنیم که در این مثال برابر ۵ ثانیه است. چرا که گاها می‌دانیم برنامک ما در چند ثانیه‌ی اول پاسخ‌گوی کاربر نیست و برای مثال نیازمند اتصال به دیتابیس است و این مورد ممکن است چندثانیه‌ای طول بکشد.

بعد از اتمام ۵ ثانیه، لیارا به مدتintervalثانیه صبر می‌کند و سپس دستور را یک بار اجرا می‌کند. در مثال بالا، این مقدار برابر با ۳۰ ثانیه است، و این یعنی اولین تست سلامت در ثانیه‌ی ۳۵ انجام می‌گردد. (۵ + ۳۰ = ۳۵)

وب‌سرور شما حداکثر به اندازه‌یtimeoutثانیه فرصت دارد که پاسخ دهد. اگر پاسخی ندهد و یا کد HTTP پاسخ برابر با200نباشد، تست ناموفق حساب می‌شود.

لیارا تا حداکثر به اندازه‌یretriesبار، دستور را اجرا می‌کند و اگر در هر بار نتیجه ناموفق باشد، برنامک را به عنوان «ناسالم» اعلام می‌کند.

  • command: دستوری که به صورت بازه‌ای داخل برنامک اجرا می‌شود. الزامی.
  • interval: هر چند ثانیه یک بار این دستور اجرا شود؟ اختیاری. پیش‌فرض: ۳۰ ثانیه
  • timeout: حداکثر چند ثانیه طول می‌کشد تا دستور پاسخ دهد؟ اختیاری. پیش‌فرض: ۳۰ ثانیه
  • retries: در صورت ناموفق‌بودن اجرای دستور، چند بار تست سلامت را تکرار کنیم تا در نهایت برنامک را «ناسالم» اعلام کنیم؟ اختیاری. پیش‌فرض: ۳ بار
  • startPeriod: بعد از روشن‌شدن برنامک، چند ثانیه صبر کنیم و بعد تست سلامت را شروع کنیم؟ اختیاری. پیش‌فرض: ۳ ثانیه

اگر برنامک ناسالم باشد، چه اتفاقی می‌افتد؟

در صورتی که تست‌های سلامت برنامک شما ناموفق باشد و برنامک «ناسالم» اعلام شود، در شرایط مختلف، لیارا واکنش متفاوتی نشان می‌دهد.

۱) در زمانی که استقرار جدیدی انجام داده‌اید، ترافیک به برنامک‌های ناسالم هدایت نمی‌شود و صرفا زمانی که برنامک تست‌های خود را با موفقیت سپری کند و سالم حساب شود، می‌تواند ترافیک ورودی برنامه‌ی شما را پردازش کند.

۲) در صورتی که استقرار انجام شده و ساعت‌ها و یا روزهای بعد به هر دلیلی برنامک ناسالم شود، لیارا به صورت خودکار برنامک را ری‌استارت می‌کند تا مشکل احتمالی برطرف شود و برنامک بتواند سرویس‌دهی کند و شما بتوانید سر فرصت و در زمان مناسب مسئله را پیدا کرده و رفع کنید. این اتفاق زمانی رخ می‌دهد که برنامک شما روشن است اما به هر دلیلی پاسخ‌گوی کاربر نیست و نیاز به ری‌استارت دارد.

;