بلاگ/راه‌اندازی کلاستر Elasticsearch با Ansible روی چند سرور مجازی و اختصاصی: نقش گره‌ها، TLS و مدیریت چرخه عمر ایندکس (ILM)
به‌روز شده

راه‌اندازی کلاستر Elasticsearch با Ansible روی چند سرور مجازی و اختصاصی: نقش گره‌ها، TLS و مدیریت چرخه عمر ایندکس (ILM)

1405/06/170 بازدید
راه‌اندازی کلاستر Elasticsearch با Ansible روی چند سرور مجازی و اختصاصی: نقش گره‌ها، TLS و مدیریت چرخه عمر ایندکس (ILM)

راه‌اندازی کلاستر Elasticsearch با Ansible روی چند سرور مجازی و اختصاصی: نقش گره‌ها، TLS و مدیریت چرخه عمر ایندکس (ILM)

وقتی حجم لاگ، رویدادهای برنامه و داده‌های جست‌وجو افزایش پیدا می‌کند، اجرای Elasticsearch روی یک سرور به نقطه‌ضعف تبدیل می‌شود. خرابی همان سرور، کل سرویس جست‌وجو را از دسترس خارج می‌کند و نگهداری دستی تنظیمات نیز بین محیط‌ها اختلاف ایجاد می‌کند. راه‌اندازی کلاستر Elasticsearch با Ansible این فرایند را تکرارپذیر می‌کند؛ یعنی می‌توانید چند گره را با یک مجموعه متغیر و playbook ایجاد، امن و به‌روزرسانی کنید. در این راهنما یک معماری نمونه برای ترکیب سرورهای مجازی و اختصاصی می‌سازیم. نقش گره‌ها را جدا می‌کنیم، ارتباطات را با TLS رمزنگاری می‌کنیم و با Index Lifecycle Management یا ILM، هزینه ذخیره‌سازی را کنترل خواهیم کرد. مثال‌ها برای Elasticsearch نسخه ۸ نوشته شده‌اند؛ نام بعضی تنظیمات در نسخه‌های قدیمی‌تر متفاوت است. نمای شماتیک کلاستر Elasticsearch با گره‌های master و data

طراحی معماری کلاستر

پیش از نوشتن playbook، باید مشخص کنید هر گره چه کاری انجام می‌دهد. در Elasticsearch جدید، نقش‌ها با پارامتر node.roles تعیین می‌شوند. برای محیط تولیدی معمولاً سه گره master-eligible و چند گره data لازم است. تعداد masterها باید فرد باشد تا در زمان قطع ارتباط، اکثریت کلاستر بتواند تصمیم بگیرد. یک چیدمان عملی می‌تواند چنین باشد: - سه گره master کوچک، برای نگهداری وضعیت کلاستر و انتخابات. - دو یا چند گره data با دیسک NVMe یا SSD، برای ذخیره شاردها و اجرای جست‌وجو. - یک یا چند گره ingest یا coordinating، در صورت سنگین بودن پردازش ورودی و درخواست‌های کلاینت. - یک ماشین جدا برای Ansible و نگهداری امن دسترسی متغیرها. سرورهای اختصاصی برای گره‌های data با بار نوشتن زیاد مناسب‌اند، چون دیسک سریع و حافظه بیشتری در اختیار دارید. گره‌های master به CPU و دیسک بسیار قدرتمند نیاز ندارند، اما باید تأخیر شبکه کمی با یکدیگر داشته باشند. گره‌های مجازی نیز برای master یا coordinating گزینه مناسبی هستند، به شرط آن‌که منابع آن‌ها بیش از حد اشتراکی و ناپایدار نباشد.

نمونه مقایسه نقش‌ها

نقش گرهمنابع پیشنهادیوظیفه اصلینکته عملیاتی
master-eligible۲ تا ۴ vCPU، رم ۸ تا ۱۶ گیگابایتمدیریت متادیتا و انتخاباتسه گره مستقل در دسترس‌پذیری بالا
data_hotCPU و رم بالا، SSD/NVMeداده‌های تازه و پرترافیکمناسب جست‌وجوی سریع و ingest
data_warmمنابع متوسط، دیسک پرظرفیتداده‌های کم‌تغییرهزینه کمتر برای داده‌های قدیمی‌تر
ingestCPU بیشترتبدیل و غنی‌سازی اسنادفقط در صورت نیاز به pipeline سنگین
coordinatingمنابع متناسب با ترافیکپخش درخواست و جمع‌کردن پاسخبرای جدا کردن کلاینت‌ها از data

برای جلوگیری از split-brain، مقدار discovery.seed_hosts را به آدرس هر سه master بدهید و cluster.initial_master_nodes را فقط در نخستین راه‌اندازی تنظیم کنید. بعد از تشکیل کلاستر، این گزینه را از پیکربندی دائمی حذف کنید؛ باقی ماندن آن در بازراه‌اندازی‌های بعدی می‌تواند دردسر ایجاد کند.

آماده‌سازی سیستم‌عامل با Ansible

پیکربندی خودکار چند سرور با inventory و playbook در Ansible در inventory، گروه‌ها را از نقش واقعی جدا کنید تا بتوانید یک گره را بدون کپی‌کردن فایل‌ها تغییر دهید؛ همین ساختار در اتوماسیون پیکربندی چند سرور با Ansible هم به‌کار می‌رود: ```ini