Fastly Agent
개요
Fastly의 Compute 환경에서 NetFUNNEL과 유기적으로 통합되어, 사용자 요청이 발생하는 최전선에서 실시간으로 대기열을 제어합니다.
Compute Service 설정
Compute Service 생성
- Fastly 콘솔에서 [Compute]로 이동합니다.
- 우상단의 [Create service]를 클릭합니다.
- [+ Use starter kit]를 선택합니다.
- [Service name]에 이름, [Add your own domain]에 compute를 적용할 도메인을 입력하고 [Next: Choose a starter kit]를 클릭합니다.
- Default starter for Rust를 선택하고 [Finalize and deploy]를 클릭합니다.
CNAME 등록
- Deploy가 완료되면 Additional setup의 Point your custom domain to Fastly를 확인해주세요.
- [Issue TLS Certification]을 클릭해주세요.
- Your DNS provider에서 도메인이 등록되어있는 서비스를 선택하고 해당 서비스에서 CNAME을 등록해주세요.
Service configuration 설정
[Edit configuration](또는 [Service configuration])을 클릭하여 [Clone version 1 (active) to edit]을 클릭합니다. (fastly compute는 수정할 때마다 새로운 버전으로 clone해야 수정이 가능합니다.)
nf_core host 생성
- Origins 메뉴를 선택하고 Hostname으로
{CLIENT_ID}.netfunnel.stclab.com을 입력하고 [Add]를 클릭합니다.- CLIENT_ID는 NetFUNNEL 콘솔에서 확인하세요.
- CLIENT_ID가 stclab-0000라면 Hostname은 stclab-0000.netfunnel.stclab.com입니다.
- 방금 생성한 host를 선택하여 Edit 페이지로 이동합니다.
- Name을 nf_core로 변경하고 [Update]를 클릭합니다.
nf_setting host 생성
- [+ Create a host]를 클릭하고 Hostname으로 nf-setting-bucket.stclab.com을 입력하고 [Add]를 클릭합니다.
- 방금 생성한 host를 선택하여 Edit 페이지로 이동합니다.
- Name을 nf_setting으로 변경하고 [Update]를 클릭합니다.
origin host 생성
- [+ Create a host]를 클릭하고 Hostname으로 원본 주소를 입력하고 [Add]를 클릭합니다.
- 방금 생성한 host를 선택하여 Edit 페이지로 이동합니다.
- Name을 origin으로 변경하고 [Update]를 클릭합니다.
Activate
- 우상단의 [Activate]를 클릭하여 저장합니다.
Config store 설정
config store 생성
- Resources 메뉴의 Config stores에서 우상단의 [+ Create store]를 클릭합니다.
- Store name을 nf_config_store로 입력하고 [Create]를 클릭합니다.
- [Add item]을 클릭하고 다음 표를 참고하여 추가합니다.
CLIENT_ID는 NetFUNNEL 콘솔에서 확인하세요.
| Key | Value |
|---|---|
| CLIENT_ID | CLIENT_ID |
config store 연결
- 상단 탭의 [Linked Services]를 선택하고 [Link service]를 클릭합니다.
- 위에서 생성한 Compute service를 선택하고 [Next]를 클릭합니다.
- [Link and activate]를 클릭합니다.
- Active Service Versions 창이 뜨면 [Confirm and activate]를 클릭합니다.
토큰 생성
- Account - API tokens - Personal tokens 메뉴로 이동합니다.
- 우상단의 [+ Create Token]을 클릭합니다.
- [Continue]를 클릭하고 다시 로그인합니다.
- Name을 입력하고 Expiration을 Never expire로 선택한 후 [Create Token]을 클릭합니다.
에이전트 배포
에이전트 파일 및 패키지 설치
- fastly CLI를 위한 패키지를 설치합니다.
brew install fastly/tap/fastly
- 문의를 통해 에이전트 파일을 다운받으세요.
toml 파일 수정
- 다운로드 받은 에이전트 파일을 압축 해제합니다.
- fastly.toml 파일을 엽니다.
- fastly 콘솔에서 compute service의 ID를 복사합니다.
- cloned_from과 service_id의 값에 복사한 ID를 넣습니다.
authors = []
cloned_from = "{SERVICE_ID}"
description = "Fastly agent for NetFUNNEL - Rust implementation"
language = "rust"
manifest_version = 3
name = "netfunnel-fastly-agent"
service_id = "{SERVICE_ID}"
compute에 에이전트 배포
- netfunnel-fastly-agent 폴더에서 터미널을 열고 아래 명령어를 입력하면 에이전트 코드가 compute로 배포됩니다.
fastly compute build
fastly compute deploy
부가 기능
Good Bot 예외 처리
User-Agent에 굿봇 식별용 키워드가 포함된 경우, 해당 요청을 에이전트 제어 대상에서 제외합니다.
config store 설정
- Resources 메뉴의 Config stores에서 에이전트에서 사용 중인 store를 선택합니다.
- [+ Add item]을 클릭하고 다음 표를 참고하여 추가합니다.
Google, Microsoft, Yahoo, Apple, Facebook 봇을 예외 처리한 예시 코드입니다.
| Key | Value |
|---|---|
| GOOD_BOTS | Googlebot, Bingbot, Slurp, Applebot, facebookexternalhit |
compute purge
- Compute 메뉴의 Compute Services에서 에이전트를 적용한 service를 선택합니다.
- [Purge]를 클릭하고 [Purge all]을 선택합니다.
- service name을 입력하고 [Purge all] 버튼을 클릭합니다.
진입 키 자동 반납 처리
NetFUNNEL 에이전트는 진입 후 발급받은 키를 자동으로 반납하여 다음 대기자가 진입할 수 있도록 처리하고 있습니다. 키를 바로 반납하지 않고 세그먼트에서 설정한 타임아웃 시간에 반납하고 싶은 경우에 사용합니다.
config store 설정
- Resources 메뉴의 Config stores에서 에이전트에서 사용 중인 store를 선택합니다.
- [+ Add item]을 클릭하고 다음 표를 참고하여 추가합니다.
| Key | Value |
|---|---|
| RETURN_KEY | true |
true(기본값)로 할 경우, 대기 완료 및 진입 후 에이전트에서 넷퍼넬 키를 자동으로 반납합니다. false로 할 경우 세그먼트에서 설정한 타임아웃 시간에 키가 반납 처리됩니다.
compute purge
- Compute 메뉴의 Compute Services에서 에이전트를 적용한 service를 선택합니다.
- [Purge]를 클릭하고 [Purge all]을 선택합니다.
- service name을 입력하고 [Purge all] 버튼을 클릭합니다.
대기실 도메인 변경
NetFUNNEL 대기실 페이지의 도메인은 agent-lib.stclab.com입니다. 해당 도메인을 서비스 중인 도메인에 맞게 변경하려면 원하는 도메인을 요청하시고, 설정에도 추가해야 합니다.
config store 설정
- Resources 메뉴의 Config stores에서 에이전트에서 사용 중인 store를 선택합니다.
- [+ Add item]을 클릭하고 다음 표를 참고하여 추가합니다.
| Key | Value |
|---|---|
| VWR_PAGE_DOMAIN | http(s)://{CNAME_DOMAIN} e.g. https://wait.stclab.com |
compute purge
- Compute 메뉴의 Compute Services에서 에이전트를 적용한 service를 선택합니다.
- [Purge]를 클릭하고 [Purge all]을 선택합니다.
- service name을 입력하고 [Purge all] 버튼을 클릭합니다.
쿠키 도메인 설정
NetFUNNEL 에이전트는 진입 후 발급받은 키를 쿠키에 저장할 때 현재 페이지의 도메인을 기준으로 저장합니다. 만약 서로 다른 서브 도메인 간에 키를 공유해야 할 경우 메인 도메인이 쿠키에 저장되도록 설정합니다.
netfunnel.stclab.com과 botmanager.stclab.com와 같이
서브 도메인이 서로 다른 페이지에서 쿠키를 공유해야 하면 .stclab.com으로 설정합니다.
config store 설정
- Resources 메뉴의 Config stores에서 에이전트에서 사용 중인 store를 선택합니다.
- [+ Add item]을 클릭하고 다음 표를 참고하여 추가합니다.
| Key | Value |
|---|---|
| COOKIE_DOMAIN | .{MAIN_DOMAIN} e.g. .stclab.com |
compute purge
- Compute 메뉴의 Compute Services에서 에이전트를 적용한 service를 선택합니다.
- [Purge]를 클릭하고 [Purge all]을 선택합니다.
- service name을 입력하고 [Purge all] 버튼을 클릭합니다.