Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »


운영

구성파일이 준비되면 복제를 운영하는 단계로 이행합니다. 리소스 기동, 중지, 동기화/복제, 절체 등의 운영 사례를 차례로 설명합니다.

복제 운영은 리소스 단위로 수행합니다.

리소스 기동

최초 리소스를 기동할 경우 메타 데이터를 생성하는 초기화 과정을 수행합니다. 메타 데이터 초기화는 리소스 최초 기동시 한번 만 수행해야 합니다.

fsradm create-meta [리소스명] {–force | -f}

메타 데이터가 생성된 리소스를 복제 대상으로 적재합니다.

fsradm attach [리소스명]

적재 된 리소스는 아직 상대 노드와 연결을 시도하지 않고 있는 상태이므로 연결 명령을 실행해야 합니다.

fsradm connect [리소스명] [상대노드명]

통상 up 명령으로 리소스를 기동합니다. up은 적재와 연결 명령을 모두 순차적으로 수행합니다.

fsradm up [리소스명]


리소스 중지

리소스의 연결은 disconnect 명령으로 해제할 수 있습니다.

fsradm disconnect [리소스명] [상대노드명]

연결이 해제된 리소스를 분리합니다.

fsradm detach [리소스명]

통상 down 으로 리소스를 중지합니다. down은 연결 해제와 분리 명령을 모두 순차적으로 수행합니다.

fsradm down [리소스명]


동기화

초기동기화

소스와 타깃 양노드의 리소스를 기동하여 복제 연결을 성립하면 동기화를 시작하기 전 상태로 대기 합니다. 이 상태에서 소스가 될 노드의 리소스 역할을 Primary로 승격하여 초기 동기화를 시작합니다. 동기화가 시작됨과 동시에 소스 측 데이터의 변경분이 발생하면 해당 변경분에 대해서도 실시간 복제합니다. FSR은 기본적으로 동기화와 복제를 동시에 수행합니다. 

리소스를 승격하기 위한 명령은 다음과 같습니다.

fsradm primary [리소스명]


초기 동기화 시점의 로컬 파일의 상태는 정합성이 맞지 않는 상태(Inconsistent)를 초기값으로 하기 때문에 기본적으로 승격이 거부됩니다. 그래서 초기 승격 시에는 강제(-f 옵션) 승격을 통해 사용자가 해당 리소스를 소스로 하겠다는 명시적 승격을 수행해야 합니다.

c:\>fsradm primary r0
declined
  r0: not up to date

c:\>fsradm primary r0 -f
done

승격이 성공한 이후, 소스 노드는 자신의 파일 상태를 UpToDate로 변경하고 연결된 타깃 노드들을 대상으로 초기동기화를 시작합니다.

초기 동기화는 전체 복제 파일셋을 대상으로 진행하지만 한번 동기화가 완료된 이후에 재동기화를 할 경우에는 소스 측의 변경분에 대해서만 부분적으로 동기화 합니다. 예를 들어 초기 동기화 이후 복제 연결이 단절되었다가 재연결될 경우 부분적인 재동기화가 수행될 수 있습니다.

동기화가 진행되는 도중에 타깃의 파일상태는 Inconsistent이며 동기화가 완료되면 소스와 타깃의 정합성이 일치하는 UptoDate 상태가 됩니다. Inconsistent 상태는 최신의 데이터가 아니므로 복제 운영 측면에선 가능한 Inconsistent 상태를 짧게 유지하는게 바람직합니다.

수동 동기화

운영 도중 동기화를 수동으로 해야할 경우에 다음의 명령을 통해 수행합니다.

로컬을 소스로  하여 동기화 합니다.

c:\>fsradm invalidate-remote r0

피어를 소스로  하여 동기화 합니다.

c:\>fsradm invalidate r0

복제

Secondary 노드가 승격되어 동기화가 시작됨과 동시에 소스노드의 데이터에 실시간 변경분이 발생할 경우 자동으로 복제도 병행합니다. 복제는 Primary 노드에서 Secondary 노드의 방향으로 진행됩니다. 

동기화와 복제가 진행되는 도중에도 각 노드의 Role 은 사용자 명령에 의해 수동으로 변경될 수 있으며, 승격된 노드를 강등할 경우 복제는 중단됩니다.

