Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Mold] DR 기능 UI, API 개발 #430

Open
wants to merge 730 commits into
base: ablestack-diplo
Choose a base branch
from

Conversation

Dajeong-Park
Copy link

@Dajeong-Park Dajeong-Park commented Mar 29, 2024

이슈

API 호출

  • DR Mold API request [DisasterRecoveryUtil.java 파일]

    • SCVM IP 조회 (완료)
    • DR 클러스터 조회 (완료)
    • DR 클러스터 추가 (완료)
    • DR 클러스터 편집 (완료)
    • DR 클러스터 삭제 (완료)
    • DR 클러스터 VM 추가 (완료)
    • DR 클러스터 VM 삭제 (완료)
    • DR 클러스터 VM 시작 (완료)
    • DR 클러스터 VM 정지 (완료)
    • 네트워크 오퍼링 및 네트워크 목록 조회 (완료)
    • 디스크 오퍼링 목록 조회 (완료)
    • 기본스토리지 목록 조회 (완료)
    • 가상머신 목록 조회 (완료)
    • Glue 이미지 볼륨 편집 (완료)
    • Glue 이미지 볼륨 생성 (완료)
    • Glue 이미지 볼륨 연결 (완료)
    • Glue 이미지 가상머신 생성 (완료)
  • DR Glue API request [DisasterRecoveryUtil.java 파일]

    • Glue 상태 조회 (완료)
    • Glue 서비스 재시작 (완료)
    • Glue 미러링 상태 조회 (완료)
    • Glue 미러링 클러스터 설정 (완료)
    • Glue 미러링 클러스터 제거 (완료)
    • Glue 미러링 클러스터 활성화 (완료)
    • Glue 미러링 클러스터 비활성화 (완료)
    • Glue 미러링 클러스터 가비지 삭제 (완료)
    • Glue 미러링 이미지 목록 조회 (완료)
    • Glue 미러링 이미지 정보 조회 (완료)
    • Glue 미러링 이미지 프로모트 (완료)
    • Glue 미러링 이미지 디모트 (완료)
    • Glue 미러링 이미지 동기화 (완료)
    • Glue 미러링 이미지 설정 (완료)
    • Glue 미러링 이미지 설정 편집 (완료)
    • Glue 미러링 이미지 상태 조회 (완료)
    • Glue 미러링 이미지 삭제 (완료)

API 추가

  • SCVM IP 조회 (listScvmIpAddress) API

  • DR 클러스터 연결 테스트 (connectivityTestsDisasterRecoveryCluster) API

  • DR 클러스터 조회 (getDisasterRecoveryClusterList) API

    • 미러링 에이전트 상태 : Glue 미러링 상태 조회(Glue-API)
    • Error : mirror 상태 조회 시 WARNING
    • Disabled : mirror 상태 조회 시 비활성화 (500 error)
    • Enabled : mirror 상태 조회 시 OK
    • Created : DR 구성 시작
    • Unknown : glue-api 요청 실패
  • DR 클러스터 추가 (createDisasterRecoveryCluster) API

  • DR 클러스터 편집 (updateDisasterRecoveryCluster) API

    • Primary Cluster Action 편집 가능 항목 : 설명, Mold URL, Glue IP

    • Primary Cluster Details 편집 가능 항목 : Mold API Key, Secret Key, Glue Private Key, Interval, StartTime

    • Secondary Cluster Action 편집 가능 항목 : 설명, Mold URL

    • Secondary Cluster Details 편집 가능 항목 : Mold API Key, Secret Key, Interval, StartTime

      DR 추가 시 Secondary Cluster에 async로 생성된 id를 받을수 없어서 name으로 파라미터 사용하여 Primary Cluster, Secondary Cluster 이름이 무조건 동일해야하기 때문에 편집하지않도록 고정

  • DR 클러스터 삭제 (deleteDisasterRecoveryCluster) API

  • DR 클러스터 활성화 (enableDisasterRecoveryCluster) API

    • Primary Cluster에서만 버튼 show
  • DR 클러스터 비활성화 (disableDisasterRecoveryCluster) API

    • Primary Cluster에서만 버튼 show
  • DR 이미지 Promote (promoteDisasterRecoveryCluster) API

    • Secondary Cluster에서만 버튼 show
  • DR 이미지 Demote (demoteDisasterRecoveryCluster) API

    • Secondary Cluster에서만 버튼 show
  • DR 미러링 가상머신 추가 (createDisasterRecoveryClusterVm) API

  • DR 미러링 가상머신 편집 (updateDisasterRecoveryClusterVm) API

  • DR 미러링 가상머신 삭제 (deleteDisasterRecoveryClusterVm) API

  • DR 미러링 가상머신 모의시험

    • DR 미러링 가상머신 시작 (startDisasterRecoveryClusterVm) API
    • DR 미러링 가상머신 정지 (stopDisasterRecoveryClusterVm) API
    • DR 미러링 가상머신 디모트 (demoteDisasterRecoveryClusterVm) API
    • DR 미러링 가상머신 프로모트 (promoteDisasterRecoveryClusterVm) API
  • DR 클러스터 동기화 (resyncDisasterRecoveryCluster) API

    • Secondary Cluster에서만 버튼 show
    • 재난 복구 상황 발생 시 Primary 클러스터를 복구한 경우 강제 디모트 하기전에 이미지 동기화
  • DR 클러스터 가비지 삭제 (clearDisasterRecoveryCluster) API

    • Secondary Cluster에서만 버튼 show
    • 재난 복구 상황 발생 시 Primary 클러스터를 복구하지 않는 경우 Glue 가비지 삭제

