المقدمة
يصف هذا المستند إجراء حل تنبيه تجزئة MongoPrimaryDB في مجموعة سياسات Cisco (CPS).
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
ملاحظة: cisco يوصي أن أنت ينبغي يتلقى امتياز جذر وصول إلى CPS CLI.
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
- CPS 20.2
- MongoDB الإصدار 3.6.17
- نظام الحوسبة الموحدة (UCS)-B
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
يستخدم CPS MongoDB حيث تمثل عمليات Mongod التي تعمل على الأجهزة الظاهرية (VMs) ل SessionMgr البنية الأساسية لقاعدة البيانات.
عندما تنتقل الوثائق أو تتم إزالتها فإنها تترك ثقوبا. وتحاول MongoDB إعادة إستخدام هذه الفتحات لوثائق جديدة كلما أمكن ذلك، ولكن مع مرور الوقت تجد نفسها تمتلك الكثير من الفتحات ببطء وثبات، ولا يمكن إعادة إستخدامها لأن الوثائق لا يمكن أن تتلاءم معها. يسمى هذا التأثير التجزئة وهو شائع في جميع الأنظمة التي تخصص الذاكرة، ويتضمن نظام التشغيل (OS) الخاص بك.
تأثير التفتت هو إهدار المساحة. نظرا لحقيقة إستخدام MongoDB لملفات تم تعيينها بواسطة الذاكرة، فإن أي تجزئة على القرص تظهر في التجزئة في ذاكرة الوصول العشوائي (RAM) أيضا. يؤدي ذلك إلى إنشاء عدد أقل من ملائمة "مجموعة العمل" في ذاكرة الوصول العشوائي (RAM) ويتسبب في قيام القرص بتبديل المزيد.
يدعم CPS مؤشرات الأداء الأساسية (KPIs) لمراقبة تجزئة مستوى MongoDB من خلال إستخدام Grafana ويولد تنبيه بروتوكول إدارة الشبكة البسيط (SNMP) عندما تتجاوز النسبة المئوية لجزء MongoDB قيمة محددة.
يعرض الأمر /etc/collectd.d/dbMonitorList.cfg
يحتوي الملف الموجود على الأجهزة الظاهرية SessionMgr على قائمة قواعد البيانات وقيم النسبة المئوية لحد التجزئة الخاصة بها. بشكل افتراضي، تكون قيمة حد التجزئة 40٪. يمكن تغيير قيمة حد التجزئة الافتراضية كما هو مطلوب.
يمكن التحقق من إحصائيات التجزئة الخاصة ب session_cache و sk_cache والقطر وقواعد بيانات مستودع ملف تعريف المشترك (SPR) (باستخدام الأعضاء الأساسيين) باستخدام هذا الأمر:
[root@installer ~]# diagnostics.sh --get_frag
CPS Diagnostics HA Multi-Node Environment
---------------------------
Ping check for qns03 Adding to IGNORED_HOSTS...[FAIL]
|----------------------------------------------------------------------------------------------------------------------------------------|
| Mongo:v3.6.17 DATABASE LEVEL FRAGMENTATION STATUS INFORMATION Date : 2022-09-17 07:19:29 |
| SET TYPE : HA [MEMBER_ROLE : PRIMARY] |
|----------------------------------------------------------------------------------------------------------------------------------------|
| setname dbName storageSize(MB) datasize(MB) indexSize(MB) fileSize(MB) derivedFS(MB) frag% |
|----------------------------------------------------------------------------------------------------------------------------------------|
| ADMIN:set06 |
| Status via sessionmgr01:27721 |
| set06 diameter 9.56 0.04 0.05 64.00 0 NoFrag |
|----------------------------------------------------------------------------------------------------------------------------------------|
| BALANCE:set02 |
| Status via sessionmgr01:27718 |
| set02 balance_mgmt db not found - - - - - - |
|----------------------------------------------------------------------------------------------------------------------------------------|
| SESSION:set01 |
| Status via sessionmgr01:27717 |
| set01 session_cache 0.02 0.00 0.02 16.00 0 NoFrag |
|----------------------------------------------------------------------------------------------------------------------------------------|
| SESSION:set01 |
| Status via sessionmgr01:27717 |
| set01 sk_cache 0.02 0.00 0.01 16.00 0 NoFrag |
|----------------------------------------------------------------------------------------------------------------------------------------|
| SPR:set04 |
| Status via sessionmgr01:27720 |
| set04 spr 0.04 0.00 0.13 64.00 0 NoFrag |
|----------------------------------------------------------------------------------------------------------------------------------------|
[root@installer ~]#
المشكلة
عندما تتجاوز نسبة التجزئة للعضو الأساسي لمجموعة النسخ المتماثلة قيمة تجزئة الحد الذي تم تكوينه، يتم إنشاء هذا التنبيه. إذا لم يتم تكوين قيمة الحد الفاصل، فسيتم رفع التنبيه إذا قامت نسبة التجزئة بخرق القيمة الافتراضية (40٪).
نموذج "تجزئة MongoPrimaryDB تجاوزت قيمة الحد" تنبيه:
id=7100,values={sub_id=7107, event_host=sessionmgr01, status=down, msg=MongoPrimaryDB fragmentation exceeded the threshold value, CURR_FRAG = 40%, THRESHOLD = 40% at sessionmgr01:27717 for session_cac
إجراء حل تنبيه تجزئة MongoPrimaryDB
لتقليل نسبة التجزئة، قم بتقليص قاعدة البيانات عند إنشاء تنبيه. بمجرد تقليص قاعدة البيانات (تنخفض النسبة المئوية للتجزئة)، يتم إرسال تنبيه واضح.
الغرض من هذا الإجراء هو حل تنبيه تجزئة MongoPrimaryDB في العينة المتوفرة.
الخطوة 1. قم بتشغيل هذا الأمر من "مدير نظام المجموعة" أو PCRFclient للتحقق من حالة الأعضاء الأساسيين والثانويين في مجموعة النسخ المتماثلة.
#diagnostics.sh --get_r
|----------------------------------------------------------------------------------------------------------------------------------------|
|SESSION:set01a|
|Status via sessionmgr01:27717 sessionmgr02:27717 |
|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|
|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr01- ON-LINE--3| --------|
|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr02- ON-LINE--2| 1 sec|
|----------------------------------------------------------------------------------------------------------------------------------------|
الخطوة 2. قم بتشغيل هذا الأمر من إما Cluster Manager (مدير نظام المجموعة) أو pcrfClient لتغيير أولوية SessionMgr01 ولجعله عضوا ثانويا.
#sh set_priority.sh --db session --replSet set01a --asc
Expected output in #diagnostics.sh --get_r
|----------------------------------------------------------------------------------------------------------------------------------------|
|SESSION:set01a|
|Status via sessionmgr02:27717 sessionmgr01:27717 |
|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|
|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr02- ON-LINE--3| --------|
|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr01- ON-LINE--2| 1 sec|
|----------------------------------------------------------------------------------------------------------------------------------------|
ملاحظة: تأكد من أن sessionMGR01 لم يعد أساسيا (diagnostics.sh — get_r) ومن توفر عضو أساسي لمجموعة النسخ المتماثلة.
الخطوة 3. قم بتشغيل هذا الأمر من Sessionmgr01 لإيقاف عميل AIDO.
#monit stop aido_client
الخطوة 4. قم بتشغيل هذا الأمر من Sessionmgr01 لإيقاف مثيل Mongo الشخصي (PortNum هو رقم المنفذ للعضو المجزأ).
Command syntax:
#/etc/init.d/sessionmgr-<portNum> stop
Example:
#/etc/init.d/sessionmgr-27717 stop
الخطوة 5. لتنظيف دليل قاعدة البيانات في sessionMGR01، قم بإزالة دليل البيانات من المسار المذكور مقابل سمة —dbpath الخاصة بالأمر mongo. قم بتشغيل هذا الأمر من SessionMgr01 لاسترداد القيمة (أستخدم PortNum الخاصة بالعضو المجزأ).
ملاحظة: بما أن رقم المنفذ والدلائل المرتبطة ب sessionMgr DBS الأخرى مختلفة، تأكد من أن لديك الدلائل المناسبة لتنظيف بيانات جلسة العمل الأخرى.
Command syntax:
#grep -w DBPATH= /etc/init.d/sessionmgr-<portNum>
Example:
#grep -w DBPATH= /etc/init.d/sessionmgr-27717
Sample Output: DBPATH=/var/data/sessions.1/a
Copy the DBPATH from output.
Command syntax:
#rm -rf <DBPATH>/*
Example:
#rm -rf /var/data/sessions.1/a/*
الخطوة 6. قم بتشغيل هذا الأمر من Sessionmgr01 لبدء مثيل Mongo الخاص.
Command syntax:
#/etc/init.d/sessionmgr-<portNum> start
Example:
#/etc/init.d/sessionmgr-27717 start
الخطوة 7. قم بتشغيل هذا الأمر من Sessionmgr01 لبدء عميل AIDO.
#monit start aido_client
الخطوة 8. قم بتشغيل هذا الأمر إما من Cluster Manager أو pcrfClient لإعادة تعيين أولويات أعضاء مجموعة النسخ المتماثلة.
#sh set_priority.sh --db session --replSet set01a
الخطوة 9. قم بتشغيل هذا الأمر من "مدير نظام المجموعة" أو PCRFclient للتحقق من حالة الأعضاء الأساسيين والثانويين في مجموعة النسخ المتماثلة.
#diagnostics.sh --get_r
|----------------------------------------------------------------------------------------------------------------------------------------|
|SESSION:set01a|
|Status via sessionmgr01:27717 sessionmgr02:27717 |
|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|
|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr01- ON-LINE--3| --------|
|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr02- ON-LINE--2| 1 sec|
|----------------------------------------------------------------------------------------------------------------------------------------|