OracleDB/Concept

SCAN IP/Listener 란?

대끄블 2024. 1. 10. 10:38

SCAN(Single Client Access Name)은 Virtual IP address에 사용되는 이름(ex. node1-vip)과 유사한 Virtual IP Name입니다. 하지만 VIP와는 달리 개별 노드가 아닌 전체 클러스터와 연결되며, 하나의 address가 아닌 multiple IP address와 연결됩니다.

 

SCAN은 public client connections을 처리하는 클러스터의 multiple IP address를 확인합니다. Client가 request하면 SCAN IP Address에서 listening하는 SCAN Listener와 Port가 Client에게 제공됩니다. Cluster의 모든 서비스는 SCAN Listener 에 등록되어 있으므로 SCAN Listener는 현재 서비스가 제공되고 있는 로드가 가장 적은 노드의 Local  Listener Address로 응답합니다. 최종적으로 Client는 서비스가 제공되는 노드의 Listener를 통해 서비스에 대한 Connection을 설립합니다. 이러한 모든 작업은 Client에 필요한 명시적인 구성없이 투명하게 수행됩니다.

 

SCAN Listener는 설치 중에 같이 생성됩니다. SCAN Listener는 SCAN IP Address를 수신하고, Clusterware에 의해 결정된 노드에서 시작됩니다. 서비스를 제공하는 가장 부하가 적은 인스턴스로 AP request를 라우팅합니다. SCAN Address는 Cluster의 노드 Address가 아닌 Cluster로 확인되기 때문에, SCAN Address configuration에 영향 없이 Cluster에 노드를 add/remove 할 수 있습니다. 

 

Oracle은 고가용성과 확장성을 위해 3개의 IP Address로 확인되도록 구성할 것을 권장합니다. 

 

즉, Client는 하나의 IP Address를 가지고 Cluster의 모든 노드로 접속이 가능합니다. 다만, SCAN Listener는 로드가 가장 적은 인스턴스의 Local Listener로 connection request를 알아서 redirect하여 서비스를 제공합니다. 

 

그렇다면 기존에 사용하던 방식(Local Listener와 VIP를 통한 접속)이 필요없는걸까요?

아니요! 아래 그림처럼 SCAN Listener는 Local Listener를 통해 서비스에 접속하기 때문에 Local Listener는 여전히 구성되어야 합니다. 또한 기존처럼 VIP를 통한 접속은 여전히 사용 가능합니다.

How does SCAN work?

 

 

Oracle RAC를 구성한 직후 상태 조회

  • CRS Resource
[+ASM1:/home/grid $ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       test1               STABLE
               ONLINE  ONLINE       test2               STABLE
...
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
...
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       test2               STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       test2               STABLE
ora.vb61rac191.vip
      1        ONLINE  ONLINE       test1               STABLE
ora.vb62rac192.vip
      1        ONLINE  ONLINE       test2               STABLE
--------------------------------------------------------------------------------

 

  • SCAN Listener 관련 조회
[+ASM2:/home/grid $ lsnrctl status LISTENER_SCAN1

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 10-JAN-2024 10:31:08

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SCAN1
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                10-JAN-2024 10:06:38
Uptime                    0 days 0 hr. 24 min. 30 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /........./listener.ora
Listener Log File         /........./listener_scan1/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXX.XXX.X.XXX)(PORT=XXXX)))
Services Summary...
Service "TEST19" has 2 instance(s).
  Instance "TEST191", status READY, has 1 handler(s) for this service...
  Instance "TEST192", status READY, has 1 handler(s) for this service...
Service "TEST19XDB" has 2 instance(s).
  Instance "TEST191", status READY, has 1 handler(s) for this service...
  Instance "TEST192", status READY, has 1 handler(s) for this service...
The command completed successfully

[+ASM2:/home/grid $ srvctl config scan
SCAN name: test-scan, Network: 1
Subnet IPv4: xxx.xxx.x.xxx/xxx.xxx.xxx.x/enp0s3, static
Subnet IPv6: 
SCAN 1 IPv4 VIP: xxx.xxx.x.xxx
SCAN VIP is enabled.
[+ASM2:/home/grid $ srvctl config scan_listener
SCAN Listeners for network 1:
Registration invited nodes: 
Registration invited subnets: 
Endpoints: TCP:xxxx
SCAN Listener LISTENER_SCAN1 exists
SCAN Listener is enabled.

SQL> show parameter remote_listener

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_listener                      string       test-scan:xxxx

 

 

참고: https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/about-the-scan.html#GUID-8E81B3AA-B807-4BE0-90AB-925BAA332CF6

 

Grid Infrastructure Installation and Upgrade Guide

Oracle Database clients connect to the database using a Single Client Access Name (SCAN).

docs.oracle.com

 

'OracleDB > Concept' 카테고리의 다른 글

FRA(Fast Recovery Area)란?  (1) 2024.09.12
RMAN 에서 Incarnation이란?  (0) 2024.07.05
SGA - Database Buffer Cache  (0) 2023.07.10
SQL 처리 과정  (0) 2023.05.18
Oracle Block  (0) 2023.02.16