DB

  • disaster_recovery_cluster 테이블 추가

    • 항목 : id, uuid, mshost_id, name, description, d_cluster_url, dr_cluster_type, dr_cluster_status, mirroring_agent_status, glue_ip_address, created, removed
  • disaster_recovery_cluster_details 테이블 추가 (drclusterapikey, drclustersecretkey, drclusterprivatekey, mirrorschedulestarttime, mirrorscheduleinterval 저장)

    • 항목 : id, dr_cluster_id, name, value
  • disaster_recovery_cluster_vm_map 테이블 추가

    • 항목 : id, disaster_recovery_cluster_id, vm_id, mirrored_vm_id, mirrored_vm_name, mirrored_vm_status, mirrored_vm_volume_type, mirrored_vm_volume_path, mirrored_vm_volume_status

@Dajeong-Park Dajeong-Park changed the title [Mold] DR 기능 API 개발 [Mold] DR 기능 UI, API 개발 Mar 29, 2024
Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@Dajeong-Park
Copy link
Author

Dajeong-Park commented Jul 2, 2024

  • DR 클러스터 추가
Glue 상태 조회하여 Health-Warn 인 경우에도 추가가 가능하도록 할 것인지?
details 값에 넣는 스케줄 interval 과 starttime 초기 값을 몇으로 설정 할 것인지?
  • DR 클러스터의 상세화면의 가상머신 Tab
Secondary, Primary 클러스터 별 가상머신 이름, 가상머신 상태 외 더 보여줘야할 정보가 있는지?
  • 가상머신의 상세화면의 DR Tab
볼륨 미러링 상태를 어떤 식으로 출력해야할지?
현재 peer_sites의 state를 가져와서 replaying이 포함된 경우 Syncing 상태, error 포함된 경우 Error 상태, unknown 이 포함된 경우 Unknown 상태, 그 외는 Ready 상태로 출력
ex) 이미지 미러링 상태 API 조회 시 출력 값 
       state: "down+unknown", description: "status not found" ...
       state: "up+stopped", description: "local image is primary" ...
       state: "up+replaying", description: "replaying, { ... replay_state : idel } ...
       state: "up+error", description: "split-brain detected" ...
  • DR 클러스터 편집
현재 details 값의 starttime과 interval 변경한 경우 Glue-API 는 기 변경한 값의 스케줄을 별도로 추가하도록 개발되어있으며,
전체 스케줄을 다 지운 후 변경된 설정 값으로 업데이트 하는 방식으로 변경 해야할지?
  • DR 클러스터 활성화/비활성화
현재 DR 클러스터를 비활성화한 경우 미러링이 비활성화되며 관련된 정보를 모두 삭제하도록 개발되어있으며, 미러링 가상머신을 새로 생성해야함.
기존에 미러링된 가상머신에 대한 정보를 갖고있어야 할지?

Copy link

github-actions bot commented Jul 3, 2024

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@Dajeong-Park
Copy link
Author

Dajeong-Park commented Jul 5, 2024

모의시험 기능 설계

Progress 표현을 위해 각 단계별 UI 에서 호출 하는 방식으로 개발 진행 사전 테스트

  1. vue 에서 HmacSHA256을 사용한 Signature 생성 (가능)
  2. secondary 클러스터로 axios 요청 (에러-API 정상적으로 실행되어 작업은 완료되지만 UI 에서 Access-Control-Allow-Origin 문제로 error 발생)

테스트 결과 모의시험 단계별 API 생성하여 각 단계별 output 에 따른 UI Progress 처리하도록 개발 진행

  • 모의시험 사전 작업
DR Mold-API 호출을 위해 DR 목록 조회 API 요청
  • 1단계 - 가상머신 정지
1. 가상머신 정지 API 요청
2. DR 가상머신 정지 API 요청 (axios)
  • 2단계 - 이미지 디모트, DR 이미지 프로모트
가상머신 이미지 디모트 API 요청 (Glue-API 에서 DR 이미지 프로모트까지 작업 진행)
  • 3단계 - DR 가상머신 시작
DR 가상머신 시작 API 요청 (axios)
  • 4단계 - 이상 없음 확인
timeout 1~2분 ===========> 어떤 방식으로 확인할 것인지???
  • 5단계 - DR 가상머신 정지
DR 가상머신 정지 API 요청 (axios)
  • 6단계 - DR 이미지 디모트, 이미지 프로모트
가상머신 이미지 프로모트 API 요청 (Glue-API 에서 DR 이미지 디모트까지 작업 진행)
  • 7단계 - 가상머신 시작
가상머신 시작 API 요청

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@Dajeong-Park
Copy link
Author

Dajeong-Park commented Oct 29, 2024

개선 필요 항목

  • 이미지 Syncing 상태 진행률 표시

동기화 작업 또는 강제 디모트 작업 완료 후 Syncing 이미지 상태가 Idle이 아닌 Replaying 인 경우 진행률 표시

  • 미러링 스냅샷 스케줄러

Glue-API 를 재시작한 경우 최근 스냅샷 완료 시간이 미러링 스냅샷 interval 보다 오래된 경우 다른 SCVM에서 스케줄러 실행 --> 현재 해당 로직으로 구현되어 있음
Glue-API 를 재시작하지 않아도 주기적으로 조회하여 스케줄러가 실행되지 않으면 다른 SCVM에서 스케줄러가 실행하도록 개선 필요

  • 강제 프로모트 및 강제 디모트 실행 후 미러링 에이전트 상태 원인 분석 필요

현재 DR 상황 발생 후 강제 프로모트 및 강제 디모트 실행하여 정상적으로 복구한 경우, 미러링 에이전트 상태가 error 또는 waring 인 경우 미러링 이미지가 정상적이지 않아 비활성화 또는 삭제 후 재구성이 필요

Copy link

github-actions bot commented Nov 1, 2024

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant