[Oracle] Oracle Clusterware

prana·2025년 2월 2일
1

ORACLE

목록 보기
71/96

Oracle Clusterware

  • 여러 개 의 서버를 1개의 서버인 것처럼 연결시켜주는 software
  • RAC를 구성하는 component로서 Oracle 10g release
  • 역할: instance와의 통신을 수행하며, 장애를 감지

3개 주요 컴포넌트 (및 데몬)

CRS (Cluster Ready Service)

  • 노드간 장애는 crs가 감지
  • 고가용성, workload 관리
  • 리소스 감시, 정지, 기동
  • 클러스터 리소스의 기동, 정지, 감시 및 failover를 행함
  • 장애를 감지하면, resource 재기동을 수행함

CRS가 관리하는 리소스들

  • Oracle Database
  • Oracle Instance
  • Oracle Listener
  • Service
  • ASM Instance
  • 가상 IP address
  • ONS
  • GSD (Global Service Daemon); Oracle 데이터베이스에서 클러스터 데이터베이스의 노드를 관리하기 위해 사용되는 서비스

CSS (Cluster Synchronization Services)

  • inter connect 장애, storage path 장애는 css가 감지
  • 멤버십 정보 관리: 신규 노드 추가 및 삭제
  • private interconnect 상에서 heart beat 통신을 수행, 장애를 감지
    • node 장애, interconnect 장애, storage path 장애 등
  • oclsomon, oprocd --> 더 이상 사용되지 않음

CSS에 의한 노드간 장애 시 감지 예시

  • heart beat를 통한 감시
    • voting disk의 타임 아웃: disktimeout (초)
      • crsctl get css disktimeout
    • network 통신의 타임 아웃: misscount (초)
      • crsctl get css misscount
  • heartbeat 감시가 타임아웃되면, node 배제하는 절차로 진행됨
  • 노드간 장애 발생 시의 문제: Split Brain
    • 정합성이 지켜지지 않는 문제 (동시에 read/write 수행 시)
  • Split Brain 의 해결
    • Voting Disk에 자신이 접속 가능한 노드임을 등록
    • 가장 많이 연결된 노드 그룹으로 클러스터를 재구성
  • Instance Recovery 시작
    • 정상인 노드가 장애 노드의 redo로그 파일 및 undo 테이블스페이스에 접근하여 recovery를 실행
      • 각각의 인스턴스별로 전용 redo log file, undo tablespace를 가짐
    • 1st pass long read
      : 장애가 일어난 인스턴스의 redo로그를 읽음, 복구에 필요한 블록 이외는 사용 가능하도록 됨.
    • 2nd pass long read
      : 실제로 recovery가 실시되어, recovery를 행한 block으로부터 사용 가능한 상태로 복구

배제할 노드의 결정

  • voting disk를 통해서, sub cluster를 파악
  • node 수가 최대 서브 클러스터에 속하는 노드가 생존, 속하지 않은 노드가 배제
  • subcluster에 속하는 노드 수가 동일한 경우에는, node 번호가 최신인 노드가 속한 sub cluster가 생존, 그 외에는 배제

EVM (Event Manager)

  • application 에 대한 이벤트 전송
  • Fast Connection Failover : Application이 정상적인 노드와 재접속할 수 있도록 함
  • Fast Application Notification: Instance가 다운된 것을 알림
    • 가동중인 서버로의 재접속

2개의 공유 디스크 영역

OCR (Oracle Cluster Registry)

  • 클러스터 구성 정보 저장

Voting Disk

  • Split Brain 시 이용하는 영역

용어

Server Pool

  • Server Pool: server resource의 최적화를 가능하게 하는 인프라
    • Cluster 밑단의 서버를 server group으로 그룹화
    • 어느 서버 group에도 속하지 않는 서버는 free 그룹으로 배치
    • 서버의 할당은 정책에 따른다.
      • server 수(최소, 최대), 중요도
    • RAC 데이터베이스나 application을 server pool에 배치
  • Single Client Access Name(SCAN): 동적 인프라에 대응한 접속 방식
  • Grid Plug and Play(GPnP): 네트워크 고유의 설정을 배제한 도메인의 구축
  • Oracle ASM Cluster File System(ACFS): 어느 서버 상에서도 접근 가능한 filesystem

Manual/Policy Management

Manual Management

  • RAC 데이터베이스가 기동하는 서버를 고정한 database

Policy Management

  • server pool의 policy에 따라 유연하게 관리가 가능한 rac database
  • 노드 추가 시 필요한 영역(redo log, file등) 자동으로 생성됨
  • GPnP

Service 기본 구성

  • Rac에 접속하는 application을 service라는 단위로 관리
    • 부하분산이나 workload관리를 목적으로서 oracle 10g 부터 도입
---> n2에만 설정
SQL> show parameter service_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      ORACOW,ORAJIN,ORASEO
SQL> show spparameter service_names

SID      NAME                          TYPE        VALUE
-------- ----------------------------- ----------- ----------------------------
*        service_names                 string      ORACOW,ORAJIN
ORACOW2  service_names                 string      ORACOW,ORAJIN,ORASEO

grid 계정에서 lsnrctl status 로 확인 했을 때 * << 에서는 n1, n2 공통으로 확인되는 부분, 

SQL> alter system set service_names = 'ORACOW,ORAJIN,ORASEO' scope=both sid='ORACOW2';

