یہ ماڈیول کیا کرتا ہے #
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» کے آؤٹ پٹ کے ساتھ ہمیں لکھیں اور ہم فوراً جواب دیں گے۔