프라이빗 앱 자동 시작 및 자동 중지
이 가이드는 프라이빗 네트워크 위에서 다른 앱과만 통신하는 프라이빗(내부) 앱에 대해 Fly Proxy의 autostop/autostart를 설정하는 방법을 설명해요. 앱의 Machine이 요청을 처리하지 않을 때 멈추고, 필요할 때 자동으로 시작되도록 만들 수 있어요. 공개 앱과 동일하게 fly.toml에 서비스를 구성하되, 공개 Anycast 주소 대신 Flycast 주소를 할당해 프라이빗 네트워크에서만 노출하는 방식이에요.
출처: 문서
본문
개요
프라이빗 네트워크 안에서 다른 앱과만 통신하는 프라이빗(내부) 앱이 있다고 가정해 보아요. 이 프라이빗 앱은 데이터베이스, 인증 서버, 혹은 공개 인터넷에 노출하고 싶지 않은 그런 "백엔드" 앱일 수 있어요. 이 앱의 Machine이 다른 앱의 요청을 서빙하지 않을 때는 멈추고, 필요할 때는 자동으로 다시 시작되길 원하실 거예요.
Fly Proxy autostop/autostart를 사용하려면 공개 앱에서 하듯이 fly.toml에 서비스를 구성해야 해요. 다만 공개 Anycast 주소 대신 Flycast 주소를 할당해서 그 서비스들을 프라이빗 네트워크에서만 노출해요.
이 가이드는 들어오는 요청에 따라 Machine을 제어하는 autostop/autostart 사용에 초점을 맞춰요. 그러나 프라이빗 앱에 Flycast를 사용하면 지리 인식 로드 밸런싱 같은 다른 Fly Proxy 기능도 함께 얻을 수 있어요.
Flycast에 대해 자세히 알아보아요.
Flycast 주소로 새 프라이빗 앱 만들기
fly launch로 새 앱을 만들면 자동으로 공개 IPv6 주소와 공유 공개 IPv4 주소가 할당돼요. 앱이 인터넷에서 접근 가능할 필요가 없다는 것을 안다면, Fly Launch에 Flycast 프라이빗 IPv6 주소를 대신 할당하라고 알릴 수 있어요:
fly launch --flycast
다음 단계: 프라이빗 앱 구성 및 배포.
기존 앱에 Flycast 사용하기
이미 앱이 있고 그것을 프라이빗으로 만들고 싶다면, 앱의 공개 IP 주소를 반드시 제거해야 해요.
Flycast 주소 추가
fly ips allocate-v6 --private
공개 IP 주소 제거
앱에 공개 IP 주소가 있는지 확인하려면 IP를 나열해 보아요:
fly ips list
출력 예시:
VERSION IP TYPE REGION CREATED AT
v6 2a09:8280:1::2d:1111 public (dedicated) global Sep 1 2023 19:47
v6 fdaa:2:45b:0:1::11 private global Mar 16 2024 18:20
v4 66.241.124.11 public (shared) Jan 1 0001 00:00
이 예시 앱에는 공개 IPv4와 IPv6 주소가 있어요. 이 공개 주소들은 서비스가 있는 앱에 첫 배포 시 자동으로 할당돼요.
공개 IP 주소를 복사한 뒤 fly ips release 명령을 실행해 앱에서 제거해 보아요:
fly ips release <ip address> <ip address> ...
예를 들면:
fly ips release 2a09:8280:1::2d:1111 66.241.124.11
다음 단계: 아래 프라이빗 앱 구성 및 배포.
프라이빗 앱 구성 및 배포
새 앱을 만들든 기존 앱을 프라이빗으로 만들든, 확인하거나 구성해야 할 몇 가지가 있어요.
fly.toml 구성 파일에 서비스 추가
앱이 프라이빗이었다면, 공개 인터넷을 통해 접근 가능하길 원하지 않았기 때문에 fly.toml에 [http_services] 또는 [services] 섹션이 없었을 수도 있어요. 이제 공개 IP를 제거했으니, 프라이빗 네트워크에서 앱에 접근하도록 서비스를 안전하게 추가하고 Fly Proxy가 Machine을 제어하고 트래픽을 로드 밸런싱하도록 할 수 있어요.
예시 fly.toml 스니펫이에요:
[http_service]
# the port on which your app receives requests over the 6PN
internal_port = 8081
# must be false - Flycast is http-only
force_https = false
# Fly Proxy stops Machines based on traffic
auto_stop_machines = "stop"
# Fly Proxy starts Machines based on traffic
auto_start_machines = true
# Number of Machines to keep running in primary region
min_machines_running = 0
[http_service.concurrency]
type = "requests"
# Fly Proxy uses this limit to determine Machine excess capacity
soft_limit = 250
**중요:** `force_https = false`로 설정하세요. Flycast는 HTTP에서만 동작해요. 모든 프라이빗 네트워크 트래픽이 암호화된 WireGuard 터널을 통과하므로 HTTPS는 필요하지 않아요.
앱 구성과 Fly Proxy autostop/autostart에 대해 자세히 알아보아요.
앱이 `0.0.0.0:`에 바인딩되는지 확인하기
Fly Proxy가 접근할 수 있으려면 앱이 0.0.0.0에서 리슨하고 fly.toml 구성 파일에 정의된 internal_port에 바인딩해야 해요.
앱 배포
구성 변경 사항이 적용되도록 fly deploy를 실행해 보아요.
이제 조직의 다른 앱들은 Flycast IP 주소 또는 <appname>.flycast 도메인을 사용해 프라이빗 앱에 접근할 수 있어요.