ЦЗ Цахим Засаг
GitHub Нэвтрэх

Runbook-ууд

Шөнийн гурван цагт уншигдах хуудас. Тайлбар бага, тушаал их. Төлөвлөсөн ажлууд Ажиллагаа-д.

ssh root@38.180.243.138

Юуг эхлээд харах вэ

docker ps --format '{{.Names}}\t{{.Status}}'
curl -fsS http://127.0.0.1:8082/health && echo " open OK"
curl -fsS http://127.0.0.1:8096/health && echo " sso OK"
systemctl is-active nginx
df -h / | tail -1

Гурван боломж: контейнер унасан, nginx унасан, эсвэл хоёул эрүүл боловч домэйн хариулахгүй байгаа (энэ тохиолдолд гэмтэл nginx-ийн тохиргоо эсвэл TLS дээр).

Нэвтрэлт бүхэлдээ боломжгүй болсон

Шинж тэмдэг. open.dgov.mn дээр «нэвтрэх» дарахад sso.dgov.mn хариулахгүй, эсвэл алдаа буцаана. Одоо байгаа сессүүд ажилласаар байна, шинээр орох зам байхгүй.

Шалтгаан. SSO_CLIENT_LOCAL_LOGIN=false — провайдер бол цорын ганц зам (Архитектур).

Эхлээд: провайдерийг сэргээхийг оролд.

cd /opt/sso-dgov-mn/deploy
docker compose ps
docker compose logs --tail 80 backend
docker compose restart backend
curl -s https://sso.dgov.mn/.well-known/openid-configuration | jq .issuer

Хэрэв тэр богино хугацаанд боломжгүй бол — буцах зам нь open.dgov.mn дээр локал нэвтрэлтийг түр асаах:

cd /opt/open-dgov-mn
sed -i 's/^SSO_CLIENT_LOCAL_LOGIN=false/SSO_CLIENT_LOCAL_LOGIN=true/' .env
docker compose -f docker-compose.prod.yml up -d backend frontend

Энэ нь нууц үг ба eID-ийн нэвтрэлтийг тэр домэйн дээр дахин нээнэ. Провайдер сэргэмэгц буцааж false болго — хоёр нэвтрэлтийн зам зэрэг нээлттэй байх нь түр байдал, архитектур биш.

Контейнер дахин дахин асаж унана

docker compose -f docker-compose.prod.yml logs --tail 100 backend   # open
docker compose logs --tail 100 backend                              # sso, deploy/ дотроос

Хамгийн түгээмэл гурван шалтгаан:

Логт харагдах зүйл Шалтгаан Засвар
каталог ба компилдсэн модулийн зөрүү Цөмийн шинэ tag аппын нэр/хувилбарыг өөрчилсөн catalog/ доторх хуулбар бичлэгүүдийг цөмийнхтэй тааруул (SSO)
SSO_DEFAULT_CLIENT_SECRET шаардлагатай Production дээр энэ хоосон бол цөм асахаас татгалздаг .env-д нөх
Postgres руу холбогдож чадахгүй Сангийн контейнер эрүүл болоогүй docker compose ps, сангийн логийг үз

Өгөгдлийн сан асахгүй, эсвэл хоосон

docker volume ls | grep dgov
docker exec dgov_nexus_postgres psql -U postgres -lqt | cut -d\| -f1

Хоосон сан эрүүл мэт асдаг: миграцууд ажиллаж, платформ хариулж эхэлнэ, зөвхөн өгөгдөл байхгүй. POSTGRES_VOLUME буруу заасан эсэхийг эхлээд шалга — тэр мөрийг өөрчлөх нь өгөгдөл нүүлгэх ажил, засвар биш. Volume байгаа хэрнээ хоосон харагдаж байвал дахин асаахаа боль, өгөгдлийг дарж бичихээс өмнө volume-ыг хуулж ав.

Домэйн 404 эсвэл 502

nginx -t
systemctl reload nginx
ls /etc/nginx/sites-enabled/

Сертификат хугацаа дуусах гэж байна

certbot certificates
certbot renew --dry-run
systemctl list-timers | grep certbot

Сунгалт унаж байвал хамгийн түгээмэл шалтгаан нь vhost дотор гараар бичсэн listen 443 ssl мөрүүд — certbot өөрийн тэмдэглэгээгээ олохгүй болно. Засвар: тэр мөрүүдийг устгаж, certbot --nginx -d <домэйн>-ийг дахин ажиллуул.

Диск дүүрсэн

df -h /
docker system df
docker image prune -a        # ашиглагдаагүй образууд — эхлээд энэ
journalctl --vacuum-size=200M

Хуучин образууд хамгийн их зай эзэлдэг: хоёр стек GHCR-ээс tag-аар татдаг тул rollout бүр өмнөх образыг үлдээдэг.

Deploy дунд нь унасан

deploy.sh нь образуудыг эхлээд татаж, дараа нь л ажиллаж байгаа стекийг хөнддөг. Тиймээс pull дээр унасан бол ажиллаж байгаа хувилбар хэвээрээ — хийх зүйл байхгүй, шалтгааныг (ихэвчлэн GHCR токен) засаад дахин ажиллуул.

up -d-ийн дараа унасан бол шинэ образ аль хэдийн ажиллаж байна. Буцах: .env-ийн IMAGE_TAG-ыг өмнөх commit sha-гаар түгжээд deploy.sh-ыг дахин ажиллуул. latest нь буцах цэг биш.