승격된 리소스를 강등 시키기 위한 명령은 다음과 같습니다.

fsradm secondary [리소스명]


복제는 Primary 역할로 승격된 노드를 소스로 하여 수행되지만 동기화는 역할에 관계없이 동기화가 필요할 경우 수행됩니다. 복제가 중단되더라도 동기화는 지속될 수 있으며 동기화와 복제의 동작방식이 여기에서 차이가 있습니다.


누락파일

동기화가 완료된 후 복제를 수행하는 도중에 복제대상에 없었던 파일이 갑자기 복제대상 경로에 포함될 수 있습니다. 이러한 파일을 누락파일이라고 하며 다음과 같은 운영상황에서 발생할 수 있습니다.

  • 복제 대상에 포함되지 않았던 동일 볼륨 장치 경로에 있었던 파일이 파일 이동(move) 연산을 통해 복제 대상 경로로 유입되는 경우
  • 제외패턴으로 제외되었던 파일이 제외패턴 정책 변경으로 인해 복제 대상에 다시 포함되는 경우

첫 번째의 경우 FSR은 해당 파일에 대한 Filesystem I/O를 캡처할 수 없으며 단지 파일경로에 대한 이름 변경(rename)만 수신하게 되어 복제로 처리할 수 없습니다. 이런 경우 FSR 은 일단 복제상태를 유지하고 이와 동시에 해당 누락파일에 대해서 개별적으로 동기화를 수행하여 처리합니다. 두 번째 제외패턴 변경에 따른 누락의 경우는 파일시스템 I/O 연산이 없는 상태에서 복제 대상만 변경된 경우이기 때문에 기본적으로 재동기화로 처리합니다.

고아파일

고아파일은 누락파일과 달리 타깃의 복제 경로에 연고없이 남겨진 파일로 정의합니다. 이것은 일반적인 복제 상황에선 발생하지 않지만 타깃의 파일이 보호되지 않는 상황에서 의도치 않은 파일 조작이 있을 경우에 발생합니다.

고아파일이 발생하면 FSR 의 고아파일 대응 정책에 따라 처리가 되고 기본적으로 타깃의 특정 경로에 백업하는 것으로 처리됩니다. 백업 필요없이 바로 삭제 처리하도록 옵션을 지정할 수도 있습니다.

절체

절체는 통상 장애가 발생한 상황을 극복하는 절차로 정의됩니다. 여기에서 얘기하는 절체는 계획된 절체로서 복제 클러스터 내의 소스노드를 강등시키고 이후 타깃노드를 소스노드 역할로 변경하여 서비스를 위한 데이터를 활성화하는 과정을 말합니다. 

소스노드에서 리소스를 강등합니다.

c:\>fsradm secondary r0
done

타깃노드의 리소스를 승격합니다.

c:\>fsradm primary r0
done

승격이 성공하면 절체 완료로 간주합니다.


고려사항

절체 시 타깃노드의 리소스 파일상태는 UpToDate 상태일 때 복제 정합성이 보장됩니다. 만약 복제 연결이 단절되어 타깃이 최신 데이터를 가지지 못한 경우 이거나 타깃노드의 리소스가 동기화 중인 Inconsistent 상태일 경우에는 소스와 정합하지 않은 상태이므로 절체를 제한해야 합니다.


조회

상태 조회

FSR의 상태를 fsradm status 명령을 통해 조회할 수 있습니다.

λ fsradm status all
r0 role:primary file:up_to_date pending:0 locked:false
  node2 state:repl_source peer-state:repl_target role:secondary file:up_to_date
    last-synced:2019-10-24T15:30:12+09:00
  node3 state:connecting peer-state:unknown role:secondary file:unknown
    last-synced:none

r1 role:secondary file:inconsistent pending:0 locked:false
  node2 state:connecting peer-state:unknown role:secondary file:unknown
    last-synced:none

상세 출력 옵션을 사용하면 더 많은 상태 정보를 조회할 수 있습니다.

λ fsradm status -v
r0:node1 role:primary file:up_to_date pending:0 locked:false
  last-promoted:2020-06-10T09:40:32+09:00
  node2 state:repl_source peer-state:repl_target role:secondary file:up_to_date
    repl-started:2020-06-10T09:40:32+09:00 last-synced:2020-06-10T09:40:33+09:00
  node3 state:connecting peer-state:unknown role:secondary file:unknown
    repl-started:2020-04-09T09:50:38+09:00 last-synced:2020-04-09T09:50:53+09:00

