آموزش راه اندازی کلاسترینگ پایگاه داده Cassandra با چندین سرور یا گره در Ubuntu 14.04

Multi-Node Cluster Cassandra آموزش banner

آموزش راه اندازی کلاسترینگ پایگاه داده Cassandra با چندین سرور یا گره در Ubuntu 14.04

ow To Run a Multi-Node Cluster Database with Cassandra on Ubuntu 14.04

 

 

معرفی Cassandra 

Cassandra یا Apache Cassandra یک پایگاه داده متن باز بر اساس سیستم NoSQL می باشد که بسیار مقیاس پذیر و قابل انعطاف می باشد و کارایی بسیار بالایی در کلاسترینگ با چندین سرور را دارد. قبلا به بررسی نصب و راه اندازی Cassandra با یک گره Node پرداختیم ، و در این آموزش Cassandra را با چندین گره بر روی سرور Ubuntu 14.04 راه اندازی می کنیم.

پیش نیاز ها

باید قبل از راه اندازی کلاستر Cassandra ، تعداد سرور هایی که می خواهید به عنوان گره Node در کلاستر معرفی کنید تا تعیین کنید. این کار حتما لازم نیست ولی پیشنهاد می کنیم که این کار را حتما انجام دهید ، همچنین لازم نیست که سرور های مشخصات یکسانی داشته باشند.

در این آموزش به موارد زیر نیاز داریم :

  • حداقل دو سرور Ubuntu 14.04 که تنظیمات راه اندازی اولیه روی آنها انجام شده باشد.
  • تنظیمات دیواره آتش هر سرور باید انجام شده باشد.
  • بر روی هر سرور برنامه Cassandra مطابق آموزش راه اندازی Cassandra که قبلا داده شده نصب شده باشد.

مرحله اول – حذف داده های پیش فرض

سرور ها در کلاستر Cassandra به عنوان گره Node شناخته می شوند. تا الان هر چیزی که روی سرور داریم یک کلاستر Cassandra در یک سرور و به صورت تک گره Single-Node است و در این آموزش کلاسترینگ Cassandra را به صورت چندین گره Multi-Node بر روی چند سرور راه اندازی می کنیم.

تمام دستورات در این مرحله و مراحل بعد باید در تمامی گره ها و سرور ها وارد شود و باید مطمئن باشید که ترمینال های زیادی را در سرور های می توانید اجرا کنید.

اولین دستوری که در سرور ها باید وارد کنید برای متوقف کردن سرویس Cassandra daemon می باشد :

سپس مجموعه داده های Cassandra را حذف می کنیم :

مرحله دوم – پیکربندی کلاستر

فایل پیکربندی Cassandra در مسیر etc/cassandra/ قرار دارد. فایل cassandra.yaml شامل قسمتها و دستورات زیادی است ، که در این مرحله آن را برای راه اندازی کلاستر پیکربندی می کنیم.

برای راه اندازی کلاسترینگ با چندین گره ، فقط خطوط زیر را تغییر می دهیم :

cluster_name : تعیین نام دلخواه برای کلاستر

seed : برای تعیین لیست آدرس های IP سرور های می باشد که باید با کاما از یکدیگر جدا کنید

listen-address : آدرس IP سروری که بقیه گره ها باید به این گره متصل شوند. به صورت پیش فرض مقدار آن localhost است که باید مقدار آدرس IP سرور را قرار دهید.

rpc-address : تعیین آدرس IP برای دسترسی سرویس ها و پردازش های دیگر سرور ها به این سرور است که به صورت پیش فرض روی ocalhost قرار دارد. اگر نام دامنه ای برای سرور انتخاب و به درستی تنظیم شده است آن را رها کنید در غیر اینصورت مقدار آدرس IP سرور را با مقدار ۱۲۷٫۰٫۰٫۱ جایگزین کنید.

endpoint-snitch : انتخاب یک نام برای معرفی شبکه به Cassandra که به اصطلاح آن را خرگوش snitch می نامیم. این مقدار به Cassandra می گوید که دنبال چه شبکه ای باید بگردد. در اینجا مقدار پیش فرض SimpleSnitch است که برای شبکه هایی است که در یک دیتاسنتر هستند ولی ما در اینجا مقدار آن را GossipingPropertyFileSnitch قرار می دهیم که این مقدار برای محصولات و تنظیمات تجاری پیشنهاد می شود.

