kubernetes:stackgres:monitoring
Összehasonlítás
A kiválasztott és az jelenlegi változat között az alábbi különbségek fordulnak elő:
| Következő változat | Előző változat | ||
| kubernetes:stackgres:monitoring [2026/06/10 06:34] – létrehozva riba.zoltan | kubernetes:stackgres:monitoring [2026/06/10 14:38] (aktuális) – riba.zoltan | ||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| - | ====== Kubernetes StackGres ====== | + | ====== Kubernetes StackGres/ |
| + | |||
| + | ===== Állapot ellenőrzés ===== | ||
| + | |||
| + | ==== Kubernetes állapot ellenőrzés ==== | ||
| + | |||
| + | A következő utasítások futtatása előtt be kell állítani a névteret. | ||
| + | |||
| + | < | ||
| + | export NAMESPACE=< | ||
| + | </ | ||
| + | |||
| + | == POD-ok ellenőrzése == | ||
| + | |||
| + | < | ||
| + | $ kubectl get pods -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | </ | ||
| + | |||
| + | Amennyiben hiba van (bármelyik POD állapota nem '' | ||
| + | |||
| + | < | ||
| + | $ kubectl describe pod pg-cluster-0 -n $NAMESPACE | ||
| + | Name: | ||
| + | Namespace: | ||
| + | Priority: | ||
| + | Service Account: | ||
| + | Node: | ||
| + | Start Time: Sun, 03 May 2026 17:31:59 +0200 | ||
| + | Labels: | ||
| + | apps.kubernetes.io/ | ||
| + | controller-revision-hash=pg-cluster-7f856d76dc | ||
| + | nofailover=false | ||
| + | noloadbalance=false | ||
| + | role=primary | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | statefulset.kubernetes.io/ | ||
| + | Annotations: | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | stackgres.io/ | ||
| + | status: | ||
| + | {" | ||
| + | Status: | ||
| + | IP: | ||
| + | IPs: | ||
| + | IP: | ||
| + | Controlled By: StatefulSet/ | ||
| + | ... | ||
| + | Node-Selectors: | ||
| + | Tolerations: | ||
| + | | ||
| + | Events: | ||
| + | </ | ||
| + | |||
| + | POD-ban található konténerek nevének meghatározása. | ||
| + | |||
| + | < | ||
| + | $ kubectl get pod pg-cluster-0 -n $NAMESPACE -o jsonpath=' | ||
| + | patroni pgbouncer prometheus-postgres-exporter postgres-util cluster-controller | ||
| + | </ | ||
| + | |||
| + | A PostgreSQL példány a '' | ||
| + | |||
| + | < | ||
| + | $ kubectl logs pg-cluster-0 -c patroni -n $NAMESPACE | ||
| + | ... | ||
| + | 2026-06-10 08:26:26 UTC [596361]: db=postgres, | ||
| + | 2026-06-10 08:26:26 UTC [596361]: db=postgres, | ||
| + | 2026-06-10 08: | ||
| + | </ | ||
| + | |||
| + | |||
| + | == StackGres objektumok ellenőrzése == | ||
| + | |||
| + | < | ||
| + | $ kubectl get sgcluster -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster | ||
| + | |||
| + | $ kubectl describe sgcluster pg-cluster -n $NAMESPACE | ||
| + | $ kubectl describe sgcluster pg-cluster -n $NAMESPACE | ||
| + | Name: | ||
| + | Namespace: | ||
| + | Labels: | ||
| + | Annotations: | ||
| + | API Version: | ||
| + | Kind: | ||
| + | Metadata: | ||
| + | Creation Timestamp: | ||
| + | Generation: | ||
| + | Resource Version: | ||
| + | UID: | ||
| + | Spec: | ||
| + | Configurations: | ||
| + | Observability: | ||
| + | Disable Metrics: | ||
| + | Prometheus Autobind: | ||
| + | Sg Pooling Config: | ||
| + | Sg Postgres Config: | ||
| + | Instances: | ||
| + | Managed Sql: | ||
| + | Continue On SGScript Error: | ||
| + | Scripts: | ||
| + | Id: 0 | ||
| + | Sg Script: | ||
| + | Pods: | ||
| + | Disable Connection Pooling: | ||
| + | Disable Envoy: | ||
| + | Disable Metrics Exporter: | ||
| + | Disable Postgres Util: | ||
| + | Management Policy: | ||
| + | Persistent Volume: | ||
| + | Size: 8Gi | ||
| + | Storage Class: | ||
| + | Scheduling: | ||
| + | Node Selector: | ||
| + | node-role.kubernetes.io/ | ||
| + | Pod Anti Affinity: | ||
| + | Required During Scheduling Ignored During Execution: | ||
| + | Label Selector: | ||
| + | Match Labels: | ||
| + | stackgres.io/ | ||
| + | Topology Key: kubernetes.io/ | ||
| + | Update Strategy: | ||
| + | Method: | ||
| + | Type: OnlyDbOps | ||
| + | Postgres: | ||
| + | Flavor: | ||
| + | Ssl: | ||
| + | Enabled: | ||
| + | Version: | ||
| + | Postgres Services: | ||
| + | Primary: | ||
| + | Enabled: | ||
| + | Type: | ||
| + | Replicas: | ||
| + | Enabled: | ||
| + | Type: | ||
| + | Profile: | ||
| + | Replication: | ||
| + | Mode: | ||
| + | Role: | ||
| + | Sg Instance Profile: | ||
| + | Status: | ||
| + | Arch: x86_64 | ||
| + | Binding: | ||
| + | Name: | ||
| + | Build Version: | ||
| + | Conditions: | ||
| + | Last Transition Time: 2026-05-03T15: | ||
| + | Reason: | ||
| + | Status: | ||
| + | Type: InitialScriptsApplied | ||
| + | Last Transition Time: 2026-05-03T15: | ||
| + | Reason: | ||
| + | Status: | ||
| + | Type: Bootstrapped | ||
| + | Last Transition Time: 2026-05-03T15: | ||
| + | Reason: | ||
| + | Status: | ||
| + | Type: PendingUpgrade | ||
| + | Last Transition Time: 2026-05-03T15: | ||
| + | Reason: | ||
| + | Status: | ||
| + | Type: PendingRestart | ||
| + | Last Transition Time: 2026-05-03T15: | ||
| + | Reason: | ||
| + | Status: | ||
| + | Type: Failed | ||
| + | Extensions: | ||
| + | Instances: | ||
| + | Label Selector: | ||
| + | Managed Sql: | ||
| + | Scripts: | ||
| + | Completed At: 2026-05-03T15: | ||
| + | Id: 0 | ||
| + | Scripts: | ||
| + | Id: 0 | ||
| + | Version: | ||
| + | Id: 4 | ||
| + | Version: | ||
| + | Started At: 2026-05-03T15: | ||
| + | Updated At: 2026-05-03T15: | ||
| + | Os: linux | ||
| + | Pod Statuses: | ||
| + | Installed Postgres Extensions: | ||
| + | Name: | ||
| + | Node Name: kube01 | ||
| + | Pending Restart: | ||
| + | Primary: | ||
| + | Replication Group: | ||
| + | Installed Postgres Extensions: | ||
| + | Name: | ||
| + | Node Name: kube03 | ||
| + | Pending Restart: | ||
| + | Primary: | ||
| + | Replication Group: | ||
| + | Installed Postgres Extensions: | ||
| + | Name: | ||
| + | Node Name: kube02 | ||
| + | Pending Restart: | ||
| + | Primary: | ||
| + | Replication Group: | ||
| + | Postgres Version: | ||
| + | Events: | ||
| + | |||
| + | $ kubectl get events -n $NAMESPACE --sort-by=.lastTimestamp | ||
| + | LAST SEEN | ||
| + | 1s Warning | ||
| + | </ | ||
| + | |||
| + | == StatefulSet ellenőrzése == | ||
| + | |||
| + | < | ||
| + | $ kubectl get statefulset -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster | ||
| + | </ | ||
| + | |||
| + | == PVC-k ellenőrzése == | ||
| + | |||
| + | < | ||
| + | $ kubectl get pvc -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-data-pg-cluster-0 | ||
| + | pg-cluster-data-pg-cluster-1 | ||
| + | pg-cluster-data-pg-cluster-2 | ||
| + | </ | ||
| + | |||
| + | ==== Patroni állapot ellenőrzés ==== | ||
| + | |||
| + | == Normál állapot == | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) ------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.5 | Leader | ||
| + | | pg-cluster-1 | 10.244.2.5 | Replica | streaming | 2 | | ||
| + | | pg-cluster-2 | 10.244.1.8 | Replica | streaming | 2 | | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | Egy replika node kiesése | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) ------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.5 | Leader | ||
| + | | pg-cluster-1 | 10.244.2.5 | Replica | streaming | 2 | | ||
| + | | pg-cluster-2 | | Replica | | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | == Leader node kiesése == | ||
| + | |||
| + | < | ||
| + | # kubectl get nodes | ||
| + | NAME | ||
| + | kube01 | ||
| + | kube02 | ||
| + | kube03 | ||
| + | |||
| + | # kubectl get pods -n $NAMESPACE | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | # kubectl exec -n $NAMESPACE pg-cluster-1 -c patroni -- patronictl list | ||
| + | 2026-06-10 09: | ||
| + | + Cluster: pg-cluster (7635689612010042939) ------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.5 | Replica | running | ||
| + | | pg-cluster-1 | 10.244.2.5 | Leader | ||
| + | | pg-cluster-2 | 10.244.1.9 | Replica | streaming | 3 | | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | |||
| + | # kubectl exec -n $NAMESPACE pg-cluster-2 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) ------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.5 | Replica | running | ||
| + | | pg-cluster-1 | 10.244.2.5 | Leader | ||
| + | | pg-cluster-2 | 10.244.1.9 | Replica | streaming | 3 | | ||
| + | +--------------+------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | Patroni automatikus failover után (10-60 másodperc) elérhető a szolgáltatás. | ||
| + | |||
| + | < | ||
| + | $ kubectl run psql-test -n $NAMESPACE --rm -it --image=postgres: | ||
| + | All commands and output from this session will be recorded in container logs, including credentials and sensitive information passed through the command prompt. | ||
| + | If you don't see a command prompt, try pressing enter. | ||
| + | |||
| + | root@psql-test:/# | ||
| + | pg-cluster-primary: | ||
| + | |||
| + | root@psql-test:/# | ||
| + | exit | ||
| + | Session ended, resume using ' | ||
| + | pod " | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-1 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 4 | | ||
| + | | pg-cluster-2 | 10.244.1.9 | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | ==== PostgreSQL állapot ellenőrzés ==== | ||
| + | |||
| + | === Upstream állapot ellenőrzés === | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE pg-cluster-1 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 4 | | ||
| + | | pg-cluster-2 | 10.244.1.9 | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | A leaderen kell ellenőrizni a replikáció állapotát | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-2 -c patroni -- psql -U postgres -c " | ||
| + | Pager usage is off. | ||
| + | | ||
| + | ------------------+-------------+-----------+------------ | ||
| + | | ||
| + | | ||
| + | (2 rows) | ||
| + | </ | ||
| + | |||
| + | == Részletesebb megjelenítés == | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-2 -c patroni -- psql -U postgres -x -c " | ||
| + | Pager usage is off. | ||
| + | -[ RECORD 1 ]----+------------------------------ | ||
| + | pid | 9267 | ||
| + | usesysid | ||
| + | usename | ||
| + | application_name | pg-cluster-0 | ||
| + | client_addr | ||
| + | client_hostname | ||
| + | client_port | ||
| + | backend_start | ||
| + | backend_xmin | ||
| + | state | streaming | ||
| + | sent_lsn | ||
| + | write_lsn | ||
| + | flush_lsn | ||
| + | replay_lsn | ||
| + | write_lag | ||
| + | flush_lag | ||
| + | replay_lag | ||
| + | sync_priority | ||
| + | sync_state | ||
| + | reply_time | ||
| + | -[ RECORD 2 ]----+------------------------------ | ||
| + | pid | 9962 | ||
| + | usesysid | ||
| + | usename | ||
| + | application_name | pg-cluster-1 | ||
| + | client_addr | ||
| + | client_hostname | ||
| + | client_port | ||
| + | backend_start | ||
| + | backend_xmin | ||
| + | state | streaming | ||
| + | sent_lsn | ||
| + | write_lsn | ||
| + | flush_lsn | ||
| + | replay_lsn | ||
| + | write_lag | ||
| + | flush_lag | ||
| + | replay_lag | ||
| + | sync_priority | ||
| + | sync_state | ||
| + | reply_time | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === Replika állapot ellenőrzés === | ||
| + | |||
| + | Az ellenőrzés elvégezhető valamelyik replikán. A '' | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- psql -U postgres -x -c " | ||
| + | Pager usage is off. | ||
| + | -[ RECORD 1 ]-----+-- | ||
| + | pg_is_in_recovery | t | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-1 -c patroni -- psql -U postgres -x -c " | ||
| + | Pager usage is off. | ||
| + | -[ RECORD 1 ]-----+-- | ||
| + | pg_is_in_recovery | t | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-2 -c patroni -- psql -U postgres -x -c " | ||
| + | Pager usage is off. | ||
| + | -[ RECORD 1 ]-----+-- | ||
| + | pg_is_in_recovery | f | ||
| + | </ | ||
| ===== Monitorozás ===== | ===== Monitorozás ===== | ||
| - | A környezet monitorozásához három réteg monitorozására van szükség | ||
| + | ==== Monitor szkriptek ==== | ||
| + | === PostgreSQL replikáció állapot === | ||
| + | |||
| + | A PostgreSQL állapotának ellenőrzését végző szkriptek első sorában meg kell adni a használni kívánt névteret. | ||
| + | |||
| + | == POD-ok ellenőrzése == | ||
| + | |||
| + | <file bash 01-check-pods.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | |||
| + | NOT_READY=$(kubectl get pods -n " | ||
| + | { | ||
| + | split($2, ready, "/" | ||
| + | if (ready[1] != ready[2] || $3 != " | ||
| + | |||
| + | } | ||
| + | }') | ||
| + | |||
| + | if [ -n " | ||
| + | echo " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | echo "OK - Minden pod és konténer megfelelő állapotban van" | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | OK - Minden pod és konténer megfelelő állapotban van | ||
| + | </ | ||
| + | |||
| + | == StackGres/ | ||
| + | |||
| + | <file bash 02-check-stackgres-postgresql-status.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | CLUSTER_PREFIX=" | ||
| + | EXPECTED_PODS=3 | ||
| + | |||
| + | PODS=$(kubectl get pods -n " | ||
| + | |||
| + | if [ -z " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | FIRST_POD=$(echo " | ||
| + | |||
| + | PATRONI_STATUS=" | ||
| + | |||
| + | if [ -z " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | READY_COUNT=0 | ||
| + | POD_COUNT=0 | ||
| + | LEADER_COUNT=0 | ||
| + | REPLICA_COUNT=0 | ||
| + | DETAILS="" | ||
| + | |||
| + | for POD in $PODS ; do | ||
| + | POD_COUNT=$((POD_COUNT + 1)) | ||
| + | |||
| + | NODE=$(kubectl get pod " | ||
| + | PHASE=$(kubectl get pod " | ||
| + | READY=" | ||
| + | RESTARTS=" | ||
| + | ROLE=" | ||
| + | |||
| + | [ -z " | ||
| + | |||
| + | if [ " | ||
| + | READY_COUNT=$((READY_COUNT + 1)) | ||
| + | fi | ||
| + | |||
| + | case " | ||
| + | leader) | ||
| + | LEADER_COUNT=$((LEADER_COUNT + 1)) | ||
| + | ;; | ||
| + | replica) | ||
| + | REPLICA_COUNT=$((REPLICA_COUNT + 1)) | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | DETAILS=" | ||
| + | done | ||
| + | |||
| + | UNIQUE_NODES=$(for POD in $PODS ; do kubectl get pod " | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 2 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo "OK - StackGres PostgreSQL rendben. Pods=${READY_COUNT}/ | ||
| + | |||
| + | exit 0 | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | OK - StackGres PostgreSQL rendben. Pods=3/3, Leader=1, Replicas=2, Nodes=3/3. pg-cluster-0 role=leader node=kube01 ready=5/5 phase=Running restarts=0; pg-cluster-1 role=replica node=kube03 ready=5/5 phase=Running restarts=13; | ||
| + | </ | ||
| + | |||
| + | ==== Riport szkriptek ==== | ||
| + | |||
| + | === StackGres riport === | ||
| + | |||
| + | <file bash 00-report-stackgres-postgresql-status.sh> | ||
| + | # | ||
| + | |||
| + | NAMESPACE=" | ||
| + | |||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | |||
| + | echo -e "\n=== Kubernetes node-ok ===\n" | ||
| + | kubectl get nodes -o wide | ||
| + | |||
| + | |||
| + | echo -e "\n=== PostgreSQL pod-ok ===\n" | ||
| + | kubectl get pods -n " | ||
| + | |||
| + | |||
| + | echo -e "\n=== Patroni klaszter állapot ===\n" | ||
| + | LEADER_POD=$(kubectl get pods -n " | ||
| + | kubectl exec -n " | ||
| + | |||
| + | |||
| + | echo -e "\n=== PostgreSQL pod-ok elhelyezkedése ===\n" | ||
| + | printf "%-20s %-10s %-15s %-8s %-8s\n" | ||
| + | for POD in $(kubectl get pods -n " | ||
| + | NODE=$(kubectl get pod " | ||
| + | READY=$(kubectl get pod " | ||
| + | RESTARTS=$(kubectl get pod " | ||
| + | ROLE=$(kubectl exec -n " | ||
| + | printf "%-20s %-10s %-15s %-8s %-8s\n" | ||
| + | done | ||
| + | |||
| + | |||
| + | echo -e "\n=== Leader(ek) ===\n" | ||
| + | LEADERS=$(kubectl exec -n " | ||
| + | echo " | ||
| + | |||
| + | echo -e " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | ===================================================== | ||
| + | StackGres PostgreSQL klaszter állapot | ||
| + | Dátum: 2026. jún. 10., szerda, 15:10:21 CEST | ||
| + | ===================================================== | ||
| + | |||
| + | === Kubernetes node-ok === | ||
| + | |||
| + | NAME | ||
| + | kube01 | ||
| + | kube02 | ||
| + | kube03 | ||
| + | |||
| + | === PostgreSQL pod-ok === | ||
| + | |||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | === Patroni klaszter állapot === | ||
| + | |||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 6 | | ||
| + | | pg-cluster-2 | 10.244.1.15 | Replica | streaming | 6 | | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | |||
| + | === PostgreSQL pod-ok elhelyezkedése === | ||
| + | |||
| + | POD ROLE | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | === Leader(ek) === | ||
| + | |||
| + | pg-cluster-0 | ||
| + | |||
| + | ===================================================== | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Tesztelés ===== | ||
| + | |||
| + | ==== Kiinduló állapot ==== | ||
| + | |||
| + | === Előkészítő műveletek === | ||
| + | |||
| + | Először be kell állítani a tesztelés során használt környezeti változókat | ||
| + | |||
| + | < | ||
| + | export NAMESPACE=< | ||
| + | export CLUSTER=< | ||
| + | </ | ||
| + | |||
| + | === Kubernetes objektumok lekérdezése === | ||
| + | |||
| + | < | ||
| + | $ kubectl get pods -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | $ kubectl get sgcluster -n $NAMESPACE | ||
| + | NAME | ||
| + | pg-cluster | ||
| + | </ | ||
| + | |||
| + | === Patroni állapot lekérdezése === | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 5 | | ||
| + | | pg-cluster-2 | 10.244.1.9 | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | Ebben a példában a leader a '' | ||
| + | |||
| + | ==== Leader POD törlés ==== | ||
| + | |||
| + | < | ||
| + | $ kubectl delete pod -n $NAMESPACE pg-cluster-2 | ||
| + | pod " | ||
| + | </ | ||
| + | |||
| + | == POD ellenőrzése == | ||
| + | |||
| + | < | ||
| + | $ watch -n 2 " | ||
| + | |||
| + | Every 2,0s: kubectl get pods -n lapodb-postgres -o wide note02: 2026. jún. 10., szerda, 14:24:24 CEST | ||
| + | in 0,252s (0) | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | </ | ||
| + | |||
| + | == Ellenőrzés == | ||
| + | |||
| + | Új leader POD került kiválasztásra. Mivel a leader szerepkör átkerült egy másik POD-ra, az adatbázis kapcsolat megszakadt a kliens és a szerver között. Ezt a szakadást kezelni kell az alkalmazásban. | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 6 | | ||
| + | | pg-cluster-2 | 10.244.1.14 | Replica | streaming | 6 | | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | ==== Replika POD törlés ==== | ||
| + | |||
| + | Replika pod törlése esetén a kliens és szerver közötti kapcsolat nem szakad meg. | ||
| + | |||
| + | < | ||
| + | $ kubectl delete pod -n $NAMESPACE pg-cluster-2 | ||
| + | pod " | ||
| + | |||
| + | $ kubectl get pods -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | $ kubectl get pods -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | $ kubectl get pods -n $NAMESPACE -o wide | ||
| + | NAME | ||
| + | pg-cluster-0 | ||
| + | pg-cluster-1 | ||
| + | pg-cluster-2 | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c patroni -- patronictl list | ||
| + | + Cluster: pg-cluster (7635689612010042939) -------+----+-------------+-----+------------+-----+ | ||
| + | | Member | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | | pg-cluster-0 | 10.244.0.9 | ||
| + | | pg-cluster-1 | 10.244.2.16 | Replica | streaming | 6 | | ||
| + | | pg-cluster-2 | 10.244.1.15 | Replica | streaming | 6 | | ||
| + | +--------------+-------------+---------+-----------+----+-------------+-----+------------+-----+ | ||
| + | </ | ||
| + | |||
| + | ==== Ellenőrzések ==== | ||
| + | |||
| + | * Leader: '' | ||
| + | * Replikák: '' | ||
| + | |||
| + | === Leader oldali ellenőrzés === | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U postgres -c " | ||
| + | | ||
| + | ------------------+-------------+-----------+------------+-----------+------------ | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | === Replika oldali ellenőrzés === | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-1 -c postgres-util -- psql -U postgres -c " | ||
| + | | ||
| + | -------------------+-------------------------+------------------------ | ||
| + | | ||
| + | (1 row) | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-2 -c postgres-util -- psql -U postgres -c " | ||
| + | | ||
| + | -------------------+-------------------------+------------------------ | ||
| + | | ||
| + | (1 row) | ||
| + | </ | ||
| ===== Mentés, helyreállítás ===== | ===== Mentés, helyreállítás ===== | ||
| + | === Előkészítő műveletek === | ||
| + | |||
| + | == Felhasználó és adatbázis létrehozás == | ||
| + | |||
| + | A mentés teszteléséhez szükséges felhasználó és adatbázisok létrehozása. | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- bash | ||
| + | bash-4.4$ createuser eesztuser | ||
| + | bash-4.4$ createdb -O eesztuser eesztdb | ||
| + | bash-4.4$ createdb -O eesztuser eesztdb_restore | ||
| + | bash-4.4$ exit | ||
| + | exit | ||
| + | </ | ||
| + | |||
| + | Teszt tábla létrehozása, | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb | ||
| + | psql (18.3 (OnGres 18.3-build-6.49)) | ||
| + | Type " | ||
| + | |||
| + | eesztdb=> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | eesztdb(> | ||
| + | CREATE TABLE | ||
| + | eesztdb=> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | eesztdb-> | ||
| + | INSERT 0 10000 | ||
| + | eesztdb=> | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | eesztdb=> | ||
| + | </ | ||
| + | |||
| + | ==== Mentő szkript ==== | ||
| + | |||
| + | A szkript kiolvassa a használt névteret, és az elsődleges POD-ot. | ||
| + | |||
| + | <file bash 03-stackgres-postgresql-backup.sh> | ||
| + | # | ||
| + | |||
| + | DEBUG=1 | ||
| + | TIMESTAMP=$(date +%Y%m%d_%H%M%S) | ||
| + | |||
| + | PGDATABASE=eesztdb | ||
| + | PGUSER=eesztuser | ||
| + | |||
| + | NAMESPACE=$(kubectl get sgcluster --no-headers -A | awk '{ print $1 }') | ||
| + | PRIMARY=$(kubectl get pod -n $NAMESPACE -l app=StackGresCluster, | ||
| + | |||
| + | if [ $DEBUG -gt 0 ] ; then | ||
| + | echo " | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | if [ -z " | ||
| + | echo "Nem található primary pod" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | kubectl exec -n " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | NAMESPACE: lapodb-postgres | ||
| + | PRIMARY: pg-cluster-0 | ||
| + | |||
| + | $ ls -1 | ||
| + | eesztdb_20260610_162054.sql | ||
| + | </ | ||
| + | |||
| + | ==== Helyreállító szkript ==== | ||
| + | |||
| + | A helyreállítás az '' | ||
| + | |||
| + | <file bash 03-stackgres-postgresql-restore.sh> | ||
| + | # | ||
| + | |||
| + | DEBUG=1 | ||
| + | |||
| + | if [ $# -ne 1 ] ; then | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | BACKUP_FILE=" | ||
| + | |||
| + | if [ ! -f " | ||
| + | echo "Nem található a mentési fájl: $BACKUP_FILE" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | PGDATABASE=eesztdb_restore | ||
| + | PGUSER=eesztuser | ||
| + | |||
| + | NAMESPACE=$(kubectl get sgcluster --no-headers -A | awk '{ print $1 }') | ||
| + | PRIMARY=$(kubectl get pod -n " | ||
| + | |||
| + | if [ $DEBUG -gt 0 ] ; then | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | if [ -z " | ||
| + | echo "Nem található primary pod" | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | kubectl exec -i -n " | ||
| + | </ | ||
| + | |||
| + | Futtatás eredménye | ||
| + | |||
| + | < | ||
| + | $ ./ | ||
| + | NAMESPACE: lapodb-postgres | ||
| + | PRIMARY: pg-cluster-0 | ||
| + | BACKUP_FILE: | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | | ||
| + | ------------ | ||
| + | |||
| + | (1 row) | ||
| + | |||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | SET | ||
| + | CREATE TABLE | ||
| + | CREATE SEQUENCE | ||
| + | ALTER SEQUENCE | ||
| + | ALTER TABLE | ||
| + | COPY 10000 | ||
| + | | ||
| + | -------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | ALTER TABLE | ||
| + | </ | ||
| + | |||
| + | ==== Ellenőrzés ==== | ||
| + | |||
| + | < | ||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb -c " | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | |||
| + | $ kubectl exec -n $NAMESPACE -it pg-cluster-0 -c postgres-util -- psql -U eesztuser -d eesztdb_restore -c " | ||
| + | | ||
| + | ------- | ||
| + | 10000 | ||
| + | (1 row) | ||
| + | </ | ||
kubernetes/stackgres/monitoring.1781073275.txt.gz · legutóbbi módosítás: – Szerkesztő: riba.zoltan
