Inleiding
Dit document beschrijft de isolatie en het herstel van de website van Cloud Native Implementation Platform (CNDP).
Voorwaarden
Vereisten
Cisco raadt kennis van de volgende onderwerpen aan:
- Linux
- Beleidsbeheerfunctie
- Kubernetes
Opmerking: Cisco raadt aan dat u voorrang moet hebben bij de toegang van hoofdgebruikers tot CPS CLI.
Gebruikte componenten
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Achtergrondinformatie
PCF wordt normaal gesproken met twee PCF-locaties ingezet om een geografisch redundant paar te vormen. Voor Geo replicatie (GR) moet u onafhankelijk twee aparte PCF-systemen met hoge beschikbaarheid (HA) maken en de Geo HA configureren voor communicatie met de externe locaties.
PCF heeft vele externe interfaces om in- en uitgaand verkeer naar en van PCF te verwerken, waaronder N7, N28, Rx en Lichtgewicht Directory Access Protocol (LDAP) om Rest, diameter en LDAP verkeer te verwerken.
Probleem
Wanneer u geplande activiteiten uitvoert (bijvoorbeeld upgraden en meer) of problemen ondervindt met één PCF-site die gevolgen heeft voor het verkeer, die enige tijd nodig heeft voor de oplossing, is het nodig om de betreffende PCF-site te isoleren van verkeer om eventuele gevolgen voor het bedrijf te voorkomen.
Zodra de activiteit is afgerond of het PCF probleem wordt opgelost, moet u de site herstellen en het verkeer introduceren.
Procedure om de PCF-site te isoleren en te herstellen
Isolatie van PCF-locaties
Stap 1. Stel het systeem in op de afsluitmodus.
Stap 1.1. Van Master-1 van de geïsoleerde site, inloggen op het PCF ops center.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
Stap 1.2. Configureer de PCF-registratiestatus UNDISCOVERABLE.
De PCF-registratiestatus moet worden bijgewerkt als UNDISCOVERABLE bij de functie van de netwerkopslagplaats (NRF) om te voorkomen dat N7-berichten die van SMF naar de respectieve PCF stromen, die op zijn beurt het N7-verkeer naar de geo redundant gekoppelde site omleidt.
Om de PCF-registratiestatus te configureren naar niet-detecteerbaar, gebruikt u deze configuratie vanuit het PCF Ops Center van de primaire site:
config
service-registration
profile
nf-status UNDISCOVERABLE
top
commit
end
Opmerking: wacht een minuut of twee en voer de volgende stappen uit.
· Config - voert de configuratiemodus in.
· Service Registration - voert de configuratiemodus voor de serviceregistratie in.
· Profiel - gaat de wijze van de profielconfiguratie in.
· nf-status { registered | UNDISCOVERABLE } - Specificeert de PCF-registratiestatus. Stel voor de isolatiefunctie van de site de status in op UNDISCOVERABLE. In dat geval worden alle handelingen met betrekking tot het PCF-geval opgeschort.
Stap 1.3. Het systeem configureren om shutdown
-modus.
[pcf01/pcfapp] pcf# config terminal
Entering configuration mode terminal
[pcf01/pcfapp] pcf(config)# system mode shutdown
[pcf01/pcfapp] pcf(config)# commit
Commit complete.
Wacht tot het systeem 100% is ingeschakeld.
Stap 1.4. Controleer of de ingestelde status van het systeem onjuist is.
[pcf01/pcfapp] pcf# show system status
system status deployed false
system status percent-ready 100.0
Stap 1.5. De site-id ophalen van het systeem dat is uitgeschakeld.
[pcf01/pcfapp] pcf# show running-config cdl system-id
cdl system-id {siteID}
Stap 2. CDL-configuratie van melding bij verlopen.
Stap 2.1. Verbind met master-1 van de actieve site (gekoppelde site) en verbind met het PCF ops center.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
Stap 2.2. Configureer de Active site CDL om verloopmeldingen voor de timer te versturen voor de geïsoleerde site.
[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.
Opmerking: siteID is de id die is opgehaald uit de isolatielocatie in Stap 1.5.
PCF-siteherstel
Stap 1. Schakel de configuratie van het verloopbericht voor de CDL-timer uit.
Stap 1.1. Verbind met master-1 van de actieve site en maak verbinding met het PCF ops center.
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'`
Stap 2.1. CDL moet zo worden geconfigureerd dat er geen meldingen van vervaltijden van de timer naar de geïsoleerde site worden verzonden.
[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.
Stap 2. PCF KAFKA OFFSET INSTELLEN.
Het is een vereiste actie om de Kafka Pods met de nieuwste OFFSET in te stellen om de integriteit en synchronisatie van CDL-sessies te behouden. Voer deze stappen uit vanaf de actieve PCF-site voordat u probeert om de andere PCF-site in de actieve staat te brengen.
Stap 2.1. Van Master-1 van de Active site, haal de Kafka pods terug.
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
Stap 2.2. Inloggen op Kafka-0 pod.
kubectl exec -it -n pcf-pcfapp kafka-0 bash
Stap 2.3. Voer een lijstopdracht uit om de consumentengroepen in de Kafka-groepen te vinden.
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
Stap 2.4. Bekijk de beschrijving van de consumentenorganisaties in Kafka. Zorg ervoor dat u de juiste naam voor de consumentengroep gebruikt uit de uitvoer van Stap 2.3.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group c1-c2-consumer-group
Verwachte output:
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
Stap 2.5. Controleer de nieuwste nieuwe offset-waarden.
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
Verwachte output:
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
Stap 2.6. Stel de offset opnieuw in op de meest recente nieuwe waarden.
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
Verwachte output:
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
Stap 2.7. Controleer de huidige vertragingswaarden.
kafka@kafka-0:/opt/kafka/bin$ ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group c1-c2-consumer-group
Verwachte output:
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
Stap 3. Stel het systeem in op Running
wijze
Stap 3.1. Open vier terminals die zijn aangesloten op de geïsoleerde locatie. Master-1 van de site is down.
Stap 3.2. Op de eerste terminal. verzeker het script /home/cloud-user/rs_0.sh
bevindt zich op het hoofdknooppunt.
ls -lrt /home/cloud-user/rs_0.sh
Stap 3.3. Op de tweede terminal voer dit commando dat verantwoordelijk is voor het beëindigen van de rest-ep pods. Zorg ervoor dat u de juiste naamruimte gebruikt.
watch kubectl scale --replicas=0 deployment/pcf-rest-ep -n pcf-pcf
Stap 3.4. Draai dit script dat verantwoordelijk is om Rx diameter pods op de derde terminal te beëindigen.
watch ./rs_0.sh
Stap 3.5 Stel het systeem in op running
op de vierde terminal.
[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.
Wacht tot het systeem 100% is ingeschakeld.
Stap 3.6. Zorg er nu voor dat er geen rest-ep of Rx diameter wordt uitgevoerd.
cloud-user@pcf01-master-1:~$ kubectl get pods -A | egrep "diameter|rest-ep"
Stap 3.7. Maak verbinding met Master-1 van beide sites en haal het db-endpoint IP-adres van de externe site op (replicatie IP-adres voor de gekoppelde site).
ssh -p 2024 admin@`kubectl get svc -A | grep " ops-center-pcf" | awk '{print $4}'` 'show running-config | inc "db-endpoint host"'
Verwachte output:
db-endpoint host xx.xx.xx.xx
Stap 3.8 Controleer het aantal verbindingen tussen de CDL-EP en de gekoppelde IP-site replicatie (er moeten 5 verbindingen zijn).
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
Verwachte output:
cdl-ep-session-c1-d0-56995765b5-l2kz6
5
cdl-ep-session-c1-d0-56995765b5-mlxdx
5
Stap 3.9. Controleer of er geen recente foutmeldingen zijn met de foutmelding "Verbinding met externe systeem-ID is verloren" bij de 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
De verwachte output in schone toestand:
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
Verwachte output als er een probleem is:
2022/06/24 22:21:08.242 [ERROR] [RemoteEndointConnection.go:619] [datastore.ep.session] Connection to remote systemID 2 has been lost
Stap 3.10. Zorg ervoor dat alle andere pods goed lopen zonder problemen.
cloud-user@pcf01-master-1:~$ kubectl get pods -A
Stap 3.11. Controleer de CDL grafana grafiek en zorg ervoor dat de statistieken succesvol aanmaken/bijwerken stats.
Stap 3.12. Zorg er na een paar minuten voor dat de CDL's synchroon lopen.
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
Verwachte output:
2022/03/05 02:31:56 Geo sync is successful
Stap 3.13. Controleer van de peer site of de spiegelmaker in orde is en running
.
pcf-pcf01 mirror-maker-0 1/1 Running 1 24d
Stap 3.14. Onderbreek het script op de andere 3 terminals van de site die net is opgevoed.
Stap 3.15. Draai dit script om PCF Rx diameter pods te recreëren.
./rs_1.sh
Stap 3.16. Voer deze opdracht uit om de PCF rest-ep Pods opnieuw te maken.
Opmerking: Controleer site replicas details voor een aantal rest-ep replica's en u moet de juiste naamruimte gebruiken.
kubectl scale --replicas=8 deployment/pcf-rest-ep -n pcf-pcf
Stap 3.17. Zorg er na voltooiing voor dat de rest-ep of Rx diameter wordt uitgevoerd.
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
Stap 3.18. Voor de vierde terminal, vorm de geregistreerde Status van de Registratie PCF.
Zodra de activiteit is voltooid en het probleem is opgelost, moet de PCF-registratiestatus worden bijgewerkt zoals geregistreerd bij de functie Network Repository (NRF), zodat N7-berichten van SMF naar de desbetreffende PCF kunnen stromen.
Om de PCF registratiestatus te configureren voor registratie, gebruikt u deze configuratie vanuit het PCF Ops Center van de primaire site:
config
service-registration
profile
nf-status REGISTERED
top
commit
end