IT기술/Oracle

02 CRS 설명 (3/5)

dobbby 2021. 6. 18. 11:33
반응형

 

CRS (Cluster Ready Services)

CRS는 크게 3개의 콤포넌트로 구성이 됩니다.

CSS, EVM, CRS. 이렇게 3개가 존재하며, 마지막의 CRS는 Oracle Cluster를 부를때 사용하는

CRS 와는 구분이 되는 Process 명으로 CRS의 resource를 관리합니다.

 

 

 

CRS Structure

이 그림은 앞의 그림들 좀더 확장한 그림입니다. 

CRS는 Unix의 init에 의해 기동되고, windows에서는 service controller에 의해 기동됩니다.

여기서 하얀box내의 사각형들은 모두CRS의 component 들입니다.

Oprocd 는 oracle10g에서 사용하는 io fencing기능을 제공합니다.

Evmd 는cluster 내의 event 발생 시 이 event 를 전파하는 기능을 합니다.

이 그림에 표시되어 있지는 않지만, ‘crs_stat –t’ 명령을 수행하면 gsd(group service daemon) 가 나타나는 것을 보실 수 있습니다. 

Gsd 는 10g version 에서는 사용되지 않지만, 9i version 의 srvctl 의 interface 가 gsd 로 되어있기 때문에 10g 에서도 아직 남아 있습니다. 

실제로 oracle 9i 때의 gsd 의 역할은 이제 모두 crsd 가 담당하게 되었고, 9i version 을 지원하기 위해 존재하는 것 이외의 의미는 없습니다.

Ocssd 는 heartbeat 을 다른 node 에 보내어 health check를 하는 기능을 담당하며, 

상대 node 의 이상 감지 시 cluster reconfiguration 도 css 가 담당합니다.

Crsd 는 cluster resource manager로써 CRS가 사용하는 resource를 start/stop/disable/configure 하는 역할을 합니다.

Process로서 존재하지는 않지만, OCR과 Voting disk도 CRS의 구성 Component 입니다.

OCR 은 cluster 와 cluster 내의 resource 의 정보가 저장되어있으며, Voting Disk 는 각 node 의 status 를 확인하기 위해 사용됩니다.

 

 

 

 

OPROCD (Processor Monitor Daemon)

Oprocd는processor monitor로써init에 의해 기동됩니다.

앞에서 말한 것처럼 oprocd는 Oralce Cluster 가 제공하는 IO fencing solution 입니다.

Linux 에서는 hangcheck timer 가 이 oprocd 의 기능을 제공하기 때문에 oprocd 는 작동하지 않습니다. 

이외의 platform중에서 vendor clusterware가 설치되어 있다면, 마찬가지로 oprocd는 기동 되지 않습니다. 

Linux를 제외한 flatform에서 Vendor clusterware가 설치되지 않은 경우만 oprocd가 기동 되어 processor를 monitoring하게 됩니다.

Monitoring하는 방법은 특정시간동안 sleep후 깨어나서 예정된 시간보다 늦게 깨어나게 되면, 

system hang으로 간주하여 processor를 reset하고 machine을 reboot하게 됩니다.

 

 

 

EVMD (Event Forwarding Daemon)

EVMD는 Event forwarding Daemon입니다. 이 process도 init에 의해 기동됩니다.

Evmd는 evmlogger를 fork하는데 이 process는 log file에 event를 기록하는 역할을 합니다.

Oralce 10g에서는 oracle instance를 monitoring하는 racgimon이라는 process가 있는데, 

이 process로부터 forwarding되는 message를 처리하기위해 evmlogger는 필요에 따라 racgevt라는 process를 생성합니다.

Racgevt는 message를 받을 때 마다 callout directory를 확인하여 필요 시 callout를 실행합니다.

Callout이란 특정 event에 따라 행해져야 하는 특정 action을 정한 script입니다.

Callout directory는 $ORA_CRS_HOME/racg/usrco입니다. 

이 directory에 user가 특정 action을 미리 define하여 callout script를 생성할 수도 있습니다.

Evmd는 oracle user로 기동되며 fail발생시 자동적으로 재기동 됩니다.

 

 

 

EVM Architecture

EVM Daemon은 다시 두 개의 component로 구분할 수 있습니다.

하나는 local EVM(LEVM)이고 하나는 cluster EVM(CEVM)입니다.

CEVM은 clusters내의 evm daemon에 대한 cluster membership정보를 유지관리 합니다. 

즉, 상태 node의 CEVM의 TCP connection정보를 유지하고, 상대 node의 evm에게 event를 전달하는 역할을 합니다.

LEVM은 clusterwide하게 전달될 event가 생성되면, Cluster event Queue에 event를 넣어서 CEVM이 clusterwide하게 event를 전달하도록 합니다.

CEVM이 다른 node로부터 event를 받는 경우, 마찬가지로 clustger event Queue에 event를 넣어 LEVM으로 전달합니다.

Cluster내의 어느 node가 새로 cluster에 join하는 경우, CEVM은 상대 node의 CEVM으로부터 이 event를 전달받고,

inbound cluster event queue에 이 event를 넣습니다. 

그리고 CRSD에게 이 event를 넘겨줘서 CRSD가 node join을 알게 합니다.

LEVM은 queue에 있는 event를 받고 이 내용을 기록합니다.

이와 같이 CSS, CRSD가 발행하는 event들은 EVM을 통하여 clusterwide하게 전파됩니다

 

 

CSSD (Cluster Synchronization Service)

CSSD는 cluster synchronization service daemon의 약자입니다. 

이 process는 다음 세가지의 service를 제공합니다.

Group service, lock service, node information service입니다. 

Node information service는 어떤 node가 cluster에 join했는지 혹은 cluster를 떠났는지 monitoring하는 기능입니다.

 

Cssd는 process fail시 OS reboot이 됩니다.

 

CSS의 역할인 그룹서비스는 9i version에서의 skgxn의 역할이 확장된 것입니다. 

Oracle database instance가 join하는 것을 처리하고 Cluster내의 이미 존재하는 member들에게 

새로운 member가 join되거나 leave되는 것을 알려줍니다.

Lock service는 crsd가 사용하는 lock을 css의 lock service가 제공합니다.

Node Information Services는 node의 정보를 유지 관리하는 service입니다.

여기에는 cluster configuration정보, node명, node number등이 있으며 node추가나 삭제 시 갱신됩니다

 

다른 crs process들처럼 cssd도 multi thread로 되어있으며, 크게 두 부분으로 나눌 수 있습니다.

Node monitor는 nm이라고 불리우며, Node자체가 살아있는지 여부를 check한는 역할을 합니다. 

이 기능은 heartbeat을 이용하게 됩니다. 

상대 node의 css endpoint는 ocr에 기록되어있으며, 이 end point로 매초마다 interconnect를 통해 network heartbeat을 보냅니다. 

일정 시간동안, 즉 miscount동안 heartbeat을 받지 못하면 css는 해당 node를 죽은 것으로 간주합니다. 

이와는 별도로 voing disk을 매초마다 read하게 됩니다. 

Network heartbeat이 miscount동안 오지 못하여 일부 node가 죽은 것으로 판단되면, 

이 voting disk를 확인하여 어느 node들을 cluster에서 제거해야 하는지 voting을 하게 되는데 이 단계가 reconfiguration입니다. 

Nm이 어느 node가 죽었는지 판단하여 nm reconfiguration을 한 이후에, gm이 해당 node의 crs, 

evm, css등이 사용했던 resource들을 제거하고 cluster group에서 삭제하는 gm reconfiguration이 진행됩니다.

Reconfiguration은 node join시에도 발생합니다.

반응형