بررسی سلامت


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

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

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

برای ایجاد این تست، کافیست تا در مسیر اصلی پروژه خود، یک فایل به نام liara.json ایجاد کنید و محتوای زیر را، درون آن، قرار دهید:

کپی
{
  "port": 3000,
  "healthCheck": {
    "command": "CMD curl --fail http://localhost:3000 || exit 1",
    "interval": 30, 
    "timeout": 15,
    "retries": 2,
    "startPeriod": 5
   }
}

در نظر داشته باشید که در فیلد port و همچنین در فیلد command بعد از : باید پورتی که برنامه‌تان در آن به درخواست کاربران گوش می‌دهد را، وارد کنید.

در قطعه کد بالا، از ابزار curl استفاده می‌شود. البته شما می‌توانید از ابزارهای دیگری استفاده کنید؛ به شرطی که این ابزار در سرور برنامه‌تان نصب باشد.

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

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

در قطعه کد فوق، بعد از اجرا درآمدن استقرار جدید در بخش رویدادها، برنامه به اندازه مدت زمانی که در فیلد startPeriod مشخص شده است؛ منتظر می‌ماند (در مثال فوق، این مقدار برابر با 5 میلی ثانیه است). چرا که گاهاً برنامه در چند ثانیه‌ی اول پاسخ‌گوی کاربر نیست و برای مثال نیازمند اتصال به دیتابیس است و این مورد ممکن است چندثانیه‌ای طول بکشد.

بعد از اتمام 5 میلی‌ثانیه، لیارا به اندازه مدت زمانی که در فیلد interval مشخص شده است؛ منتظر می‌ماند و سپس دستور مشخص شده در فیلد command را، اجرا می‌کند. در واقع اولین تست سلامت پس از گذشت مدت زمان مشخص شده در فیلدهای startPeriod و interval اجرا می‌شود که در قطعه کد فوق، بعد از گذشت 35 میلی‌ثانیه، این اتفاق خواهد افتاد.

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

health check example

عملکرد لیارا در استقرارهای ناموفق

در صورتی که تست‌های سلامت استقرار جدید شما ناموفق باشد، در شرایط مختلف، لیارا واکنش‌های متفاوتی نشان خواهد داد:

  • در زمانی که استقرار جدیدی انجام داده‌اید، ترافیک به استقرار با تست ناموفق هدایت نمی‌شود و صرفاً زمانی که استقرار جدید، تست‌های خود را با موفقیت سپری کند؛ می‌تواند ترافیک ورودی برنامه‌ی شما را پردازش کند.
  • در صورتی که استقرار انجام شود و ساعت‌ها، یا روزهای بعد به هر دلیلی، استقرار جدید، تست ناموفقی ثبت کند؛ لیارا به صورت خودکار، برنامه را ری‌استارت می‌کند تا مشکل احتمالی برطرف شود و برنامه بتواند سرویس‌دهی کند و شما بتوانید در زمان مناسب مشکل برنامه را پیدا کرده و آن را رفع کنید. این اتفاق زمانی رخ می‌دهد که برنامه شما روشن است اما به هر دلیلی پاسخ‌گوی کاربر نیست و نیاز به ری‌استارت دارد.