auto-bootstrap : این خط در فایل پیکربندی وجود ندارد ، پس باید آن را اضافه کنید و مقدار آن را false قرار دهید. این گزینه باعث می شود که گره های جدید به درستی از داده های استفاده کنند. در حالتی که می خواهید گره جدید به کلاستر اضافه کنید این گزینه اختیاری است ولی اگر کلاسترینگ تازه راه اندازی می کنید این گزینه اجباری است و به این معنی است که این گره تنها و بدون داده است.

فایل پیکربندی را با nano یا یک ویرایشگر متن دلخواه باز کنید :

خطوط زیر را در این فایل پیدا کنید و همانطور که در زیر نشان داده شده آن ها را تغییر دهید. مقدار your_server_ip را با مقدار آدرس IP سروری که الان به آن متصل هستید جایگزین کنید. مقدار seeds –  باید در همه سرور ها یکسان باشد و شامل آدرس IP همه سرور ها است که با کاما از یکدیگر جدا شده اند.

در انتهای فایل خط auto_bootstrap را نیز اضافه کنید :

پس از اتمام تغییرات فایل پیکربندی ، آن را ذخیره کرده و خارج شوید. این تنظیمات را نیز در تمامی سرور هایی که می خواهید عضو گره های کلاستر باشند ، انجام دهید.

مرحله سوم – تنظیمات فایروال

تا اینجا کلاستر Cassandra را پیکربندی کردیم ولی سرور های نمی توانند با یکدیگر ارتباط داشته باشند و برای رفع این مشکل باید دیواره آتش را پیکر بندی کنیم.

در ابتدا سرویس Cassandra را در هر سرور مجددا راه اندازی می کنیم :

اگر وضعیت کلاستر را بررسی کنید می بینید که فقط یک گره محلی local فعال است و به این دلیل است که سرور های توانایی ارتباط با یکدیگر را ندارند.

 

برای برقراری ارتباط در شبکه باید پورت های زیر را در هر سرور باز کنید :

  • ۷۰۰۰ : که پورت TCP و برای دستورات و داده ها هست
  • ۹۰۴۲ : که پورت TCP و برای ارتبط محلی سرور ها است. Cqlsh که ابزار خط فرمان Cassandra است ، از طریق این پورت ارتباط برقرار می کند.

برای تغییرات در فایروال ، فایل رول های مربوط به IPv4 را باز کنید :

برای اجازه به ترافیک ورودی پورت های گفته شده ، خط زیر را در زنجیره INPUT وارد کنید. اگر برای تنظیم فایروال از فایل rules.v4 استفاده می کنید ، کافیست خط زیر را قبل از خط توضیح Reject anything that’s fallen through to this point # قرار دهید.

آدرس IP مشخص شده با s- باید آدرس گره یا سرور دیگر در کلاستر باشد. مثلا اگر دو سرور با آدرس های ۱۱۱٫۱۱۱٫۱۱۱٫۱۱۱ و ۲۲۲٫۲۲۲٫۲۲٫۲۲۲ دارید ، با در سرور ۱۱۱٫۱۱۱٫۱۱۱٫۱۱۱ باید در خط زیر از آدرس ۲۲۲٫۲۲۲٫۲۲۲٫۲۲۲ استفاده کنید.

پس از اضافه کردن نقش مورد نظر ، فایل را ذخیره کرده و خارج شوید و سپس iptables را مجددا راه اندازی کنید.

مرحله چهارم – بررسی وضعیت کلاستر

تا اینجا همه کارهایی که باید برای راه اندازی کلاستر با چندین گره را باید انجام می دادیم را انجام دادیم. اکنون باید وضعیت ارتباطات بین همه گره ها را بررسی کنیم.

 

در این خروجی اگر همه سرور هایی که تنظیم کرده اید را می توانید مشاهده کنید به این معنی است که کلاسترینگ Cassandra با چندین گره را به درستی راه اندازی کرده اید.

همچنین اگر امکان اتصال با دستور calsh را دارید ، به این روش نیز می توانید آن را بررسی کنید. دقت کنید که برای استفاده از این دستور به آدرس IP هر گره در کلاستر نیاز دارید.

اگر متصل باشد خروجی زیر را مشاهده می کنید :

 

پایان

شما توانستید که کلاسترینگ Cassandra را با چندین گره راه اندازی کنید. برای کسب اطلاعات بیشتر می توانید سایت پروژه Cassandra را مطالعه کنید. اگر نیاز به رفع مشکل کلاستر داشتید ، ابتدا به دنبال یک سرنخ در گزارش ها در مسیر var/log/cassandra/ بگردید.

Leave a Reply