OCI에서 DBCS의 내부 IP와 중복된 IP를 사용하는 경우 부하 균형기로 회피하는 방법

OCI(Oracle Cloud Infrastructure)의 Database Cloud 서비스(이하 DBCS라고 함)에는 Oracle Clousterware가 개인적으로 상호 연결하여 사용하는 내부 IP가 있다.(이하 내부 IP라고 함)
https://docs.oracle.com/ja-jp/iaas/Content/Database/Tasks/network.htm
IP 주소 공간 요구 사항
금속 또는 가상 머신 DB 시스템을 호스팅하는 서브넷은 데이터베이스 인스턴스의 Oracle Clusterware 개인 상호 연결에 사용되는 192.168.16/28과 중복될 수 없습니다.
이 문서는 오류가 있어서 192.168.16.18/24를 정확하게 사용합니다.
일반적인 회피 정책은 매뉴얼에서 보듯이 IP 주소 공간이 중복되지 않도록 네트워크를 구성한다.
그러나 사내 환경 등에 이미 같은 주소 공간이 사용된 상황에서 주소 체계를 변경하는 것도 쉬운 일이 아니다.
IP 주소 공간이 중복되는 것은 좋지 않지만 실제 위해의 관점에서 보면 중복된 주소 공간에 속하는 기기와 직접 소통하지 않으면 문제가 발생하지 않는다.
예를 들어 IP 주소가 192.168.16.1인 클라이언트에서 DBCS에 접근하면 의사소통이 불가능하지만 중간에 앱 서버가 끼면 시스템이 문제없이 작동한다.
프록시 같은 기기를 통해 의사소통을 하면 의사소통이 가능하다는 얘기다.
Oracle Database의 기능으로 볼 때 Connection Manager는 그것에 해당하지만, 더욱 저렴하고 간단하게 구축할 수 있는 회피 전략으로 마운트·평형기 회피 방법을 기록한다.
0. 환경 확인
이번에는 다음과 같은 환경에서 검증을 진행했다.

같은 가상 클라우드 네트워크(VCAN)에 DBCS와 Clamp의 Compute가 존재합니다.
Compute는 DBCS 내부 IP와 중복된 서브넷(192.168.16.0/24)에 속합니다.
1. 고객에서 DBCS로 직접 연결
먼저 고객으로서의 Compute에서 DBCS로 직접 연결해 보십시오.
고객 인터페이스.ora에서 DBCS의 IP 주소를 설정합니다.
privatedb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DB19c_db19c.sub11150127121.vcn2.oraclevcn.com)
    )
  )
SQL*Plus로 연결해 보십시오.
[opc@develop ~]$ sqlplus system/xxxxxxxxxxxx@privatedb

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Nov 25 09:45:40 2021
Version 19.10.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

ERROR:
ORA-12170: TNS:Connect timeout occurred
시간 초과 중 오류가 발생하여 연결할 수 없습니다.
DBCS에서 클라이언트의 IP 주소가 내부 IP 주소로 인식돼 회신이 없었던 것으로 추정된다.
2. 로드 밸런서 만들기
2-1.로드 밸런서 만들기
우선 부하 균형기를 만든다.
OCI 콘솔의 왼쪽 위 세 줄 메뉴에서 네트워크 로드 밸런스를 선택합니다.

[로드 밸런서 만들기] 버튼을 눌러 만들기 마법사를 시작합니다.
로드 밸런서 유형 선택 화면에서 [로드 밸런서 만들기] 버튼을 눌러 로드 밸런서 유형을 선택합니다.

'상세 추가' 화면에 임의의 부하 균형기 이름을 지정하고 이번에는 개인 네트워크이기 때문에 가시성 유형을 '개인' 으로 설정합니다.
image.png
대역폭을 설정하려면 아래로 스크롤합니다.
[동적 모양]은 더 이상 미래를 지원하지 않습니다. [부드러운 모양]을 선택하십시오.
필요한 경우 최소 및 최대 대역폭을 설정합니다.

