ماذا تفعل هذه الوحدة #
يُضبط memcached بملف نصي وحفنة من الرايات: كم من الذاكرة يُمنح، وكم خيطًا، وكم اتصالًا. إصابة هذه الأرقام تتوقف على حجم المثيل، والخطأ مكلف — إمّا أن تضيق بك الذاكرة المؤقتة أو تلتهم الذاكرة التي يحتاجها النظام.
تتكفّل وحدة memcached بذلك وبكل ما يحيط بالخدمة: تحسب الضبط انطلاقًا من الذاكرة الفعلية للجهاز، وتدير اعتمادات SASL (إلزامية في هذه الصورة)، وتصون شهادة TLS التي تُولَّد عند الإقلاع الأول —ولا تُخبز أبدًا داخل الـ AMI— وتمنحك الحالة المباشرة مع إحصاءات الخدمة.
الأوامر التي تقرأ الاعتمادات أو تمسّ الإعدادات تحتاج root (استخدم sudo). انتبه إلى optimize: تطبيق قيم جديدة يعيد تشغيل الخدمة، وإعادة التشغيل تفرّغ الذاكرة المؤقتة. إن فضّلت إعادة التشغيل بنفسك فاستخدم --no-restart.
دليل سريع #
اختر ما تريد فعله. كل وصفة تأتي بالأمر مكتوبًا — انسخه واضغط نسخ.
1
عرض حالة الخدمة
تحقّق بنظرة واحدة أن الذاكرة المؤقتة سليمة وما الضبط المطبَّق.
اتصل بمثيلك عبر SSH بالمستخدم ubuntu.
اطلب الحالة: سترى على أي المنافذ يستمع، وهل 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 على الإنترنت: افتحه لنطاق CIDR الخاص بشبكتك الافتراضية.3
ضبط حجم الذاكرة المؤقتة
أعد حساب الذاكرة والخيوط والاتصالات وفق الحجم الحقيقي للجهاز.
انظر أولًا ما القيم التي ستخرج، دون تغيير أي شيء:
$ sudo imaxe memcached optimize --showإن أقنعتك فطبّقها. تُعاد تشغيل الخدمة وتفرغ الذاكرة المؤقتة:
$ sudo imaxe memcached optimizeأتريد ذاكرة مؤقتة أكبر وهامشًا أقل للنظام؟ ارفع نسبة الذاكرة:
$ 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 أو الشهادة أو إعدادات الخدمة. أضف --json إلى status أو credentials أو users list أو tls show للحصول على خرج تقرؤه الآلة.
الأوامر الفرعية #
| الأمر الفرعي | ماذا يفعل | الرايات المهمة |
|---|---|---|
| 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 | يفتح منفذ memcached في جدار حماية المضيف (ufw). | --cidr --json |
| close-port | يغلق المنفذ في جدار حماية المضيف ويزيل القواعد الموجودة. | --json |
| tls | شهادة TLS لهذا المثيل: show وrenew. | --force --json |
| instance-setup | يهيّئ المثيل قبل تشغيل الخدمة. يستدعيه systemd عند كل إقلاع. | --bake |
الوسائط والرايات #
| الراية | النوع | الافتراضي | الوصف |
|---|---|---|---|
| --memory-pct | int | 60 | في optimize: نسبة الذاكرة القابلة للاستخدام المخصّصة للذاكرة المؤقتة. |
| --reserve-mem-mb | int | 512 | في optimize: ذاكرة بالميغابايت لا تُمسّ، محجوزة للنظام وبقية الخدمات. |
| --threads | int | 0 | في optimize: خيوط المعالجة. 0 يشتقّها من عدد المعالجات. |
| --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 يحمل معاملات الإقلاع التي تطبّقها الوحدة. |
| /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 الصحيح. |
كثرة evictions في status | الذاكرة المؤقتة صغيرة على ما تخزّنه: تُطرد العناصر لإفساح المجال. | ارفع النسبة بـoptimize --memory-pct أو انتقل إلى مثيل بذاكرة أكبر. |
| تبدو الذاكرة المؤقتة فارغة فجأة | أُعيد تشغيل الخدمة، وmemcached لا يحفظ شيئًا على القرص. | أمر طبيعي بعد optimize. وللتطبيق دون إعادة تشغيل استخدم --no-restart. |
| يرفض العميل الشهادة | إنها موقّعة ذاتيًا وخاصة بكل مثيل. | ثِق بها في عميلك أو تحقّق من بصمتها بـtls show. |
هل واجهتك مشكلة مع وحدة Memcached؟
راسلنا مرفقًا مخرجات «imaxe <module> status --json» وسنرد عليك بسرعة.