[02] 하드웨어 관점의 RAC 아키텍처

RAC 아키텍처를 정확히 이해하기 위해서는 하드웨어 (및 OS)에 대한 지식이 필요합니다. 아키텍처와 관련된 자료들을 보면 NIC, VIP, Private Network, Interconnect Switch, NIC Bonding, SAN, Multipath IO, HBA 등의 용어들을 자주 접하게 됩니다. 영문으로 될 글을 읽을 때 단어를 잘 모르면 전반적인 맥락은 이해하더라도 정확한 해석이 힘든 것과 마찬가지로, RAC를 이해함에 있어서 이러한 용어들에 대한 이해는 반드시 필요하다고 할 수 있습니다. 하드웨어 관련된 구성에 있어서는 문외한에 가깝지만, 며칠 동안 여러가지 자료를 이용해서 학습한 내용을 바탕으로 하드웨어 관점에서의 RAC 아키텍처를 정리하도록 하겠습니다.

2. 하드웨어 관점의 RAC 아키텍처

2-1. 기본 구성도


엔터프라이즈 환경에서 단순하게(이중화 구성 없이) RAC를 구성하는 방법은 “그림-1”과 같습니다. 즉, 하드웨어 관점에서의 RAC 아키텍처는 2개의 DB 서버, 이더넷 스위치 1개, Gigabit 스위치 1개, SAN 스위치 1개, 공유 디스크용 스토리지 1개로 구성됩니다.
그림-1. RAC 기본 구성도

01__%ea%b8%b0%eb%b3%b8%ea%b5%ac%ec%84%b1%eb%8f%84

 

다음은 기본 구성도와 관련된 용어 설명입니다.

  • NIC (Network Interface Card): DB 서버를 이더넷 스위치에 연결하기 위한 케이블을 꼽는 장치
  • HBA (Host Bus Adapter): DB 서버를 SAN 스위치에 연결하기 위한 케이블을 꼽는 장치
  • Fast Ethernet 스위치: 초당 100 Mbps (12.5Mbyte)의 대여폭을 제공하는 스위치
  • Gigabit 스위치: 초당 1000 Mbps (125 Mbyte) 이상의 대여폭을 제공하는 스위치
  • SAN 스위치: SAN (Storage Arrary Network)에 액세스하기 위한 스위치

2.2 Public IP, Private IP, SCAN IP, VIP의 차이점


  • Public IP: 외부에서 접속 가능한 IP입니다. 주로 DBA 또는 시스템 관리자가 관리 목적으로 DB 서버에 접속할 때 사용합니다.
  • Private IP: DB 서버 간의 Interconnect 통신만을 위해서 사용되는 IP입니다.
  • VIP: DB 서버 장애 발생 시, Fail-Over 목적으로 사용되는 가상 IP입니다. Public IP가 할당된 NIC에 설정됩니다. Public IP가 할당된 NIC가 eth0이라면, VIP는 eth0:1로 설정됩니다.
  • SCAN (Single Client Access Name): VIP를 이용해서 클라이언트 쪽의 TNANAMES.ORA 파일을 설정하면, RAC 노드를 추가하거나 삭제할 때 마다 TNSNAMES.ORA 파일을 수정해야하는 문제점을 가지고 있었습니다. SCAN은 이러한 문제를 해결하기 위해서 11gR2부터 제공되는 기능이며, SCAN IP는 VIP와 마찬가지로 Public IP가 할당된 NIC에 설정됩니다.

2.3 DB 서버 장애 시 VIP, SCAN IP Fail-Over


