들어가며
- 서버에 장애 발생 시 백업할 파일에 대해 알 수 있습니다.
- 제품을 복구하는 마이그레이션 방법에 대해 알 수 있습니다.
- 제품의 설치 파일 경로는 /sodaflow/ 를 기준으로 합니다.
- 제품의 pvc 경로는 /nas_storage/ 를 기준으로 합니다.
내용
설치 파일 백업
제품의 설치파일은 대표 master 서버에 저장되어 있습니다.
- 설치 파일 경로로 이동
cd /sodaflow
- 설치 파일 백업 방법
$ tar -zcvf setupfile.tar.gz /sodaflow
백업 파일은 해당 서버가 아닌 안전한 서버에 저장을 권장합니다.
- 설치 파일 복구 방법
복구된 서버에 백업한 파일을 위치 시키고 아래 명령어를 실행합니다.
$ cd /sodaflow $ tar -zxvf setupfile.tar.gz
데이터 백업
NAS 서버에는 다음 파일들이 저장되어 있으므로 필수로 백업해야 합니다.
1. 제품에서 사용되는 데이터 파일 (gitlab, mariadb)
2. 모델 학습을 비롯한 코드 및 데이터
- nas_storage 경로로 이동
$ cd /nas_storage/
- nas_storage 백업 방법
$ tar -zcvf pvcs.tar.gz /nas_storage/
백업 파일은 해당 서버가 아닌 안전한 서버에 저장을 권장합니다.
- nas_storage 복구 방법
대표 master 서버에서 진행합니다.
백업한 데이터의 압축을 NAS 의 mount 지점에 해제합니다.
복구한 nas 서버의 방화벽이 해제되어야 합니다. 서버와 nas 서버가 mount 되어야 합니다.
$ cd /nas_storage $ tar -zxvf pvcs.tar.gz
❗️NAS 를 복구할 때 다음 pod 들이 재시작되어야 합니다.
- NGINX
$ cd /sodaflow/setup/01_nginx-ingress/yamls # Stop nginx $ kubectl delete -f install_nginx_ingress.yaml # Check nginx pod $ kubectl get po -n sodaflow > sodaflow-nginx-ingress-controller-<UUID> Pod가 없는 것을 확인한 후 백업 데이터를 복원합니다. # Start nginx $ kubectl apply -f install_nginx_ingress.yaml # Check nginx pod runnig $ kubectl get po -n sodaflow -owide
- NEXUS
$ cd /sodaflow/setup/03_nexus/yamls # Stop nexus $ kubectl delete -f install_nexus.yaml # Check nexus pod $ kubectl get po -n sodaflow > devainexus-<UUID> Pod가 없는 것을 확인한 후 백업 데이터를 복원합니다. Nexus 데이터는 용량이 크기 때문에 복원 시간이 오래 걸릴 수 있습니다. # Start nexus $ kubectl apply -f install_nexus.yaml # Check nexus pod runnig $ kubectl get po -n sodaflow # Check nexus log $ kubectl logs -f devainexus-<UUID> -n sodaflow
Log 확인 시 다음 log가 확인되면 정상작동임을 확인할 수 있습니다.
- MINIO
$ cd /sodaflow/setup/04_minio/yamls # Stop minio $ kubectl delete -f install_minio.yaml # Check minio pod $ kubectl get po -n minio > No resources found in minio namespace. 출력을 확인한 후 백업 데이터를 복원합니다. # Start minio $ kubectl apply -f install_minio.yaml # Check minio pod $ kubectl get po -n minio
- PROMETHEUS
$ cd /sodaflow/setup/06_prometheus_grafana/yamls # Stop Prometheus $ kubectl delete -f kube-prometheus-stack.yaml # Check prometheus pod $ kubectl get po -n monitoring > No resources found in monitoring namespace. 출력을 확인한 후 백업 데이터를 복원합니다. # Start prometheus $ kubectl apply -f kube-prometheus-stack.yaml # Check prometheus pod $ kubectl get po -n monitoring
- MARIADB
$ cd /sodaflow/setup/09_mariadb-9.3.2/yamls # Stop mariadb $ kubectl delete -f install_mariadb.yaml # Check mariadb pod $ kubectl get po > mariadb-cluster-primary-<UUID>, mariadb-cluster-secondary-<UUID> Pod가 없는 것을 확인한 후 백업 데이터를 복원합니다. # Start mariadb $ kubectl apply -f install_mariadb.yaml
# Check mariadb pod $ kubectl get po # Check mariadb log $ kubectl logs -f mariadb-cluster-primary-<UUID> $ kubectl logs -f mariadb-cluster-secondary-<UUID>
Log 확인 시 모든 mariadb 가 정상적으로 실행된 것을 확인할 수 있습니다. - GITLAB
$ cd /APP/sparklingsoda/setupfiles/setup/11_gitlab/yamls # Stop (Gitlab Server) $ kubectl delete -f gitlab.yaml # Check Pod $ kubectl get po > gitlab-server-<UUID> Pod가 없는 것을 확인합니다. # Stop (Gitlab Redis) $ kubectl delete -f gitlab_redis.yaml # Check Pod $ kubectl get po > gitlab-redis-<UUID> Pod가 없는 것을 확인합니다. # Stop (Gitlab Postgresql) $ cd /APP/sparklingsoda/setupfiles/setup/11_gitlab/yamls/postgresql $ kubectl delete -f gitlab_postgresql.yaml # Check Pod $ kubectl get po > gitlab-postgresql-0 Pod가 없는 것을 확인한 후 백업 데이터를 복원합니다. # Start (Gitlab Postgresql) $ kubectl apply -f gitlab_postgresql.yaml
Log 확인 시 정상적으로 실행된 것을 확인할 수 있습니다.# Check Log $ kubectl logs -f gitlab-postgresql-0
- GitLab redis# Start (Gitlab Redis) $ cd /APP/sparklingsoda/setupfiles/setup/11_gitlab/yamls $ kubectl apply -f gitlab_redis.yaml # Check Pod $ kubectl get po
- GitLab Server# Start (Gitlab Server) $ kubectl apply -f gitlab.yaml # Check Pod $ kubectl get po
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.