Fastly Agent
개요
NetFUNNEL Fastly 에이전트는 Fastly Compute Services에서 NetFUNNEL 서버와 통신하는 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으로 serverUrl 도메인을 입력하고 [Add]를 클릭합니다.
- 방금 생성한 host를 선택하여 Edit 페이지로 이동합니다.
- Name을 nf_core로 변경하고 [Update]를 클릭합니다.
nf_setting host 생성
- [+ Create a host]를 클릭하고 Hostname으로 settingUrl 도메인을 입력하고 [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를 추가합니다.
- CLIENT_ID는 NetFUNNEL 콘솔에서 확인하세요.
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
- https://agent-lib.stclab.com/agents/cdn/fastly/netfunnel-fastly-agent-latest.tar 에서 netfunnel-fastly-agent.tar 파일을 다운받으세요.
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-Rust"
service_id = "{SERVICE_ID}"
compute에 에이전트 배포
- netfunnel-fastly-agent 폴더에서 터미널을 열고 아래 명령어를 입력하면 에이전트 코드가 compute로 배포됩니다.
fastly compute deploy
부가 기능
Good Bot 예외 처리
config store 설정을 통해 특정 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 Fastly 에이전트에서는 진입 후 넷퍼넬 키를 자동으로 반납하여 다음 대기자가 진입할 수 있도록 처리하고 있습니다. 만약, 넷퍼넬 키를 바로 반납하지 않고 세그먼트에서 설정한 타임아웃 시간에 넷퍼넬 키를 반납하고 싶은 경우에 사용할 수 있는 기능입니다.
config store 설정
- Resources 메뉴의 Config stores에서 에이전트에서 사용 중인 store를 선택합니다.
- [+ Add item]을 클릭하고 RETURN_KEY (값: true)를 참고하여 추가합니다.
true(기본값)로 할 경우, 대기 완료 및 진입 후 에이전트에서 넷퍼넬 키를 자동으로 반납합니다. false로 할 경우 세그먼트에서 설정한 타임아웃 시간에 키가 반납 처리됩니다.
compute purge
- Compute 메뉴의 Compute Services에서 에이전트를 적용한 service를 선택합니다.
- [Purge]를 클릭하고 [Purge all]을 선택합니다.
- service name을 입력하고 [Purge all] 버튼을 클릭합니다.
대기실 도메인 변경
NetFUNNEL 대기실 페이지의 도메인은 agent-lib.stclab.com입니다. 해당 도메인을 서비스 중인 도메인에 맞게 변경하려면 NetFUNNEL 서비스팀을 통해 원하는 도메인을 알려주시고, config store 설정을 변경해야 합니다.
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 서버에서 발급한 키를 쿠키에 저장할 때 현재 페이지의 도메인을 기준으로 저장합니다. 만약 서로 다른 서브도메인 간에 키를 공유해야할 경우 메인 도메인이 쿠키에 저장되도록 설정합니다.
develop.stclab.com과 staging.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] 버튼을 클릭합니다.