데이터 마이그레이션

작성자 이경미 수정일 2022-12-12 10:05

#마이그레이션

들어가며

  • 서버에 장애 발생 시 백업할 파일에 대해 알 수 있습니다.
  • 제품을 복구하는 마이그레이션 방법에 대해 알 수 있습니다.
  • 제품의 설치 파일 경로는 /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 들이 재시작되어야 합니다. 

  1. 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 


  2. 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가 확인되면 정상작동임을 확인할 수 있습니다. 

    텍스트이(가) 표시된 사진

자동 생성된 설명


  3. 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


  4. 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


  5. 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 가 정상적으로 실행된 것을 확인할 수 있습니다. 


  6. 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




아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300