System altered.
---> ORACOW2에만 지정했을 경우에 확인되는 ORASEO

SCAN (Single Client Access Name)

  • Cluster에 access 할 경우의 단일 alias
  • Client/Server 접속 설정의 복잡도를 제거
    • failover, road balance 기능을 설정
    • node 추가, 삭제 시의 설정 변경
  • LOCAL NAMING: sqlplus scott/tiger@ORCL
  • EZCONNECT: sqlplus scott/tiger@SCAN명:1521/서비스명

SCAN 명: port번호, 서비스명

  • 자동으로 접속 시 failover, loadbalance를 실행
  • node 추가 / 삭제 시에도 설정 변경은 불가
  • 물리적인 서버에 의존하지 않는 접속

  • 하나의 alias로 access 가능
  • 서비스가 어느 한 쪽 서버에 배치되어 있어도, 같은 설정으로 접속이 가능
  • tnsnames.ora: scan명, port번호, service명 -> 항상 하나의 scan명으로 접속 가능
    • SCAN이 각 서비스로의 접속을 자동적으로 REDIRECT

SCAN을 사용하여 접속한 경우의 이점

  1. 자동으로 접속 시 failover (명시적인 설정은 불필요)
  2. RAC 인스턴스간에 자동적으로 분산하여 접속 (server side load balancing)
  3. DNS Server와 연계하여 node 추가, 삭제 시에도 client 서버의 접속 설정의 변경은 불필요함
MYDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = scan.example.com)(PORT = 1521)) -- HOST: SCAN명을 사용하여 연결
    ) -- PORT: SCAN 리스너가 사용하는 포트
    (CONNECT_DATA =
      (SERVICE_NAME = myservice) -- SCAN을 통해 연결할 서비스
    )
  )

Grid Plug and Play (GPnP)

  • 노드 고유의 설정을 배제하는 것으로, cluster 구성의 변경이나 관리를 용이하게 함
  • 노드의 추가, 삭제 시 수동조작의 배제
    • human error의 방지
    • 보다 대규모의 cluster 구성 시에 용이하게 사용됨

GPnP의 구성 요소

  • Dynamic Host Configuration Protocol (DHCP)의 support
  • Single Client Access Name (SCAN)
  • Grid Naming Service (GNS)
    • cluster의 node명, scan명, vip를 동적으로 관리
    • dhcp 서버와 통합하여 ip address 할당하는 것을 자동화
    • client 접속관리를 간소화하여, network 구성 변경 시의 영향을 최소화함

DHCP

  • 네트워크에 접속하는 클라이언트 장치(PC, 스마트폰, 서버 등)에 자동으로 IP 주소와 네트워크 설정을 할당하는 프로토콜

  • 수동으로 네트워크 설정을 입력하는 Static IP(고정 IP) 방식과 달리, DHCP를 사용하면 IP 주소를 자동으로 할당하고, 중복 충돌을 방지

ACFS (Oracle ASM Cluster File System)

  • 확장성에 우수한 범용적인 file system
    • 일반 파일 시스템처럼 사용가능: OS에서 마운트하여 일반적인 파일, 로그, 백업 파일 등을 저장 가능
  • RAC 환경에서 파일 공유 및 데이터 저장소 역할
  • NAS 프로토콜(NFS, CIFS)에서의 접속 가능
    • NAS처럼 원격에서 접근 가능 << ??
  • ACFS Snapshot 기능 : 과거 데이터 복구 및 백업 지원
    • 특정 시점의 파일 시스템 상태를 읽기 전용(또는 읽기/쓰기 가능)으로 캡쳐하여 저장하는 기능
    • 변경된 블록만 저장(효율적)
  • TDE(Transparent Data Encryption)지원: 파일 시스템 단위에서 데이터 암호화 가능
┌──────────────────────────────────┐
│       ACFS 파일 시스템          │
│  (Oracle ADVM을 통해 관리됨)    │
└──────────────────────────────────┘
          │
          ▼
┌───────────────────────────────────────┐
│  ASM Dynamic Volume Manager (ADVM) │ -- ASM 볼륨을 관리하는 계층
└───────────────────────────────────────┘
          │
          ▼
┌───────────────────────────────────┐
│      ASM 디스크 그룹 (DATA)      │
└───────────────────────────────────┘

ACFS Snapshot 동작 방식

1. ACFS 볼륨 생성

# ASM 디스크 그룹에서 ACFS 볼륨 생성 (50GB)
asmcmd volcreate -G DATA -s 50G acfs_vol

# ACFS 파일 시스템 생성
mkfs -t acfs /dev/asm/acfs_vol-123

# 마운트 포인트 생성
mkdir /acfs_data

# ACFS 마운트
mount -t acfs /dev/asm/acfs_vol-123 /acfs_data

2. 스냅샷 생성

# 스냅샷 생성 (읽기 전용)
acfsutil snap create snap1 /acfs_data

# 읽기/쓰기 가능한 스냅샷 생성 (옵션 추가)
acfsutil snap create -w snap_rw1 /acfs_data

3. 파일이 변경되면 스냅샷에 변경 전 데이터 저장

# 현재 존재하는 스냅샷 목록 확인
acfsutil snap info /acfs_data

4. 스냅샷을 통해 원래 데이터를 복구 가능

Snapshot Name: snap1
Snapshot ID: 12345
Creation Time: 2024-02-02 10:00:00
State: Read-Only

0개의 댓글