এই মডিউলটি কী করে #
Memcached একটি টেক্সট ফাইল আর মুষ্টিমেয় কয়েকটি ফ্ল্যাগ দিয়ে কনফিগার হয়: কত RAM দেবেন, কতগুলো থ্রেড, কতগুলো সংযোগ। সঠিক সংখ্যাগুলো নির্ভর করে ইনস্ট্যান্সের আকারের ওপর, আর ভুল হলে খরচ বেশি — হয় ক্যাশ কম পড়ে, নয়তো সিস্টেমের প্রয়োজনীয় RAM খেয়ে ফেলে।
memcached মডিউল সেটি এবং সেবার চারপাশের সবকিছু সামলায়: মেশিনের প্রকৃত RAM থেকে টিউনিং হিসাব করে, SASL শংসাপত্র সামলায় (এই ইমেজে বাধ্যতামূলক), প্রথম বুটে তৈরি হওয়া TLS সার্টিফিকেট রক্ষণাবেক্ষণ করে —সেটি কখনও AMI-তে ঢোকানো হয় না— এবং সেবার পরিসংখ্যানসহ সরাসরি অবস্থা দেয়।
যেসব কমান্ড শংসাপত্র পড়ে বা কনফিগারেশন বদলায় তাদের root লাগে (sudo ব্যবহার করুন)। optimize নিয়ে সতর্ক থাকুন: নতুন মান প্রয়োগ করলে সেবা পুনরায় চালু হয়, আর পুনরায় চালু হলে ক্যাশ খালি হয়ে যায়। নিজে পুনরায় চালু করতে চাইলে --no-restart দিন।
দ্রুত নির্দেশিকা #
কী করতে চান বেছে নিন। প্রতিটি রেসিপিতে কমান্ড আগে থেকেই লেখা — কপি করে কপি করুন চাপুন।
1
সেবার অবস্থা দেখা
এক নজরে দেখে নিন ক্যাশ সুস্থ কি না এবং কোন টিউনিং প্রয়োগ হয়েছে।
ubuntu ব্যবহারকারী দিয়ে SSH-এ আপনার ইনস্ট্যান্সে যুক্ত হন।
অবস্থা জানতে চান: দেখবেন কোন পোর্টে শুনছে, TLS ও SASL সক্রিয় কি না, প্রয়োগ করা টিউনিং এবং সরাসরি পরিসংখ্যান (ব্যবহৃত মেমরি, আইটেম, হিট ও মিস):
$ sudo imaxe memcached statusড্যাশবোর্ড বা স্ক্রিপ্টের জন্য দরকার? --json যোগ করুন:
$ sudo imaxe memcached status --jsonhits বাড়তে থাকলে ও evictions কম থাকলে ক্যাশের আকার ঠিক আছে। উচ্ছেদ বেড়ে গেলে ক্যাশের আকার সমন্বয়-এ যান।2
ক্যাশে সংযোগ করা
আপনার অ্যাপ্লিকেশন যুক্ত করার জন্য ব্যবহারকারী, পাসওয়ার্ড ও পোর্ট নিন।
এই ইমেজে SASL বাধ্যতামূলক: বেনামি প্রবেশ নেই। এই ইনস্ট্যান্সের শংসাপত্র চান (পাসওয়ার্ড ঢাকা অবস্থায় আসে):
$ sudo imaxe memcached credentialsসত্যিই কপি করার সময় সেটি খোলা অবস্থায় দেখান:
$ sudo imaxe memcached credentials --show-password11211 পোর্ট TLS-এ চলে; 11212 সাদা টেক্সট এবং কেবল loopback-এ শোনে, সিস্টেমের নিজস্ব সরঞ্জামের জন্য। 11211 ইন্টারনেটে খুলবেন না: আপনার VPC-র CIDR-এর জন্য খুলুন।3
ক্যাশের আকার সমন্বয় করা
মেশিনের প্রকৃত আকার অনুযায়ী মেমরি, থ্রেড ও সংযোগ পুনরায় হিসাব করুন।
আগে দেখুন কী মান বেরোবে, কিছু না বদলে:
$ sudo imaxe memcached optimize --showপছন্দ হলে প্রয়োগ করুন। সেবা পুনরায় চালু হবে এবং ক্যাশ খালি হবে:
$ sudo imaxe memcached optimizeবেশি ক্যাশ আর সিস্টেমের জন্য কম জায়গা চান? RAM-এর শতাংশ বাড়ান:
$ sudo imaxe memcached optimize --memory-pct 75--dry-run দিলে যে কনফিগারেশন ব্লক লেখা হতো তাও দেখবেন। আর --no-restart দিলে পুনরায় চালু না করেই প্রয়োগ হয়: নতুন মান পরের বুটে কার্যকর হবে।4
SASL ব্যবহারকারী তৈরি করা
আপনার অ্যাপ্লিকেশনের শংসাপত্র তৈরি, পরিবর্তন বা মুছে ফেলুন।
SASL ডেটাবেসে থাকা ব্যবহারকারীদের তালিকা দেখুন:
$ sudo imaxe memcached users listপ্রতিটি অ্যাপ্লিকেশনের জন্য একটি তৈরি করুন, এলোমেলো পাসওয়ার্ডসহ:
$ sudo imaxe memcached users add app1নির্দিষ্ট পাসওয়ার্ড চাই? স্ট্যান্ডার্ড ইনপুট দিয়ে পাঠান, যেন তা ps বা শেল ইতিহাসে না থাকে:
$ sudo imaxe memcached users add app1 --stdinimaxe memcached users rotate <ব্যবহারকারী>। নাম না দিলে পণ্যের ব্যবহারকারীরটি বদলায়।5
TLS সার্টিফিকেট পরীক্ষা করা
মেয়াদ পরীক্ষা করুন এবং ইনস্ট্যান্সের সার্টিফিকেট নবায়ন করুন।
সার্টিফিকেট প্রতিটি ইনস্ট্যান্সের প্রথম বুটে তৈরি হয়, তাই মেশিনগুলোর মধ্যে কখনও ভাগ হয় না। বর্তমানে যেটি চলছে দেখুন:
$ sudo imaxe memcached tls showযখন খুশি নবায়ন করুন, বর্তমানটি এখনও বৈধ থাকলেও:
$ sudo imaxe memcached tls renew --forcetls show ছাপে।শংসাপত্র ও সার্টিফিকেট প্রতিটি বুটে instance-setup তৈরি করে, যাকে systemd ডাকে। কোনো কমান্ড 65 কোড ফেরালে বুঝবেন ওই ইনস্ট্যান্স প্রথম বুট শেষ করেনি: কিছু বদলানোর আগে sudo systemctl status memcached দেখুন।
সংক্ষিপ্তসার #
imaxe memcached <সাবকমান্ড> [flags]প্রায় সব সাবকমান্ডেরই root লাগে (sudo দিন), কারণ সেগুলো SASL ডেটাবেস, সার্টিফিকেট বা সেবার কনফিগারেশন পড়ে। যন্ত্রপাঠ্য আউটপুটের জন্য status, credentials, users list বা tls show-এর সঙ্গে --json দিন।
সাবকমান্ড #
| সাবকমান্ড | কী করে | প্রাসঙ্গিক ফ্ল্যাগ |
|---|---|---|
| optimize | এই ইনস্ট্যান্সের জন্য সেরা ক্যাশ আকার, থ্রেড ও সংযোগ হিসাব করে প্রয়োগ করে। | --memory-pct --dry-run --show --no-restart |
| status | সেবার অবস্থা: শ্রোতা, TLS, SASL, প্রয়োগ করা টিউনিং ও সরাসরি পরিসংখ্যান। | --json |
| credentials | এই ইনস্ট্যান্সের SASL শংসাপত্র ও সংযোগের উপায় দেখায়। | --json --show-password |
| users | SASL ব্যবহারকারী সামলায়: list, add, rotate ও delete। | --password --stdin --json |
| set-password | প্রোডাক্টের SASL ব্যবহারকারীর পাসওয়ার্ড বদলায়। users rotate-এর শর্টকাট। | --random --stdin |
| open-port | হোস্ট ফায়ারওয়ালে (ufw) memcached পোর্ট খোলে। | --cidr --json |
| close-port | হোস্ট ফায়ারওয়ালে পোর্ট বন্ধ করে এবং থাকা নিয়মগুলো সরায়। | --json |
| tls | এই ইনস্ট্যান্সের TLS সার্টিফিকেট: show ও renew। | --force --json |
| instance-setup | সেবা চালুর আগে ইনস্ট্যান্স প্রস্তুত করে। প্রতিটি বুটে systemd এটি ডাকে। | --bake |
আর্গুমেন্ট ও ফ্ল্যাগ #
| ফ্ল্যাগ | ধরন | ডিফল্ট | বিবরণ |
|---|---|---|---|
| --memory-pct | int | 60 | optimize-এ: ব্যবহারযোগ্য RAM-এর যত শতাংশ ক্যাশে দেওয়া হয়। |
| --reserve-mem-mb | int | 512 | optimize-এ: MB-তে যে RAM ছোঁয়া হয় না, সিস্টেম ও অন্যান্য সেবার জন্য সংরক্ষিত। |
| --threads | int | 0 | optimize-এ: কর্মী থ্রেড। 0 হলে CPU সংখ্যা থেকে নির্ধারিত হয়। |
| --max-connections | int | 0 | optimize-এ: যুগপৎ সংযোগ। 0 হলে ক্যাশের আকার থেকে নির্ধারিত হয়। |
| --dry-run | bool | false | optimize-এ: কিছু লেখে না; মানগুলো ও যে কনফিগারেশন ব্লক প্রয়োগ হতো তা দেখায়। |
| --show | bool | false | optimize-এ: কেবল হিসাব করা মানগুলো ছাপে। |
| --no-restart | bool | false | optimize-এ: কনফিগারেশন লেখে কিন্তু সেবা পুনরায় চালু করে না। পুনরায় চালু হলে ক্যাশ খালি হয়। |
| --password | string | — | users add/rotate-এ: নির্দিষ্ট পাসওয়ার্ড। না দিলে এলোমেলো তৈরি হয়। |
| --stdin | bool | false | users add/rotate-এ: স্ট্যান্ডার্ড ইনপুট থেকে পাসওয়ার্ড পড়ে, যাতে তা ps বা ইতিহাসে না দেখা যায়। |
| --show-password | bool | false | credentials-এ: পাসওয়ার্ড খোলা অবস্থায় ছাপে। ডিফল্টে ঢাকা থাকে। |
| --force | bool | false | tls renew-এ: বর্তমান সার্টিফিকেট বৈধ ও এই ইনস্ট্যান্সের হলেও পুনরায় তৈরি করে। |
| --random | bool | false | set-password-এ: শক্তিশালী পাসওয়ার্ড তৈরি করে একবারই দেখায়। |
| --cidr | string | — | open-port-এ: নিয়মটি ওই উৎসেই সীমিত রাখে। না দিলে যেকোনো উৎস অনুমোদিত। |
| --json | bool | false | ফলাফল কাঠামোবদ্ধ JSON হিসেবে stdout-এ দেয়। |
ফাইল ও পথ #
| পথ | বিষয়বস্তু |
|---|---|
| /etc/imaxe/memcached.yml | মডিউলের কনফিগারেশন: সেবা, পথ, এবং optimize, TLS ও SASL-এর ডিফল্ট মান। |
| /etc/memcached.conf | memcached-এর কনফিগারেশন। optimize এটি লেখে: হাতে সম্পাদনা করবেন না। |
| /etc/systemd/system/memcached.service.d/ | systemd drop-in, মডিউল যে চালুর প্যারামিটার প্রয়োগ করে তা নিয়ে। |
| /etc/memcached/tls/ | এই ইনস্ট্যান্সের সার্টিফিকেট ও ব্যক্তিগত কী, প্রথম বুটে তৈরি। |
| /etc/sasl2/memcached-sasldb2 | SASL ডেটাবেস, ব্যবহারকারী ও তাঁদের পাসওয়ার্ডসহ। |
memcached.yml-এর উদাহরণ:
service: memcached
port: 11211
optimize:
memory_pct: 60
memory_min_mb: 64
reserve_mem_mb: 512
threads: 0
max_connections: 0
tls:
enabled: true
days: 3650
plain_local_port: 11212
sasl:
enabled: true
user: memcachedপ্রস্থান কোড ও লগ #
প্রতিটি চালনা একটি কোড ফেরায় যা echo $? দিয়ে দেখা যায় — স্ক্রিপ্টে জোড়ার জন্য কাজে লাগে:
কাজ করার সময় সেবাকে সরাসরি অনুসরণ করুন:
$ sudo systemctl status memcached
$ sudo journalctl -u memcached -fসমস্যা সমাধান #
| লক্ষণ | সম্ভাব্য কারণ | সমাধান |
|---|---|---|
| NOSECRET আসে (কোড 65) | ইনস্ট্যান্স প্রথম বুট শেষ করেনি, আর তখনই শংসাপত্র তৈরি হয়। | sudo systemctl status memcached দেখে আবার চেষ্টা করুন। |
| NOMEMCACHED আসে (কোড 64) | মডিউল ইনস্টল আছে কিন্তু হোস্টে memcached নেই। | আপনি পণ্যের ইমেজে নেই: memcached ইনস্টল করুন বা সঠিক AMI ব্যবহার করুন। |
status-এ প্রচুর evictions | যা রাখছেন তার তুলনায় ক্যাশ ছোট: জায়গা করতে আইটেম উচ্ছেদ হয়। | optimize --memory-pct দিয়ে শতাংশ বাড়ান বা বেশি RAM-এর ইনস্ট্যান্সে যান। |
| ক্যাশ হঠাৎ খালি দেখায় | সেবা পুনরায় চালু হয়েছে, আর memcached ডিস্কে কিছু রাখে না। | optimize-এর পর স্বাভাবিক। পুনরায় চালু না করে প্রয়োগ করতে --no-restart দিন। |
| ক্লায়েন্ট সার্টিফিকেট প্রত্যাখ্যান করে | এটি স্ব-স্বাক্ষরিত এবং প্রতিটি ইনস্ট্যান্সের নিজস্ব। | ক্লায়েন্টে এতে আস্থা রাখুন বা tls show দিয়ে ফিঙ্গারপ্রিন্ট যাচাই করুন। |
Memcached মডিউল নিয়ে আটকে গেছেন?
«imaxe <module> status --json» এর আউটপুট সহ আমাদের লিখুন, আমরা দ্রুত উত্তর দেব।