상태 조회를 지속하고 싶다면 --watch(-w) 와 --interval(-i) 옵션을 사용하여 상태를 모니터링할 수 있습니다.

λ fsradm status all -w -i 1
r0 role:secondary file:inconsistent locked:false
  node2 state:established peer-state:established role:secondary file:inconsistent
    last-synced:none
  node3 state:connecting peer-state:unknown role:secondary file:unknown
    last-synced:none

r1 role:secondary file:inconsistent locked:false
  node2 state:connecting peer-state:unknown role:secondary file:unknown
    last-synced:none

update every 1.0s. current executions: 84
press 'q' or 'ctrl+c' to quit...

파일 상태

복제 대상 파일의 복제 상태를 나타냅니다. 


unknown 알 수 없는 상태. 연결되지 않은 상대 노드의 알 수 없는 파일 상태를 표현합니다.

fileless 복제 대상 미 적재 상태. attach 명령에 의해 attaching 상태로 전환합니다.

attaching 복제 대상 적재 중 상태. 적재 중 실패하면 failed, 적재 완료하면 consistent 또는 inconsistent 상태가 됩니다.

detaching 복제 대상 분리 중. 분리 완료하면 fileless 상태가 됩니다.

failed 복제 구성 실패 또는 파일 I/O 에러 발생 시 실패를 나타내는 상태.

inconsistent 데이터 순차성 보장 불가한 상태 또는 동기화 타겟의 파일 상태. 기본적으로 승격이 불가합니다.(강제 승격 가능)

consistent 데이터 순차성 보장하는 상태. 중간 상태이며 outdated 또는 up_to_date로 최종 전환됩니다.

outdated 과거 데이터 상태. 복제 타겟 상황에서 연결 단절이나 일시 중지 등에 의해 최신 데이터를 받지 못하게 될 경우의 상태. 기본적으로 승격이 불가합니다. (강제 승격 가능)

up_to_date 최신 데이터 상태. Primary이거나 복제 타겟일 경우의 상태입니다.


연결/복제 상태

양 노드가 연결 되기 까지의 상태는 연결 상태, 연결 수립 이후의 상태는 복제 상태로 정의됩니다. 다음의 상태들이 정의되어 있습니다.


standalone 중립 상태. 연결을 시도하지 않는 상태로 리소스의 초기 연결 상태에 해당합니다. connect 명령에 의해 connecting 상태로 전환됩니다.

disconnecting 연결이 단절되고 정리 중인 상태. standalone 또는 connecting 상태로 전환됩니다.

connecting 연결 시도 중 상태. 연결 시도 중 오류가 발생하면 standalone, 연결이 성공하면 connected 상태가 됩니다. 실제로는 소켓 계층에서 accept와 connect 가 동시에 시도되는 상태입니다.

connected 연결 성공하고 복제 네트워크에 대해 인증 중인 상태입니다. 인증이 성공하면 established, 인증이 실패하면 standalone 상태가 됩니다.

established 복제 인증 완료 상태. 연결 직후의 상태이며 Secondary 간 연결이 완료되었을 때의 기본 상태입니다. 동기화, 복제로 바로 이행하지는 않습니다. 이 상태에서 승격할 경우 sync_source 또는 repl_source가 되고 상대가 승격하면 sync_target 또는 repl_taret 이 됩니다.

sync_source 동기화 소스 상태. 동기화 일시 중지할 경우 sync_source_paused 상태, 동기화 완료시 repl_source 상태가 됩니다. 세컨더리간에 동기화가 완료될 경우엔 established 상태가 됩니다.

sync_source_paused 동기화 소스 일시 중지 상태. 동기화 재개할 경우 sync_source 상태가 됩니다.

sync_target 동기화 타겟 상태. 동기화 일시 중지할 경우 sync_target_paused, 동기화 완료 시 repl_target이 됩니다. secondary 간 동기화 완료는 established 상태가 됩니다.

sync_target_paused 동기화 타겟 일시 중지 상태. 동기화 재개할 경우 sync_target 상태가 됩니다.