다시 아래로 스크롤하여 부하 평형기가 속하는 네트워크를 설정합니다.

[다음] 버튼을 눌러 [백엔드 선택] 화면으로 이동합니다.
우선 부하 균형 정책을 설정한다.
이번 목적은 프록시 서버로서 역할을 발휘하는 것이다. 백엔드 서버는 데이터베이스를 구상했기 때문에 기본적인'가권 순환'이다.(백엔드를 추가하지 않음(나중에 설정)

아래로 스크롤하여 상태 점검 정책을 설정합니다.
프로토콜은 DBCS의 연결 포트에 포트를 설정하는 TCP를 선택합니다.
이번에는 Oracle Database의 기본 "1521"을 설정합니다.

확장 옵션의 표시 링크에 따라 백엔드 세트 이름을 간단한 이름으로 설정합니다.

[다음] 버튼을 눌러'청중의 구성'화면으로 들어갑니다.
임의의 청중 이름을 설정하고 '청중이 처리하는 업무 유형' 은 'TCP' 를 선택합니다.
'청취자를 통해 입구 업무를 감시하는 포트'에서 이전 화면에 설정된 DBCS의 연결 포트로 설정합니다.

[다음] 버튼을 눌러 [Logging 관리] 화면으로 이동합니다.
이번에는 오류 로그만 가져오도록 설정했습니다.

모든 설정이 완료되면 [발송] 단추를 누르면 부하 밸런스를 만듭니다.
백엔드 세트가 설정되어 있지 않으므로 상태 점검이 불완전합니다.

2-2.백엔드 서버 추가
백엔드 구성 요소에 DBCS를 추가합니다.
부하 균형기 상세 화면 왼쪽 아래에 있는 자원 메뉴에서 '백엔드 집합' 을 선택하고 방금 만든 백엔드 집합을 선택하십시오.

백엔드 세트의 세부 정보 화면 왼쪽 아래에 있는 리소스 메뉴에서 [백엔드]를 선택하고 [백엔드 추가] 버튼을 클릭합니다.

백엔드의 추가 화면에서 'IP 주소' 를 추가 방법으로 선택하여 DBCS의 개인 IP와 포트를 설정합니다.(포트에서 DBCS로 설정된 연결 포트)

[추가] 버튼을 누르면'작업 요청 전송됨'대화 상자가 표시되며 잠시 기다리면'수신됨'에서'성공'으로 상태가 바뀝니다.


묶으면 백엔드 건강 상태가'OK'로 바뀐다.(몇 분 소요)

부하 밸런스의 상세 화면으로 돌아가면 건강검진이'OK'로 바뀌었다는 것을 알 수 있다.(여기도 반영되어 시간이 좀 불안정할 수 있습니다.)

화면에 있는 로드 밸런서의 IP 주소를 미리 제어합니다.
3. 클라이언트에서 DBCS로 로드 밸런서 연결
이번에는 고객으로서의 Compute에서 제작된 부하 밸런스를 통해 DBCS에 연결해 봅시다.
고객 인터페이스.ora에서 부하 밸런서의 IP 주소를 설정합니다.
lb_privatedb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.173)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DB19c_db19c.sub11150127121.vcn2.oraclevcn.com)
    )
  )
SQL*Plus로 연결해 보십시오.
[opc@develop ~]$ sqlplus system/xxxxxxxxxxxx@lb_privatedb

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Nov 25 09:48:49 2021
Version 19.10.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Last Successful login time: Wed Nov 17 2021 09:14:14 +00:00

Connected to:
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.11.0.0.0

SQL>
로드 밸런서를 사용하면 DBCS 내부 IP와 중복된 클라이언트도 DBCS에 연결할 수 있습니다.
주의점
로드 밸런서에는 TCP 청중의 기본값이 300초인 유휴 시간 초과 설정이 있습니다.
로드 밸런스를 제작할 때 청중으로 구성된 확장 옵션을 설정하거나 제작된 청중 편집에서 시간 초과를 설정할 수 있으므로 필요에 따라 변경하십시오.

좋은 웹페이지 즐겨찾기