목적 : MSSQL 서버(Azure)에 있는 데이터를 Airbyte EC2(AWS)를 활용하여 Snowflake 에 저장하기
TODO : MSSQL 서버의 TCP 1433 포트를 Airbyte가 설치된 EC2에서 접근 가능하도록 설정
MSSQL은 기본적으로 Shared Memory, Named Pipes, TCP/IP 등의 네트워크 프로토콜을 사용할 수 있음.
기본적으로 MSSQL은 로컬에서만 접속 가능한 Shared Memory 방식을 사용하는데,
외부(Airbyte AWS EC2)에서 네트워크를 통해 접근하려면 TCP/IP 프로토콜을 활성화 해야함.
💡 즉, TCP/IP를 활성화해야 MSSQL이 네트워크를 통해 외부에서 접속할 수 있음!
[TCP/IP 프로토콜 활성화]
1. SQL Server Configuration Manager 실행
2. SQL Server Network Configuration → Protocols for [인스턴스명] 선택
3. TCP/IP → Enabled로 설정
4. TCP/IP 속성 설정
Azure의 MSSQL 서버는 기본적으로 퍼블릭 네트워크 차단이 되어 있어서, 외부에서 접속하려면 방화벽 규칙을 수정해야 함.
[Azure 환경에서 MSSQL 서버 방화벽 열기]
1. Azure 포털 접속 → SQL Databases 선택
2. 연결할 데이터베이스 클릭
3. "Set server firewall" (서버 방화벽 설정) 클릭
4. "Allow Azure services and resources to access this server" 옵션 ON
5. Airbyte가 설치된 EC2의 퍼블릭 IP 추가
Airbyte가 설치된 EC2에서 MSSQL이 설치된 외부 서버에 접속할 수 있도록 EC2 보안 그룹에서 아웃바운드 규칙을 확인.
🔹 인바운드(Inbound) 규칙
🔹 아웃바운드(Outbound) 규칙
EC2와 MSSQL 서버 간 네트워크 연결(VPC Peering, VPN, Private Link 등) 설정
✅ VPC Peering이 필요한 경우
- MSSQL이 Azure Virtual Network (VNet) 내부의 Private IP를 사용하고 있음.
- Airbyte가 설치된 EC2는 AWS VPC 내에 있음.
- AWS VPC와 Azure VNet이 서로 다른 네트워크에 있어 직접 통신이 불가능함.
📌 VPC Peering 설정 방법
1. Azure VNet과 AWS VPC의 CIDR 범위를 확인
- Azure VNet CIDR: 예) 10.1.0.0/16
- AWS VPC CIDR: 예) 10.2.0.0/16
- 두 네트워크가 겹치지 않도록 CIDR을 설정.
- AWS에서 VPC Peering 생성
- AWS 콘솔 → VPC → Peering Connections → Create Peering Connection
- VPC 요청자: AWS VPC 선택
- VPC 수락자: Azure VNet (수동 입력 필요)
- Azure에서 Peering 승인
- Azure Portal → Virtual Network → Peering → Add Peering
- Peering Name: AWS-Peering
- Peered VPC ID 입력 (AWS에서 생성한 Peering ID)
- Enable Traffic Forwarding 설정
- AWS와 Azure에서 라우팅 테이블 수정
- AWS Route Table에서 Azure VNet CIDR로 트래픽 전달하도록 설정
- Azure Route Table에서도 AWS VPC CIDR로 트래픽 전달하도록 설정
✅ VPN이 필요한 경우
- MSSQL 서버가 Azure VNet에 있지만 퍼블릭 IP 없이 Private IP로만 접근 가능.
- AWS EC2에서 VPN을 통해 Azure 네트워크로 접속해야 함.
📌 AWS와 Azure 간 VPN 연결 방법
1) Azure Portal → Virtual Network Gateway 생성이름: Azure-VPN-Gateway 가상 네트워크(VNet) 선택 Gateway Type: VPN SKU: VpnGw1 이상 선택 Public IP 생성2) Local Network Gateway 생성 (AWS 정보 입력)
이름: AWS-Local-Network-Gateway IP Address: AWS의 Customer Gateway IP 입력 Address Space: AWS VPC CIDR 입력3) AWS 콘솔 → VPC → Site-to-Site VPN Connections
Virtual Private Gateway (VGW) 생성 Customer Gateway 생성 (Azure VPN Gateway Public IP 입력) Site-to-Site VPN Connection 생성 Tunnel 설정 시 Azure의 Local Network Gateway 정보 입력4) 라우팅 테이블 업데이트
AWS Route Table: Azure VNet CIDR로 VPN Gateway로 라우팅 추가 Azure Route Table: AWS VPC CIDR로 VPN Gateway로 라우팅 추가
이 방법으로 진행.
✅ PrivateLink가 필요한 경우
- MSSQL 서버를 Azure에서 Private Endpoint로 노출해야 하는 경우
- AWS EC2가 Azure Private Endpoint를 통해 접근해야 하는 경우
📌 PrivateLink 설정 방법
1) Azure에서 Private Endpoint 생성
- Azure Portal → Private Link → Private Endpoint 생성
- MSSQL 서버의 Private Endpoint를 생성
- DNS 구성 변경
2) AWS에서 PrivateLink 사용하여 접근
- AWS에서 VPC Endpoint를 생성하여 Azure Private Endpoint에 연결
- AWS EC2가 VPC Endpoint를 통해 MSSQL 서버에 연결
$ telnet MSSQL_SERVER_IP 1433