المقدمة
يوضح هذا المستند كيفية تنفيذ الحل البديل لمجموعة بيئة التنفيذ المشتركة (CEE) للأجهزة (POD) (PGPOOL) الخاصة بالبنية الأساسية للخدمات الدقيقة للمشترك (SMI) مشاكل إعادة تشغيل.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- Cisco SMI CEE (Ultra Cloud Core CEE)
- النظام الأساسي للنشر الأصلي (CNDP) من الجيل الخامس للشبكات أو بنية المعدن الخفيف طراز SMI (BM)
- محطات الإرساء و كوبرنيتس
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
- SMI 2020.02.2.35
- Kubernetes v1.21.0
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
ما هي SMI؟
Cisco SMI هي مجموعة طبقات من تقنيات ومعايير السحابة التي تمكن التطبيقات المستندة إلى الخدمات الدقيقة من وحدات الأعمال Cisco Mobility، و Cable، و Broadband Network Gateway (BNG) - وجميعها تحتوي على وظائف إدارة المشترك المتشابهة ومتطلبات تواجد بيانات مماثلة.
السمات هي:
- مجموعة شبكات الطبقة (التقنيات والمعايير) لتوفير عمليات النشر من أعلى إلى أسفل وكذلك إستيعاب البنية الأساسية الحالية لشبكات العملاء.
- تتم مشاركة تقنية شبكة إيثرنت المحسنة المجمعة (CEE) من قبل جميع التطبيقات للوظائف التي لا تستخدم التطبيقات (تخزين البيانات والنشر والتهيئة والقياس عن بعد والإنذار). وهذا يوفر تفاعلا وخبرة متناسقين لجميع نقاط اتصال العملاء ونقاط الدمج.
- يتم نشر التطبيقات ومعالج إيثرنت المحسنة المجمعة في حاويات الخدمة الدقيقة ويتم توصيلها بشبكة خدمة ذكية.
- واجهة برمجة تطبيقات مكشوفة للنشر والتكوين والإدارة من أجل تمكين التشغيل التلقائي.
ما هي SMI CEE؟
تعد تقنية شبكة إيثرنت المحسنة المجمعة (CEE) حلا برمجيا تم تطويره لمراقبة تطبيقات الأجهزة المحمولة والكبلات التي يتم نشرها على SMI. تلتقط تقنية شبكة إيثرنت المحسنة المجمعة (CEE) المعلومات (المقاييس الأساسية) من التطبيقات بطريقة مركزية للمهندسين لتصحيح الأخطاء واستكشاف الأخطاء وإصلاحها.
يعتبر CEE مجموعة الأدوات الشائعة التي يتم تثبيتها لجميع التطبيقات. يأتي هذا الطراز مزودا بمركز مخصص لعمليات التشغيل (OPS)، والذي يوفر واجهة المستخدم (CLI) وواجهات برمجة التطبيقات (API) لإدارة أدوات الشاشة. تتوفر تقنية شبكة إيثرنت المحسنة المجمعة (CEE) واحدة فقط لكل مجموعة.
ما هي أدوات مساعدة تقنية شبكة إيثرنت المحسنة المجمعة (CEE)؟
POD هي عملية يتم تشغيلها على نظام المجموعة Kubernetes. تتضمن نقطة الوصول (POD) وحدة محببة تعرف باسم حاوية. يحتوي POD على حاوية واحدة أو عدة حاويات.
يقوم Kubernetes بنشر PODs واحد أو أكثر على عقدة واحدة والتي يمكن أن تكون جهازا ماديا أو افتراضيا. يحتوي كل POD على هوية منفصلة باستخدام عنوان IP داخلي ومساحة منفذ. ومع ذلك، يمكن أن تشارك الحاويات الموجودة في POD موارد التخزين والشبكة. يحتوي CEE على عدد من نقاط الوصول (PODs) التي لها وظائف فريدة. وتعد مجموعة PGPOOL ومرحلة ما بعد التنفيذ من بين العديد من نقاط الوصول في شبكة إيثرنت المحسنة المجمعة.
ما هو PGPOOL؟
يدير PGPOOL تجمع موارد PostGres للاتصال والنسخ المماثل ورصيد التحميل وما إلى ذلك. PGPOOL هو برنامج متوسط يعمل بين خوادم PostGreSQL وقاعدة بيانات PostgreSQL.
ما هو Postgres POD؟
تدعم Postgres قاعدة بيانات لغة الاستعلام المنظمة (SQL) ذات التكرار لتخزين التنبيهات ولوحات المعلومات Grafana.
المشكلة
تتم إعادة تشغيل PODs الخاصة بالتجمع بشكل منتظم أثناء تشغيل نقاط الوصول من بعد RISQL دون أي مشاكل.
دخلت in order to عرضت التنبيهات، هذا أمر:
show alerts active summary | include "POD_|k8s-pod-"
يتم عرض نموذج للتنبيه من CEE هنا.
[pod-name-smf-data/podname] cee# show alerts active summary | include "POD_|k8s-pod-"
k8s-pod-crashing-loop 1d9d2b113073 critical 12-15T21:47:39 pod-name-smf-data-mas
Pod cee-podname/grafana-65cbdb9846-krgfq (grafana) is restarting 1.03 times / 5 minutes.
POD_Restarted 04d42efb81de major 12-15T21:45:44 pgpool-67f48f6565-vjt Container=
k8s_pgpool_pgpool-67f48f6565-vjttd_cee-podname_a9f68607-eac4-40a9-86ef-db8176e0a22a_1474 of pod= pgpool-...
POD_Restarted f7657a0505c2 major 12-15T21:45:44 postgres-0 Container=
k8s_postgres_postgres-0_cee-podname_59e0a768-6870-4550-8db3-32e2ab047ce2_1385 of pod= postgres-0 in name...
POD_Restarted 6e57ae945677 major 12-15T21:45:44 alert-logger-d96644d4 Container=
k8s_alert-logger_alert-logger-d96644d4-dsc8h_cee-podname_2143c464-068a-418e-b5dd-ce1075b9360e_2421 of po...
k8s-pod-crashing-loop 5b8e6a207aad critical 12-15T21:45:09 pod-name-smf-data-mas Pod
cee-podname/pgpool-67f48f6565-vjttd (pgpool) is restarting 1.03 times / 5 minutes.
POD_Down 45a6b9bf73dc major 12-15T20:30:44 pgpool-67f48f6565-qbw Pod= pgpool-67f48f6565-qbw52 in namespace=
cee-podname is DOWN for more than 15min
POD_Down 4857f398a0ca major 12-15T16:40:44 pgpool-67f48f6565-vjt Pod= pgpool-67f48f6565-vjttd in namespace=
cee-podname is DOWN for more than 15min
k8s-pod-not-ready fc65254c2639 critical 12-11T21:07:29 pgpool-67f48f6565-qbw Pod
cee-podname/pgpool-67f48f6565-qbw52 has been in a non-ready state for longer than 1 minute.
k8s-pod-not-ready 008b859e7333 critical 12-11T16:35:49 pgpool-67f48f6565-vjt Pod
cee-podname/pgpool-67f48f6565-vjttd has been in a non-ready state for longer than 1 minute.
استكشاف الأخطاء وإصلاحها
من مدير Kubernetes، دخلت هذا أمر:
kubectl describe pods -n
postgres-0"
يتم عرض إخراج نموذج وصف POD هنا. تم اقتطاع الإخراج.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 14m default-scheduler Successfully assigned cee-pod-name-l1/postgres-2
to pod-name-master-3
Normal Pulling 14m kubelet Pulling image "docker.10.192.x.x.nip.io/cee-2020.02.2.i38/
smi-libraries/postgresql/2020.02.2/postgres:1.3.0-946d87d"
Normal Pulled 13m kubelet Successfully pulled image "docker.10.192.x.x.nip.io/cee-2020.02.2.i38/
smi-libraries/postgresql/2020.02.2/postgres:1.3.0-946d87d" in 29.048094722s
Warning Unhealthy 12m kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:09:48]
pod is not ready
Warning Unhealthy 10m kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:11:18]
pod is not ready
Warning Unhealthy 10m kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:11:48]
pod is not ready
Warning Unhealthy 9m49s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:12:18]
pod is not ready
Warning Unhealthy 9m19s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:12:48]
pod is not ready
Warning Unhealthy 8m49s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:13:18]
pod is not ready
Warning Unhealthy 8m19s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:13:48]
pod is not ready
Warning Unhealthy 7m49s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:14:18]
pod is not ready
Warning Unhealthy 7m19s kubelet Readiness probe failed: [bin][h][ir] >>> [2021-10-11 18:14:48]
pod is not ready
Warning BackOff 6m44s kubelet Back-off restarting failed container
أو
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 13m default-scheduler 0/5 nodes are available: 2 node(s)
didn't match Pod's node affinity/selector, 3 node(s) didn't find available persistent
volumes to bind.
Normal Scheduled 13m default-scheduler Successfully assigned cee-pod-name-l1/postgres-0
to pod-name-master-1
Warning FailedScheduling 13m default-scheduler 0/5 nodes are available: 2 node(s)
didn't match Pod's node affinity/selector, 3 node(s) didn't find available
persistent volumes to bind.
Normal Pulling 13m kubelet Pulling image "docker.10.192.x.x.nip.io/cee-2020.02.2.i38/
smi-libraries/postgresql/2020.02.2/postgres:1.3.0-946d87d"
Normal Pulled 12m kubelet Successfully pulled image "docker.10.192.x.x.nip.io/
cee-2020.02.2.i38/smi-libraries/postgresql/2020.02.2/postgres:1.3.0-946d87d"
in 43.011763302s
Warning Unhealthy 7m20s kubelet Liveness probe failed: [bin][h][imm] >>>
[2021-10-11 18:09:16] My name is pg-postgres-0
الحل
ملاحظة: لا يتسبب هذا الإجراء في أي وقت توقف عن العمل في التطبيق.
أوقف ال CEE
دخلت in order to عطلت ال CEE، هذا أمر من ال CEE:
[pod-name-smf-data/podname] cee#
[pod-name-smf-data/podname] cee# config terminal
Entering configuration mode terminal
[pod-name-smf-data/podname] cee(config)# system mode shutdown
[pod-name-smf-data/podname] cee(config)# commit
Commit complete.
انتظر حتى يصبح النظام 100٪
حذف محتوى من المجلدات
من بروتوكول Master-VIP، يعمل بروتوكول طبقة الأمان (SSH) إلى كل جهاز من الأجهزة الافتراضية الرئيسية ويزيل محتويات هذه المجلدات: /data/cee-podname/data-postgres-[0-2].
Master 1
cloud-user@pod-name-smf-data-master-1:~$ sudo rm -rf /data/cee-podname/data-postgres-0
Master 2
cloud-user@pod-name-smf-data-master-2:~$ sudo rm -rf /data/cee-podname/data-postgres-1
Master 3
cloud-user@pod-name-smf-data-master-3:~$ sudo rm -rf /data/cee-podname/data-postgres-2
إستعادة CEE
دخلت in order to أحيات ال CEE، هذا أمر من ال CEE:
[pod-name-smf-data/podname] cee#
[pod-name-smf-data/podname] cee# config terminal
Entering configuration mode terminal
[pod-name-smf-data/podname] cee(config)# system mode running
[pod-name-smf-data/podname] cee(config)# commit
Commit complete.
انتظر حتى يصبح النظام 100٪.
عمليات التحقق من النشر
تحقق من Kubernetes من الأساسي.
cloud-user@pod-name-smf-data-master-1:~$ kubectl get pods -A -o wide | egrep 'postgres|pgpool'
All pods should display up and running without any restarts
التحقق من مسح التنبيهات من CEE
دخلت in order to دققت أن تخلصت تنبيهات من ال CEE، هذا أمر:
show alerts active summary | include "POD_|k8s-pod-"
أيضا، أنت يستطيع دخلت هذا أمر in order to ضمنت هناك واحد رئيسي إثنان DBs إحتياطي:
echo "0----------------------------------";kubectl
exec -it postgres-0 -n $(kubectl get pods -A | grep postgres | awk '{print $1}' | head -1)
-- /usr/local/bin/cluster/healthcheck/is_major_master.sh;echo "1--------------------------
--------";kubectl exec -it postgres-1 -n $(kubectl get pods -A | grep postgres | awk '{print $1}'
| head -1) -- /usr/local/bin/cluster/healthcheck/is_major_master.sh;echo "2---------------
-------------------"; kubectl exec -it postgres-2 -n $(kubectl get pods -A | grep postgres |
awk '{print $1}' | head -1) -- /usr/local/bin/cluster/healthcheck/is_major_master.sh;
العينة المتوقعة للمخرجات هي:
cloud-user@pod-name-smf-data-master-1:~$ echo "0----------------------------------";kubectl
exec -it postgres-0 -n $(kubectl get pods -A | grep postgres | awk '{print $1}' | head -1)
-- /usr/local/bin/cluster/healthcheck/is_major_master.sh;echo "1--------------------------
--------";kubectl exec -it postgres-1 -n $(kubectl get pods -A | grep postgres | awk '{print $1}'
| head -1) -- /usr/local/bin/cluster/healthcheck/is_major_master.sh;echo "2---------------
-------------------"; kubectl exec -it postgres-2 -n $(kubectl get pods -A | grep postgres |
awk '{print $1}' | head -1) -- /usr/local/bin/cluster/healthcheck/is_major_master.sh;
0----------------------------------
[bin][h][imm] >>> [2021-12-15 22:05:18] My name is pg-postgres-0
[bin][h][imm] >>> My state is good.
[bin][h][imm] >>> I'm not a master, nothing else to do!
1----------------------------------
[bin][h][imm] >>> [2021-12-15 22:05:19] My name is pg-postgres-1
[bin][h][imm] >>> My state is good.
[bin][h][imm] >>> I think I'm master. Will ask my neighbors if they agree.
[bin][h][imm] >>> Will ask nodes from PARTNER_NODES list
[bin][h][imm] >>> Checking node pg-postgres-0
[bin][h][imm] >>>>>>>>> Count of references to potential master pg-postgres-1 is 1 now
[bin][h][imm] >>> Checking node pg-postgres-1
[bin][h][imm] >>> Checking node pg-postgres-2
[bin][h][imm] >>>>>>>>> Count of references to potential master pg-postgres-1 is 2 now
[bin][h][imm] >>> Potential masters got references:
[bin][h][imm] >>>>>> Node: pg-postgres-1, references: 2
[bin][h][imm] >>> I have 2/2 incoming reference[s]!
[bin][h][imm] >>>> 2 - Does anyone have more?
[bin][h][imm] >>> Yahoo! I'm real master...so I think!
2----------------------------------
[bin][h][imm] >>> [2021-12-15 22:05:21] My name is pg-postgres-2
[bin][h][imm] >>> My state is good.
[bin][h][imm] >>> I'm not a master, nothing else to do!