repl_source 복제 소스 상태. 이 상태에서 강등할 경우 established 상태, 일시 중지할 경우 repl_source_paused, 동기화 시작 시 sync_source 상태로 전환합니다.

repl_source_paused 복제 소스 일시 중지 상태. 복제 재개 시 repl_source 상태가 됩니다.

repl_target 복제 타겟 상태. 이 상태에서 상대가 강등하면 established, 일시 중지할 경우 repl_target_paused, 동기화가 시작되면 sync_target 상태가 됩니다.

repl_target_paused 복제 타겟 일시 중지 상태. 복제가 재개되면 repl_target 상태가 됩니다.

성능 조회

fsradm perfmon 명령을 통해 성능을 조회할 수 있습니다.

c:\>fsradm perfmon r0

성능에 대한 조회는 콘솔화면에 결과를 출력하여 직접 확인하거나 조회결과를 파일로 저장하는 등 다음과 같이 몇 가지 옵션을 사용할 수 있습니다.

  • --json <filename> JSON 파일 경로 지정
  • --csv <filename> CSV 파일 경로 지정
  • --display 콘솔 화면에 출력
  • --watch 모니터링 모드
  • --interval 조회 주기

성능 지표


이벤트

FSR 은 이벤트 구독 명령을 통해 FSR 로 부터 정의된 이벤트를 통지 받을 수 있습니다. 이벤트 구독을 통해 파일이나 연결 등의 상태가 변경되는 과정을 실시간 추적할 수 있습니다.

λ fsradm events r0
2020-06-12T12:42:39.295379 type=rpc state=connected
2020-06-12T12:42:41.685784 type=state node=node2 peer=node1 resource=r0 value=standalone
2020-06-12T12:42:41.685784 type=added node=node2 resource=r0
2020-06-12T12:42:41.685784 type=role node=node2 resource=r0 role=secondary
2020-06-12T12:42:41.685784 type=file_state node=node2 resource=r0 value=fileless
2020-06-12T12:42:41.728821 type=file_state node=node2 resource=r0 value=attaching
2020-06-12T12:42:41.744835 type=file_state node=node2 resource=r0 value=outdated
2020-06-12T12:42:41.774378 type=state node=node2 peer=node1 resource=r0 value=connecting

이벤트 해석의 용이성을 위해 json 형식의 출력을 지원하며 동기화 상태(--sync), 성능 통계에 대한 모니터링(–perf)에 대한 옵션을 부가적으로 지원합니다.

λ fsradm events --json r0
{"type":"rpc","timestamp":"2020-06-12T03:43:56.152358300Z","datas":{"state":"connected"}}
{"type":"state","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","peer":"node1","resource":"r0","value":"standalone"}}
{"type":"added","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0"}}
{"type":"role","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0","role":"secondary"}}
{"type":"file_state","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0","value":"fileless"}}
{"type":"file_state","timestamp":"2020-06-12T03:43:58.437426600Z","datas":{"node":"node2","resource":"r0","value":"attaching"}}
{"type":"file_state","timestamp":"2020-06-12T03:43:58.452638800Z","datas":{"node":"node2","resource":"r0","value":"outdated"}}
{"type":"state","timestamp":"2020-06-12T03:43:58.479433800Z","datas":{"node":"node2","peer":"node1","resource":"r0","value":"connecting"}}


이벤트의 유형에 관한 상세한 내용은 부록의 명령어 부분을 참고하세요.

정합성 검증


재구성

복제 운영 중 물리적인 디스크의 손상이 발생하거나 환경적으로 얘기치 못한 문제가 발생할 경우 정상적으로 복제가 수행될 수 없습니다. 디스크를 교체하거나 복제 대상을 다시 구성해야 할 필요가 있다면 다음의 과정을 통해 복제를 재구성하고 재동기화를 해야 합니다.

운영중인 리소스를 중지 합니다.

c:\>fsradm down r0
done

디스크 교체 등 복구작업을 수행합니다.

메타를 재생성합니다. 만약 복제 구성에서 변경이 발생할 경우 구성파일을 새롭게 작성하고 메타를 재 생성해야 합니다.

c:\>fsradm create-meta r0
done

리소스를 기동합니다.

c:\>fsradm up r0
done

초기 동기화가 시작되어 재구성 절차가 마무리 됩니다.


백업


파일 삭제


스냅샷


  • No labels