Cassandra একটি শক্তিশালী ডিস্ট্রিবিউটেড NoSQL ডেটাবেস সিস্টেম যা উচ্চ পারফরম্যান্স, স্কেলেবিলিটি, এবং ফাল্ট টলারেন্স নিশ্চিত করে। Cassandra কনফিগারেশন ফাইলগুলোর মাধ্যমে সিস্টেমের বিভিন্ন সেটিংস এবং আচরণ নিয়ন্ত্রণ করা হয়, যার মধ্যে সবচেয়ে গুরুত্বপূর্ণ হলো cassandra.yaml ফাইল। এই ফাইলটি Cassandra সিস্টেমের প্রধান কনফিগারেশন ফাইল, যা সার্ভার, ক্লাস্টার, নেটওয়ার্ক, ডেটাবেস সংরক্ষণ এবং অন্যান্য সিস্টেমের বিভিন্ন প্রোপার্টি কনফিগার করতে ব্যবহৃত হয়।
1. cassandra.yaml ফাইলের ভূমিকা
cassandra.yaml ফাইলটি Cassandra ডেটাবেসের গুরুত্বপূর্ণ কনফিগারেশন ফাইল যা নিম্নলিখিত কার্যাবলী সম্পাদন করে:
- নোড এবং ক্লাস্টারের কনফিগারেশন: প্রতিটি Cassandra নোডের জন্য পোর্ট, নেটওয়ার্ক, এবং ক্লাস্টার সম্পর্কিত বিভিন্ন সেটিংস কনফিগার করে।
- ডেটা স্টোরেজ: ডেটার ফাইল সিস্টেমের লোকেশন, ফাইল সাইজ এবং ডেটা স্টোরেজ কনফিগারেশনের জন্য এই ফাইলটি ব্যবহৃত হয়।
- নেটওয়ার্ক কনফিগারেশন: Cassandra ক্লাস্টারের মধ্যে নোডগুলোর মধ্যে যোগাযোগ এবং ডেটার রিপ্লিকেশন কনফিগার করে।
- পারফরম্যান্স এবং স্কেলিং: Cassandra সিস্টেমের পারফরম্যান্স এবং স্কেলিংয়ের জন্য বিভিন্ন প্যারামিটার কনফিগার করা হয়।
এই ফাইলটি সাধারণত /etc/cassandra/cassandra.yaml লোকেশনে অথবা $CASSANDRA_HOME/conf/ ডিরেক্টরিতে পাওয়া যায়।
2. cassandra.yaml ফাইলের প্রধান কনফিগারেশন সেটিংস
নিম্নে cassandra.yaml ফাইলের কিছু গুরুত্বপূর্ণ কনফিগারেশন সেটিংস এবং তাদের ব্যাখ্যা দেওয়া হলো:
2.1 cluster_name
cluster_name: 'Test Cluster'
- cluster_name ক্লাস্টারের নাম নির্ধারণ করে। এটি সিস্টেমের মধ্যে বিভিন্ন ক্লাস্টারের মধ্যে পার্থক্য নির্ধারণ করতে সাহায্য করে।
2.2 listen_address
listen_address: 127.0.0.1
- listen_address হলো সেই IP ঠিকানা যেখানে Cassandra নোডটি শোনাবে এবং ডেটাবেস সার্ভিস প্রদান করবে।
- এটি ক্লাস্টার সদস্যদের জন্য তাদের নোড ঠিকানা নির্ধারণ করতে ব্যবহৃত হয়। সাধারণত এটি সিস্টেমের হোস্ট আইপি বা নেটওয়ার্ক আইপি ঠিকানা হয়।
2.3 rpc_address
rpc_address: 0.0.0.0
- rpc_address নির্ধারণ করে যে Cassandra RPC (Remote Procedure Call) কোন ঠিকানায় শোনাবে। এটি ডেটাবেস ক্লায়েন্টদের জন্য উন্মুক্ত থাকবে।
0.0.0.0সেট করলে এটি সমস্ত নেটওয়ার্ক ইন্টারফেসের জন্য খোলা থাকবে।
2.4 endpoint_snitch
endpoint_snitch: GossipingPropertyFileSnitch
- endpoint_snitch Cassandra নোডগুলোর মধ্যে তথ্য যোগাযোগের জন্য ব্যবহৃত কনফিগারেশন। এটি নির্ধারণ করে ক্লাস্টারে কোন নোড কোথায় অবস্থিত এবং কিভাবে তাদের মধ্যে যোগাযোগ হবে।
- সাধারণত GossipingPropertyFileSnitch ব্যবহৃত হয়, কিন্তু অন্যান্য ধরনের snitch যেমন SimpleSnitch, PropertyFileSnitch ব্যবহৃত হতে পারে।
2.5 seeds
seeds: "127.0.0.1"
- seeds হল সেই নোডগুলোর IP ঠিকানা যা Cassandra ক্লাস্টারের প্রথম সার্ভার (seed nodes) হিসেবে কাজ করবে। প্রথম সিড নোডটির মাধ্যমে নতুন নোডগুলো ক্লাস্টারে যুক্ত হয়।
2.6 data_file_directories
data_file_directories:
- /var/lib/cassandra/data
- data_file_directories হল সেই লোকেশন যেখানে Cassandra ডেটা সংরক্ষণ করবে। এতে একাধিক ডিরেক্টরি থাকতে পারে।
- এখানে ডেটা, কম্প্যাক্টেড ডেটা এবং ট্রানজেকশনাল ডেটা সংরক্ষিত হয়।
2.7 commitlog_directory
commitlog_directory: /var/lib/cassandra/commitlog
- commitlog_directory Cassandra commit log সংরক্ষণের জন্য ব্যবহৃত ডিরেক্টরি নির্ধারণ করে। commit log ডেটা লেখার আগে একটি ইন-মেমরি লগে রাখা হয় যা নিরাপদে ডেটার প্রতিলিপি রক্ষা করে।
2.8 hints_directory
hints_directory: /var/lib/cassandra/hints
- hints_directory হল সেই স্থান যেখানে Cassandra নোডের ব্যর্থতার কারণে প্রক্রিয়া হয়নি এমন ডেটা রাখা হয়। এটি যখন নোড আবার চালু হয় তখন সেগুলো সিঙ্ক্রোনাইজ করে।
2.9 rpc_port
rpc_port: 9160
- rpc_port হল সেই পোর্ট নম্বর যেখানে Cassandra ক্লাস্টার ক্লায়েন্ট থেকে RPC (Remote Procedure Call) সংযোগ গ্রহণ করবে।
2.10 native_transport_port
native_transport_port: 9042
- native_transport_port হল সেই পোর্ট যেখানে Cassandra ক্লাস্টারটি সঠিকভাবে ট্রান্সপোর্ট লেয়ার (যেমন CQL) এক্সিকিউট করবে। সাধারণত, CQL ক্লায়েন্ট এই পোর্টের মাধ্যমে Cassandra-এ সংযোগ স্থাপন করে।
2.11 memtable_flush_writers
memtable_flush_writers: 1
- memtable_flush_writers Cassandra কনফিগারেশন যে কতগুলো থ্রেড Memtable ফ্লাশিংয়ের কাজ করবে তা নির্ধারণ করে। এটি সাধারণত সিস্টেমের পারফরম্যান্স অনুযায়ী কনফিগার করা হয়।
2.12 auto_snapshot
auto_snapshot: true
- auto_snapshot ফ্ল্যাগ দ্বারা Cassandra ডেটাবেসের মধ্যে স্ন্যাপশট অটোমেটিকভাবে তৈরি হবে কি না তা নির্ধারণ করা হয়। এটি সিস্টেমের ডেটার ব্যাকআপের জন্য ব্যবহৃত হয়।
3. Cassandra কনফিগারেশন এবং সেটিংস পরিবর্তন
cassandra.yaml ফাইলটি $CASSANDRA_HOME/conf/ ফোল্ডারে অবস্থান করে। এর মধ্যে অনেকগুলি কনফিগারেশন সেটিংস থাকে যেগুলির মাধ্যমে সিস্টেমের বিভিন্ন আচরণ কাস্টমাইজ করা সম্ভব। এগুলোর মধ্যে নেটওয়ার্ক, পারফরম্যান্স, এবং ডেটা স্টোরেজ সংক্রান্ত সেটিংস থাকে। কোনো ধরনের পরিবর্তন করার পর Cassandra সার্ভারটি পুনরায় চালু করতে হয় যাতে সেটিংস কার্যকরী হয়।
কিছু গুরুত্বপূর্ণ সেটিংস:
- cluster_name: ক্লাস্টারের নাম।
- listen_address: নোডের আইপি ঠিকানা।
- rpc_address: RPC সংযোগের জন্য ঠিকানা।
- data_file_directories: ডেটা সংরক্ষণের লোকেশন।
- commitlog_directory: কমিট লগের লোকেশন।
- seed nodes: সিড নোডের IP ঠিকানা।
সারাংশ
cassandra.yaml ফাইলটি Apache Cassandra সিস্টেমের প্রধান কনফিগারেশন ফাইল যা ডেটাবেসের বিভিন্ন সেটিংস এবং আচরণ নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এই ফাইলটি ডেটাবেসের স্কেলেবিলিটি, নেটওয়ার্ক কনফিগারেশন, ডেটা সংরক্ষণ এবং অন্যান্য সিস্টেম পারফরম্যান্স প্যারামিটার কাস্টমাইজ করতে সাহায্য করে। Cassandra সিস্টেমের পারফরম্যান্স এবং কার্যক্ষমতা বজায় রাখার জন্য এই কনফিগারেশন ফাইলটি সঠিকভাবে কনফিগার করা জরুরি।
Read more