Cassandra

دیتابیس Apache Cassandra یک پایگاه‌داده NoSQL توزیع‌شده و مقیاس‌پذیر است که برای مدیریت حجم عظیمی از داده‌ها در برنامه‌هایی با دسترس‌پذیری بالا (High Availability) طراحی شده است. معماری Peer-to-Peer در این دیتابیس باعث می‌شود هیچ نقطه شکستی (Single Point of Failure) وجود نداشته باشد. قابلیت خواندن و نوشتن هم‌زمان، افزونگی داده‌ها و مقیاس‌پذیری خطی، کاساندرا را به گزینه‌ای بی‌نظیر برای سرویس‌های PaaS، سیستم‌های تحلیلی بلادرنگ و پروژه‌هایی با توزیع جغرافیایی گسترده تبدیل کرده است.

مراحل استقرار

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

متغیرهای محیطی

کانتینر Cassandra برای بوت شدن در کلاستر، تنظیمات محیطی متفاوتی نسبت به دیتابیس‌های رابطه‌ای دارد:

  • نام پایگاه‌داده (اجباری): تعیین نام اختصاصی دیتابیس در زمان استقرار الزامی است.

  • نسخه ایمیج (اختیاری): از طریق بخش پارامترهای اختیاری تنها فیلد Version of Cassandra Image نمایش داده می‌شود که از طریق آن می‌توانید نسخه ایمیج کانتینر را انتخاب کنید.

  • وضعیت احراز هویت (نکته امنیتی): این اپلیکیشن در مرحله ساخت نیازی به تعیین نام کاربری و رمز عبور ندارد و به صورت پیش‌فرض بدون محدودیت احراز هویت بوت می‌شود (به همین دلیل در پنجره خلاصه اطلاعات پس از استقرار، فیلد امنیتی وجود نخواهد داشت). در صورت Public کردن دیتابیس، حتما معماری امنیتی برنامه خود را در نظر بگیرید.

نکته: برای آموزش گام‌به‌گام نحوه تعریف متغیرهای اختصاصی، ConfigMapها و Secretها در داشبورد، به مستندات متغیرهای محیطی مراجعه کنید.

اطلاعات اتصال و دسترسی

در استقرار و مدیریت این دیتابیس توزیع‌شده، الزامات زیرساختی زیر برقرار است:

  • فضای ذخیره‌سازی: کاساندرا برای مدیریت داده‌ها و نوشتن لاگ‌ها نیازمند تخصیص دیسک اختصاصی (Volume) پایدار است.

  • سطح دسترسی سیستمی: اپلیکیشن و ترمینال کانتینر با سطح دسترسی کاربر عادی (Non-Root) اجرا می‌شوند؛ بنابراین امکان اعمال تغییرات سیستمی در هسته کانتینر یا استفاده از دسترسی ریشه را ندارید.

  • تخصیص منابع (بسیار مهم): کاساندرا به دلیل اجرای روی ماشین مجازی جاوا (JVM) یکی از سنگین‌ترین دیتابیس‌ها از نظر مصرف حافظه (RAM) است و تخصیص منابع پایین باعث از کار افتادن نودهای دیتابیس (OOM Killer) می‌شود. به دلیل همین معماری، پلن پایه برای این دیتابیس از مقادیر بالای ۱۲ گیگابایت رم، ۱ هسته پردازنده و ۲ گیگابایت فضای ذخیره‌سازی شروع می‌شود. با استفاده از گزینه شخصی‌سازی منابع می‌توانید این مقادیر را متناسب با بار ترافیکی کلاستر خود ارتقا دهید.

اتصال از طریق کلاینت‌های خارجی

برای تست، مدیریت و تعامل مستقیم با دیتابیس از خارج از کلاستر، می‌بایست ابزار خط فرمان رسمی cqlsh را در سیستم خود نصب کنید.

نصب کلاینت cqlsh (پایتون):

از آنجا که این ابزار بر پایه پایتون توسعه یافته است، در تمام سیستم‌عامل‌ها (لینوکس، ویندوز، macOS) می‌توانید آن را از طریق مدیریت پکیج pip نصب کنید:

pip install cqlsh

دستور تست اتصال:

پس از نصب، با استفاده از دستور زیر به دیتابیس متصل شوید:

cqlsh <SUB-DOMAIN> <NodePort>

نکات استخراج متغیرهای اتصال:

  • مقدار هاست: به جای متغیر <SUB-DOMAIN>، مقداری که هنگام ساخت اپلیکیشن در قسمت Sub-domain وارد کردید را قرار دهید (مثال: my-cas.apps.teh1.abrhapaas.com).

  • مقدار پورت: به جای متغیر <NodePort> باید مقدار پورت اختصاص‌یافته خروجی را وارد کنید. برای یافتن این پورت، در داشبورد سرویس روی دکمه‌ی «مدیریت اپلیکیشن» کلیک کرده و از پنل کناری، در قسمت «تنظیمات دامنه و IP» مقدار NodePort را کپی کنید.

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