본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

프라이빗 앱 자동 시작 및 자동 중지

원문 보기 위키 갱신

이 가이드는 프라이빗 네트워크 위에서 다른 앱과만 통신하는 프라이빗(내부) 앱에 대해 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 도메인을 사용해 프라이빗 앱에 접근할 수 있어요.

더 알아보기 (Learn more)