نصب و راه‌اندازی کاساندرا روی دو سرور

کاساندرا یک دیتابیس Distribute هست که توسط بنیاد آپاچی داره گسترش پیدا می‌کنه، ویژگی‌های خوبی داره از جمله اینکه واسط راحتی برای برقراری ارتباط داره، cql شبیه sql هست و به همون راحتی. اینجا نمی‌خوام خوبی و بدی کاساندرا رو بگم اینجا قراره باهم ببینیم چجوری میشه با کاساندرا یک کلاستر ایجاد کرد.
برای اینکه بتونیم نصب کاساندرا روی دو سرور رو شبیه‌سازی کنیم،نیاز به یک centOs روی VirtualBox داریم که از اون بعنوان سرور دوم استفاده کنیم،سرور اول هم همون سیستم‌عامل خودمون هست(البته میشه چندتا کاساندرا رو روی سیستم عامل خودمون اجرا کنیم و کانفیگ کنیم، این راهی بود که من انتخاب کردم). همچنین برای اینکه centOs هم به اینترنت متصل باشه و هم بتونم با یک IP مشخص با اون ارتباط برقرار کنیم توی تنظیمات شبکه VirtualBox آداپتور اول رو بصورت NAT و آداپتور دوم رو بصورت Host Only تنظیم می‌کنیم، اولی برای اتصال به اینترنت و دومی برای دسترسی استفاده میشه.

VirtualBox Network Settings
برای شروع فایل باینری کاساندرا رو از planetcassandra دانلود و به جفت سرور‌ها منتقل می‌کنیم.(من فایل‌ها رو در مسیر ~/cassandra قرار دادم). برای راه‌اندازی کاساندرا کافیه به داخل دایرکتوری ~/cassandra/bin بریم و دستور ./cassandra رو اجرا کنیم. ولی چون هدف ایجاد یک کلاستر است این کار رو فعلا نمی‌کنم و میریم سراغ تنظیمات کاسانداره تا یک کلاستر ایجاد کنیم. فایل تنظیمات کاساندارا در مسیر ~/cassandra/conf/cassandra.yaml قرار داره. درون این فایل ما فقط نیاز به تغییر 5 ویژگی داریم که بترتیب زیر هستند.

  • cluster_name این اسم کلاستر شما هست

  • -seeds سید‌ها IP گره‌(سرور)ها شما هستند که با ویرگول از هم جدا شده‌اند.

  • listen_address نشانی IP است که گره‌های دیگر درون کلاستر از طریق آن با این گره ارتباط برقرار می‌کنند. ( این نشانی برای centOS همان IP آداپتور دوم است)

  • rpc_address شناسه IP برای اجرای دستورات از راه دور. در صورتی که این مقدار برابر localhost یا 127.0.0.1 باشد، تنها کلایت‌های تنها می‌توانند بصورت لوکال به این گره وصل شوند. (این شناسه تاثیری در ارتباط بین گره‌ها ندارد و تنها برای ارتباط کلاینت‌ها مورد استفاده قرا می‌گیرد)

  • endpoint_snitch الان که مشغول نوشتن این متن هستم هنوز دقیق نمیدونم مفهوم دقیق این ویژگی چیه ولی کاری که انجام میده اینه که به کاساندرا میگه که نحوه ارتباط بین گره‌ها به چه صورت است، مقدار پیش‌فرض این ویژگی برابر SimpleSnitch هست. که برای وقتی هست که گره‌ها درون یک دیتاسنتر قرار دارند(برای ما هم همین حالته) ولی وقتی قراره گره‌ها بصورت عملیاتی مورد استفاده قرار بگیرند و روی یک دیتاسنتر نیستند بهتره این مقدار برابر GossipingPropertyFileSnitch قرار داده بشه.

  • auto_bootstrap این ویژگی بصورت پیش‌فرض درون فایل تنظیمات وجود نداره و شما خودتون اون رو به انتهای فایل‌اضافه کنید و مقدار اون رو برابر false قرار بدید. این ویژگی وقتی که میخواید یک گره به کلاستری که قبلا ساختید و حاوی داده واقعی هست الزامی نیست ولی وقتی میخواید یک کلاستر جدید بسازید نوشتن اون الزامیه‌که باعث میشه یک گره خالی و بدون هیچ داده‌ای داشته باشید.

خب حالا که فهمیدیم تنظیمات لازم ما چی هستند، با فرض اینکه IP گره‌های ما برای centOs برابر 192.168.56.1 و برای گره دیگه برابر 192.168.56.101 هست تنظیمات برای centOS به این صورت میشه

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
. . .
cluster_name: 'FarnabazCluster'
. . .
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.56.101,192.168.56.1"
. . .
listen_address: 192.168.56.101
. . .
rpc_address: 192.168.56.101
. . .
endpoint_snitch: SimpleSnitch
. . .
auto_bootstrap: false

برای گره دیگه یعنی سیستم عامل خودمون کافیه جای دوتا IP عوض بشه.
خب حال اگه هر دو کاساندرو رو اجرا کنیم کار تمومه( همونطور که پیشتر گفتم برای اجرای کاساندرا کافیه درون دایرکتوری ~/cassandra/bin دستور ./cassandra رو اجرا کنید). برای اینکه از صحت اتصال این دو سرور مطمئن بشیم اگه درون دایتوری ~/cassandra/bin دستور دستور زیر رو اجر کنیم.

1
./nodetools status

خروجی زیر رو مشاهده می‌کنیم

1
2
3
4
5
6
7
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.56.1 166.89 KB 256 100.0% ba6e7e9f-a442-42c5-9162-6491a67f2f55 rack1
UN 192.168.56.101 221.11 KB 256 100.0% 0ce27c92-762d-4d8f-8b3f-049a5c06c5bc rack1

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