DB 서버(#1)에 장애가 발생할 경우, SCAN IP(1), SCAN IP(2) 및 VIP는 DB 서버(#2)의 NIC 0에 설정됩니다. 즉, “그림-2″와 같이 설정됩니다.

그림-2. DB 서버 장애 시, IP Fail-Over

02__%eb%85%b8%eb%93%9c_fail_%ea%b5%ac%ec%84%b1%eb%8f%84

이때 DB 서버(#2)에서 ifconfig 명령어를 수행하면 다음과 같은 결과가 출력됩니다.

# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.72  Bcast:192.168.56.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe15:d5d0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:17574 errors:0 dropped:0 overruns:0 frame:0
TX packets:8014 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16092152 (15.3 MiB)  TX bytes:4412947 (4.2 MiB)
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.82  Bcast:192.168.56.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:2    Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.91  Bcast:192.168.56.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:3    Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.81  Bcast:192.168.56.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:4    Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.92  Bcast:192.168.56.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:5    Link encap:Ethernet  HWaddr 08:00:27:15:D5:D0
inet addr:192.168.56.93  Bcast:192.168.56.255  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth1      Link encap:Ethernet  HWaddr 08:00:27:27:95:03
inet addr:192.168.10.2  Bcast:192.168.10.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe27:9503/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:432318 errors:0 dropped:0 overruns:0 frame:0
TX packets:522063 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:250003557 (238.4 MiB)  TX bytes:380719952 (363.0 MiB)
eth1:1    Link encap:Ethernet  HWaddr 08:00:27:27:95:03
inet addr:169.254.240.162  Bcast:169.254.255.255  Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth2      Link encap:Ethernet  HWaddr 08:00:27:0C:B7:19
inet addr:10.0.4.15  Bcast:10.0.4.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe0c:b719/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:53 errors:0 dropped:0 overruns:0 frame:0
TX packets:114 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8652 (8.4 KiB)  TX bytes:17465 (17.0 KiB)

참고로 /etc/hosts 파일의 내용은 다음과 같습니다.

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain <
#public
192.168.56.71   rac1        rac1.dbaora.com
192.168.56.72   rac2        rac2.dbaora.com
#private
192.168.10.1    rac1-priv   rac1-priv.dbaora.com
192.168.10.2    rac2-priv   rac2-priv.dbaora.com
#virtual
192.168.56.81   rac1-vip    rac1-vip.dbaora.com
192.168.56.82   rac2-vip    rac2-vip.dbaora.com
#scan
192.168.56.91   rac-scan    rac-scan.dbaora.com
192.168.56.92   rac-scan    rac-scan.dbaora.com
192.168.56.93   rac-scan    rac-scan.dbaora.com

2-4. 가용성을 높이기 위한 이중화 구성도


높은 가용성 (Availability)을 위해서는 SPOF (Single Point Of Failure)를 최대한 제거해야만 합니다.

SPOF란?
시스템 구성 요소 중에서, 동작하지 않으면 전체 시스템이 중단되는 요소를 의미합니다. (위키백과)
위키-단일장애점(single point of failure, SPOF)

SPOF를 제거하기 위해서는 이중화가 필수적입니다. RAC에서의 이중화 방법은 “그림-3”과 같습니다. 즉, 스위치 장애를 대비하기 위해서 스위치를 이중화하고, 네트워크 케이블 불량에 대비하기 위해서 “NIC Bonding”을 구성하고, IO 채널 불량에 대비하기 위해서 “Multipath IO”를 구성합니다.

그림-3. 이중화를 적용한 RAC 구성도

03__%ec%9d%b4%ec%a4%91%ed%99%94%ea%b5%ac%ec%84%b1%eb%8f%84

NIC Bonding이란?
2개 이상의 NIC를 하나의 디바이스로 인식하게 하는 방법입니다. 대여폭을 확장하거나 Active / Standby 형태로 구성할 수 있습니다. Multipath IO (MPIO)란?
공유 디스크용 스토리지를 액세스하기 위한 경로가 2개 이상인 것을 의미합니다. IO 채널 불량에 대한 fault-tolerance 및 로드 밸런싱을 통한 성능 향상을 목적으로 합니다.

글을 마치며


하드웨어 구성을 정리하다 보니, SCAN에 대해서 조금 더 자세히 정리할 필요성을 느꼈습니다. “RAC 연재”의 다음 주제는 “SCAN”으로 찾아 뵙겠습니다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s