GA(Global Accelerator) 개념
GA는 클라이언트가 “가속 IP 또는 CNAME”으로 접속하면, 트래픽을 가장 가까운 알리바바 클라우드 전송 네트워크의 접속 지점(Access Point/POP)으로 먼저 받아서, 그 뒤 알리바바 글로벌 전송 네트워크를 통해 백엔드(오리진)까지 전달해 주는 네트워크 가속 서비스입니다.
추가로 GA는 캐싱(CDN처럼 콘텐츠 저장) 기능은 없습니다.
구성요소(표준 Standard GA 기준)
GA에서 “가속이 실제로 동작”하려면 최소 아래 구성이 필요합니다.
- Acceleration Area / Acceleration Region(가속 지역) “사용자가 어디서 접속하느냐(진입)”에 맞춰 설정하는 영역/리전입니다.
- Accelerated IP Address Type(가속 IP 타입)
- EIP 타입: 가속 리전별로 EIP가 붙는 방식
- Anycast EIP 타입: 더 자동 근접 접속 성격 (가속 지역 지정 방식이 달라짐)
- Listener(리스너): TCP/UDP/HTTP/HTTPS 수신 규칙(포트, 라우팅 등)
- Endpoint Group(엔드포인트 그룹): 백엔드가 있는 “리전 단위 묶음”
- Endpoint(엔드포인트): 실제 오리진(ECS/SLB/ALB/NLB/ENI/Custom IP/도메인 등)
참고: Basic GA는 “가속 IP로만 접속하는 단순 포인트-투-포인트” 성격이고, Standard는 Listener/Endpoint Group 등 구성이 더 풍부합니다.
트래픽 흐름(네가 이해한 흐름을 “정식 용어”로)
- Client(예: 대한민국 사용자)
- DNS: 내 도메인 → (CNAME 레코드) → GA가 제공한 ga-xxxx.aliyunga… 호스트명
- 그 GA 호스트명은 DNS에서 **A 레코드(가속 IP들)**로 해석됨
- 클라이언트는 가속 IP 중 하나로 접속 → 근접 POP/Access Point로 유입
- POP에서 Listener 규칙 적용 → (알리바바 전송 네트워크) → Endpoint Group 리전으로 전달
- Endpoint Group에서 오리진으로 연결 생성/전달 → Endpoint(오리진)
여기서 중요한 포인트 2개:
- 가속 IP는 “클라이언트가 접속하는 입구 IP”
- Endpoint Group 화면에 보이는 IP들은 “클라이언트용 IP”가 아니라 오리진으로 나갈 때 쓰는 IP 풀(아래 참고)
💡참고 사항
“가속 IP 2개”가 생기는 이유
Pay-as-you-go Standard GA에서 EIP 타입을 쓰면, 가속 리전(Acceleration Region)마다 accelerated IP(EIP)가 2개 할당되고 둘 다 동시에 트래픽을 받을 수 있게 설계되어(HA) 2개가 보이는 게 정상입니다.
https://www.alibabacloud.com/help/en/ga/user-guide/overview-1/
“Default Endpoint Group에 IP가 4개” 보이는 이유
Endpoint를 Endpoint Group에 추가하면 GA가 최소 4개의 “endpoint group IP address”를 할당할 수 있고, 콘솔에서 그 수를 확인할 수 있다고 명시되어 있습니다.
이 IP들은 주로:
- 오리진 보안그룹/방화벽 allowlist 설계할 때 참고하거나
- 오리진에서 “어떤 소스 IP로 들어오냐”를 확인할 때 의미가 있습니다.
(다만, 오리진 보안그룹이 이미 0.0.0.0/0 등으로 열려 있으면 따로 등록 안 해도 접속은 됩니다.)
설정 절차(콘솔 기준, Standard + Pay-as-you-go)
Step 1) Standard GA 인스턴스 생성
- Billing: Pay-as-you-go
- Accelerated IP Address Type 선택(EIP / Anycast EIP)
- (EIP 타입이면) Acceleration Area/Region과 대역폭(최소값/범위 제약 있음) 설정
비용 구조는 Pay-as-you-go Standard 기준 instance fee + CU fee + data transfer fee로 안내됩니다.
Step 2) Listener 생성
- Protocol(TCP/UDP/HTTP/HTTPS), Port 범위 지정
- 포트 범위는 엔드포인트 수/포트 수에 따라 충분히 넓어야 생성이 됩니다(문서에 산식 예시 있음).
- Port Mapping은 “포트 변환이 필요할 때만” 추가합니다.
- 리스너 포트와 백엔드 포트가 같다면 보통 매핑 없이 그대로 포워딩되므로, “80→80” 같은 매핑은 의미가 없어 UI에서 막히는 경우가 많습니다.
Step 3) Endpoint Group 생성
- Endpoint Group Region: 예) 싱가포르
- (멀티 그룹이면) Traffic Distribution Ratio로 분배 가능
- Health Check 설정(필요 시)
Step 4) Endpoint 추가
- ECS / SLB / ALB / NLB / ENI / Custom IP / 도메인 등에서 선택
- Weight로 분산/제외(0이면 제외)
- 지원 형태는 API/가이드에 정리되어 있습니다.
Step 5) DNS 연결(도메인 붙이기)
- 일반적으로 내 서비스 도메인(www 등) → CNAME → ga-xxxx.aliyunga… 로 설정합니다.
- 그러면 그 ga-xxxx 호스트명이 다시 A 레코드(가속 IP 2개 등)로 해석되어 접속이 이뤄집니다.
루트 도메인(@)은 DNS 사업자 정책상 CNAME이 안 되는 경우가 있어, 그땐 ALIAS/ANAME 또는 A 레코드 방식 등으로 우회합니다(이 부분은 DNS 제공자 기능에 따라 달라요).
네트워크 속도 검증
cat > ga_vs_origin.sh <<'EOF'#!/usr/bin/env bashset -euo pipefailGA_HOST="${GA_HOST:-ga-bp1hs....aliyunga0017.com}" # GA CNAME 입력ORIGIN_IP="${ORIGIN_IP:-47.253.X.X}" # origin server 입력URL_PATH="${URL_PATH:-/}" # 예: /healthN="${N:-30}"CONNECT_TIMEOUT="${CONNECT_TIMEOUT:-2}"MAX_TIME="${MAX_TIME:-5}"# URL_PATH normalize[[ "$URL_PATH" == /* ]] || URL_PATH="/$URL_PATH"GA_URL="<http://$>{GA_HOST}${URL_PATH}"ORIGIN_URL="<http://$>{ORIGIN_IP}${URL_PATH}"echo "GA_URL = $GA_URL"echo "ORIGIN_URL = $ORIGIN_URL"echoFMT='connect=%{time_connect} ttfb=%{time_starttransfer} total=%{time_total}\\n'run() { local label="$1" url="$2" out="$3" echo "== $label ==" : > "$out" for ((i=1; i<=N; i++)); do curl -sS -o /dev/null --no-keepalive -H 'Connection: close' --connect-timeout "$CONNECT_TIMEOUT" --max-time "$MAX_TIME" -w "$FMT" "${url}?t=${i}" >> "$out" done echo}stat_one() { local file="$1" metric="$2" awk -v m="$metric" '{for(i=1;i<=NF;i++){split($i,a,"="); if(a[1]==m) print a[2];}}' "$file" | sort -n | awk -v m="$metric" ' {a[NR]=$1} END{ n=NR; if(n==0){print m": no data"; exit} sum=0; for(i=1;i<=n;i++) sum+=a[i] idx50=int(n*0.50+0.5); if(idx50<1) idx50=1; if(idx50>n) idx50=n idx95=int(n*0.95+0.5); if(idx95<1) idx95=1; if(idx95>n) idx95=n avg=sum/n; p50=a[idx50]; p95=a[idx95]; mn=a[1]; mx=a[n] printf("%s n=%d avg=%.6fs(%.1fms) p50=%.6fs(%.1fms) p95=%.6fs(%.1fms) min=%.6fs max=%.6fs\\n", m, n, avg, avg*1000, p50, p50*1000, p95, p95*1000, mn, mx) }'}report() { local label="$1" file="$2" echo "---- $label summary ----" stat_one "$file" connect stat_one "$file" ttfb stat_one "$file" total echo}run "GA" "$GA_URL" ga.txtrun "ORIGIN" "$ORIGIN_URL" origin.txtreport "GA" ga.txtreport "ORIGIN" origin.txtecho "Raw logs: ga.txt, origin.txt"EOFchmod +x ga_vs_origin.shbash ./ga_vs_origin.sh
댓글 남기기