المقدمة
يصف هذا المستند عزل موقع وظيفة التحكم في سياسة النظام الأساسي للنشر الأصلي للسحابة (PCF) واستعادته.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- لينكس
- وظيفة التحكم في السياسة
- كوبيرنيتس
ملاحظة: توصي Cisco بأنه يجب أن يكون لديك حق وصول مستخدم جذر امتياز إلى CPS CLI.
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
معلومات أساسية
وعادة ما يتم نشر PCF مع موقعين من مواقع PCF لتشكيل زوج متكرر جغرافيا. للنسخ المتماثل جغرافيا (GR)، يجب عليك إنشاء نظامين منفصلين للترددات العالية (HA) PCF بشكل مستقل وتكوين GEO HA للاتصالات مع المواقع البعيدة.
يحتوي PCF على العديد من الواجهات الخارجية لمعالجة حركة مرور الدخول والخروج من وإلى PCF، والتي تتضمن N7، N28، Rx، وبروتوكول الوصول للدليل خفيف الوزن (LDAP) لمعالجة الراحة، القطر، وحركة مرور LDAP.
المشكلة
عند تنفيذ أي أنشطة مخططة (على سبيل المثال، الترقية والمزيد) أو مواجهة أي مشاكل مع موقع PCF واحد يتسبب في تأثير حركة المرور، وهو ما يتطلب بعض الوقت للحل، فإنه مطلوب عزل موقع PCF المعني من حركة المرور لتجنب أي تأثير على الأعمال.
بمجرد أن ينتهي النشاط أو يتم حل مشكلة PCF، يجب إستعادة الموقع وتقديم حركة المرور.
إجراء عزل موقع PCF واستعادته
عزل موقع PCF
الخطوة 1. قم بتعيين النظام إلى وضع إيقاف التشغيل.
الخطوة 1.1. من الماستر-1 من الموقع المعزول، login إلى مركز عمليات PCF.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
الخطوة 1.2. قم بتكوين حالة تسجيل PCF غير قابلة للاكتشاف.
يلزم تحديث حالة تسجيل PCF على أنها غير قابلة للإكتشاف في وظيفة مستودع الشبكة (NRF) لمنع رسائل N7 التي تتدفق من SMF إلى PCF ذات الصلة، والتي تقوم بدورها بإعادة توجيه حركة مرور N7 نحو موقع GEO المتكرر.
لتكوين حالة تسجيل PCF إلى غير قابل للاستكشاف، أستخدم هذا التكوين من مركز عمليات PCF للموقع الرئيسي:
config
service-registration
profile
nf-status UNDISCOVERABLE
top
commit
end
ملاحظة: انتظر دقيقة أو إثنتين وقم بالخطوات التالية.
· config - يدخل وضع التكوين.
· تسجيل الخدمة - يدخل وضع تكوين تسجيل الخدمة.
· ملف التعريف - يدخل وضع تكوين ملف التعريف.
· تم تسجيل { حالة nf | Undiscovery } - يحدد حالة تسجيل PCF. بالنسبة لميزة عزل الموقع، قم بتعيين الحالة إلى غير قابل الاكتشاف. وفي هذه الحالة، يتم تعليق جميع العمليات التي تشمل مثيل PCF.
الخطوة 1.3. قم بتكوين النظام إلى shutdown
نمط.
[pcf01/pcfapp] pcf# config terminal
Entering configuration mode terminal
[pcf01/pcfapp] pcf(config)# system mode shutdown
[pcf01/pcfapp] pcf(config)# commit
Commit complete.
انتظر حتى يعمل النظام بنسبة 100٪.
الخطوة 1.4. تحقق من أن حالة نشر النظام خاطئة.
[pcf01/pcfapp] pcf# show system status
system status deployed false
system status percent-ready 100.0
الخطوة 1.5. إسترداد معرف موقع النظام الذي يتم إيقاف تشغيله.
[pcf01/pcfapp] pcf# show running-config cdl system-id
cdl system-id {siteID}
الخطوة 2. تكوين إعلام انتهاء صلاحية مؤقت CDL.
الخطوة 2.1. قم بالاتصال بالموقع الرئيسي 1 للموقع النشط (الموقع المدمج) واتصل بمركز عمليات PCF.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
الخطوة 2.2. قم بتكوين CDL للموقع النشط لإرسال إعلامات انتهاء صلاحية المؤقت للموقع المعزول.
[pcf01/pcfapp] pcf# config terminal
Entering configuration mode terminal
[pcf01/pcfapp] pcf(config)# cdl datastore session
[pcf01/pcfapp] pcf(config-datastore-session)# slot notification remote-system-id [ siteID ]
[pcf01/pcfapp] pcf(config-datastore-session)# commit
Commit complete.
ملاحظة: معرف الموقع هو المعرف الذي تم إسترداده من موقع العزل في الخطوة 1.5.
إستعادة موقع PCF
الخطوة 1. تعطيل تكوين إعلام انتهاء صلاحية مؤقت CDL.
الخطوة 1.1. قم بالاتصال بالموقع الرئيسي 1 الخاص بالموقع النشط واتصل بمركز عمليات PCF.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
الخطوة 2.1. يجب تكوين CDL بحيث لا يقوم بإرسال إعلامات انتهاء صلاحية المؤقت إلى الموقع المعزول.
[pcf01/pcfapp] pcf# config terminal
Entering configuration mode terminal
[pcf01/pcfapp] pcf(config)# no cdl datastore session slot notification remote-system-id
[pcf01/pcfapp] pcf(config-datastore-session)# commit
Commit complete.
الخطوة 2. تعيين إزاحة PCF Kafka.
إنه إجراء مطلوب لتعيين Kafka Pods بأحدث تعويض للحفاظ على تكامل جلسة CDL ومزامنتها. قم بتشغيل هذه الخطوات من موقع PCF النشط قبل أن تحاول أخذ موقع PCF الآخر إلى الحالة النشطة.
الخطوة 2.1. من الماجستير 1 من موقع العمل النشط، قم باسترداد نقاط تفتيش كافكا.
cloud-user@pcf01-master1:~$ kubectl get pods -A | grep -i kafka
pcf-pcfapp kafka-0 2/2 Running 0 22m
pcf-pcfapp kafka-1 2/2 Running 0 20m
pcf-pcfapp kafka-2 2/2 Running 0 20m
الخطوة 2.2. الدخول إلى محفظة كافكا 0.
kubectl exec -it -n pcf-pcfapp kafka-0 bash
الخطوة 2.3. قم بتشغيل أمر قائمة للعثور على مجموعات المستهلكين في مجموعات Kafka.
kafka@kafka-0:/opt/kafka$ cd bin
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --list --bootstrap-server localhost:9092
test-group
c1-c2-consumer-group
الخطوة 2.4. احصل على وصف لجماعات المستهلكين في كافكا. تأكد من إستخدام اسم مجموعة المستهلك الصحيح من الإخراج من الخطوة 2.3.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group c1-c2-consumer-group
الناتج المتوقع:
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
c1-c2-consumer-group kv.kafka.shard.1.1.1 0 1774202721 1774213158 10437 c1-c2-consumer-group-0-65c85cd5-f43d-4767-971a-f8b53164538a /xx.xx.xx.xx c1-c2-consumer-group-0
c1-c2-consumer-group kv.kafka.shard.1.1.9 0 1638393629 1638393987 358 c1-c2-consumer-group-3-2822cebd-5c98-4dbd-8d49-31d4b80bd415 /xx.xx.xx.xx c1-c2-consumer-group-3
c1-c2-consumer-group kv.kafka.shard.1.1.6 0 1718659693 1718660429 736
الخطوة 2.5. تحقق من أحدث قيم الإزاحة الجديدة.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --group c1-c2-consumer-group --all-topics --to-latest --dry-run
الناتج المتوقع:
GROUP TOPIC PARTITION New-OFFSET
c1-c2-consumer-group kv.kafka.shard.1.1.1 0 1774213158
c1-c2-consumer-group kv.kafka.shard.1.1.9 0 1638393987
c1-c2-consumer-group kv.kafka.shard.1.1.6 0 1718660429
c1-c2-consumer-group kv.kafka.shard.1.1.2 0 1913886111
الخطوة 2.6. إعادة تعيين الإزاحة إلى أحدث القيم الجديدة.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --group c1-c2-consumer-group --all-topics --to-latest --execute
الناتج المتوقع:
GROUP TOPIC PARTITION New-OFFSET
c1-c2-consumer-group kv.kafka.shard.1.1.1 0 1774213158
c1-c2-consumer-group kv.kafka.shard.1.1.9 0 1638393987
c1-c2-consumer-group kv.kafka.shard.1.1.6 0 1718660429
الخطوة 2.7. تحقق من قيم التأخير الحالية.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group c1-c2-consumer-group
الناتج المتوقع:
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
c1-c2-consumer-group kv.kafka.shard.1.1.1 0 1774202721 1774213158 10437 c1-c2-consumer-group-0-65c85cd5-f43d-4767-971a-f8b53164538a /xx.xx.xx.xx c1-c2-consumer-group-0
c1-c2-consumer-group kv.kafka.shard.1.1.9 0 1638393629 1638393987 358 c1-c2-consumer-group-3-2822cebd-5c98-4dbd-8d49-31d4b80bd415 /xx.xx.xx.xx c1-c2-consumer-group-3
الخطوة 3. تعيين النظام إلى Running
نمط
الخطوة 3.1. افتح أربع محطات طرفية متصلة بالموقع المعزول. تم إيقاف Master-1 للموقع.
الخطوة 3.2. في المحطة الأولى. تأكد من البرنامج النصي /home/cloud-user/rs_0.sh
على العقدة الرئيسية.
ls -lrt /home/cloud-user/rs_0.sh
الخطوة 3.3. في المحطة الطرفية الثانية قم بتشغيل هذا الأمر المسؤول عن إنهاء مجموعات توصيل الراحة. الرجاء التأكد من إستخدام مساحة الاسم الصحيحة.
watch kubectl scale --replicas=0 deployment/pcf-rest-ep -n pcf-pcf
الخطوة 3.4. قم بتشغيل هذا البرنامج النصي المسؤول عن إنهاء قوائم قطر Rx على المحطة الطرفية الثالثة.
watch ./rs_0.sh
الخطوة 3.5 تعيين النظام على running
الوضع من مركز عمليات PCF على المحطة الطرفية الرابعة.
[pcf01/pcf01] pcf#
[pcf01/pcf01] pcf# config
Entering configuration mode terminal
[pcf01/pcf01] pcf(config)# system mode running
[pcf01/pcf01] pcf(config)# commit
Commit complete.
انتظر حتى يعمل النظام بنسبة 100٪.
الخطوة 3.6. تأكد الآن أنه لا يوجد أي من القطر REST-EP أو Rx Diameter قيد التشغيل.
cloud-user@pcf01-master-1:~$ kubectl get pods -A | egrep "diameter|rest-ep"
الخطوة 3.7. قم بالاتصال بالموقع Master-1 واسترداد عنوان IP لنقطة نهاية db للموقع البعيد (عنوان IP للنسخ المتماثل للموقع المتزامن).
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'` 'show running-config | inc "db-endpoint host"'
الناتج المتوقع:
db-endpoint host xx.xx.xx.xx
الخطوة 3.8 تحقق من عدد الاتصالات بين CDL-EP و IP الخاص بنسخ الموقع المتماثل (يجب أن يكون هناك 5 إتصالات).
for CDLEP in `kubectl get pods -A | grep cdl-ep | awk '{print $2}'`;do echo $CDLEP; kubectl exec -it $CDLEP -n `kubectl get namespaces | grep "pcf-" | awk '{print $1}'` -- netstat -anp | grep 10.169.149.34| wc -l ; done
الناتج المتوقع:
cdl-ep-session-c1-d0-56995765b5-l2kz6
5
cdl-ep-session-c1-d0-56995765b5-mlxdx
5
الخطوة 3.9. تحقق من عدم وجود أي رسائل خطأ حديثة "تم فقد الاتصال ب Remote SystemID" في CDL-EP.
for CDLEP in `kubectl get pods -A | grep cdl-ep | awk '{print $2}'`;do echo $CDLEP; kubectl logs $CDLEP -n `kubectl get namespaces | grep "pcf-" | awk '{print $1}'` --since=15m| grep "has been lost" ; done
الناتج المتوقع في حالة التنظيف:
cdl-ep-session-c1-d0-56995765b5-l2kz6
cdl-ep-session-c1-d0-56995765b5-mlxdx
cdl-ep-session-c1-d0-56995765b5-nptr9
cdl-ep-session-c1-d0-56995765b5-rm7hh
الناتج المتوقع في حالة وجود مشكلة:
2022/06/24 22:21:08.242 [ERROR] [RemoteEndointConnection.go:619] [datastore.ep.session] Connection to remote systemID 2 has been lost
الخطوة 3.10. تأكد من أن كافة أجهزة الكمبيوتر المحمولة الأخرى تعمل بشكل جيد دون أية مشكلات.
cloud-user@pcf01-master-1:~$ kubectl get pods -A
الخطوة 3.11. مراقبة الرسم البياني CDLs Grafana والتأكد من أن الإحصائيات تظهر حالات إنشاء/تحديث ناجحة.
الخطوة 3.12. بعد دقيقتين تأكد من أن CDLs تتزامن.
cloud-user@pcf01-master-1:~$ for i in `kubectl get pods -A | awk '{print $2}' | grep cdl-ep` ; do echo $i ; kubectl exec -it $i -n `kubectl get namespaces | grep pcf- | awk '{print $1}'` -- ./verify_geo_sync ; done
الناتج المتوقع:
2022/03/05 02:31:56 Geo sync is successful
الخطوة 3.13. من موقع النظير، تحقق من أن صانع المرآة جاهز running
.
pcf-pcf01 mirror-maker-0 1/1 Running 1 24d
الخطوة 3.14. قاطعوا الخط في المحطات الثلاث الأخرى للموقع الذي تم طرحه للتو.
الخطوة 3.15. قم بتشغيل هذا البرنامج النصي لإعادة إنشاء مجموعات قطر PCF Rx.
./rs_1.sh
الخطوة 3.16. قم بتشغيل هذا الأمر لإعادة إنشاء PCF Rest-ep Pods.
ملاحظة: تحقق من تفاصيل النسخ المتماثلة للموقع للحصول على عدد من النسخ المتماثلة ل REST-ep ويجب عليك إستخدام مساحة الاسم الصحيحة.
kubectl scale --replicas=8 deployment/pcf-rest-ep -n pcf-pcf
الخطوة 3.17. بعد الانتهاء، تأكد من تشغيل القطر REST-EP أو Rx.
cloud-user@pcf01-master-1:~$ kubectl get pods -A | egrep "diameter|rest-ep|ldap"
pcf-pcf01 diameter-ep-rx-rx-584cd76c75-kwmhh1/1 Running 0 2m
pcf-pcf01 diameter-ep-rx2-rx-64cd75b7f6-drjrz 1/1 Running 0 2m
pcf-pcf01 diameter-ep-rx3-rx-544d4f9bf7-gfb9c 1/1 Running 0 2m
pcf-pcf01 ldap-pcf-pcf01-cps-ldap-ep-5884c6d76d-5tchw 1/1 Running 0 2m
pcf-pcf01 ldap-pcf-pcf01-cps-ldap-ep-5884c6d76d-6wtnm 1/1 Running 0 2m
pcf-pcf01 pcf-rest-ep-86b546f9db-5wzp6 1/1 Running 0 2m
pcf-pcf01 pcf-rest-ep-86b546f9db-6prmd 1/1 Running 0 2m
pcf-pcf01 pcf-rest-ep-86b546f9db-6pstm 1/1 Running 0 2m
pcf-pcf01 pcf-rest-ep-86b546f9db-dsz6c 1/1 Running 0 2m
pcf-pcf01 pcf-rest-ep-86b546f9db-dzlkw 1/1 Running 0 2m
الخطوة 3.18. في المحطة الطرفية الرابعة، قم بتكوين حالة تسجيل PCF المسجلة.
بمجرد اكتمال النشاط وحل المشكلة، من المطلوب تحديث حالة تسجيل PCF كما هو مسجل في وظيفة مستودع الشبكة (NRF) للسماح بتدفق رسائل N7 من SMF إلى PCF الخاصة.
لتكوين حالة تسجيل PCF إلى مسجل، أستخدم هذا التكوين من مركز عمليات PCF للموقع الرئيسي:
config
service-registration
profile
nf-status REGISTERED
top
commit
end