Machine 크기 정하기 (Machine Sizing)
Machine VM의 크기(CPU와 메모리)를 설정하는 몇 가지 방법을 알려드릴게요. 이 가이드는 Machines API와 fly machine 명령으로 개별 Machine을 만들고 크기를 정하는 방법을 설명해요. Fly Launch 앱에는 같은 일반적인 크기 규칙이 적용되지만, fly scale 명령으로 Machine 그룹을 업데이트하거나 fly.toml 구성 파일에 기본 VM 크기를 설정할 수도 있어요.
출처: 문서
본문
일반 규칙
선택할 수 있는 사전 설정 크기(preset sizes)가 몇 가지 있어요. 각 CPU 선택은 기본적으로 특정 메모리 양에 매핑돼요.
하지만 Machine의 CPU와 메모리를 별도로 확장할 수 있어요. 메모리 한도는 2gb * shared CPU size 또는 8gb * performance CPU size예요. 최소 메모리는 256m * shared CPU size 또는 2048m * performance CPU size예요.
예시:
- shared CPU 4개를 가진다면, 추가할 수 있는 최대 메모리는
2048 * 4 = 8192예요. - performance CPU 4개를 가진다면, 추가할 수 있는 최대 메모리는
8192 * 4 = 32768이에요.
크기 사전 설정 사용하기
가격 페이지에 Machine용으로 나열된 어떤 크기든 Machine을 만들 때 사용할 수 있어요.
performance-2x 머신(CPU 2개, 메모리 4gb)을 시작하는 모습은 다음과 같아요:
curl -i -X POST \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
"http://${FLY_API_HOSTNAME}/v1/apps/my-app-name/machines" \
-d '{
"name": "savvy-machine",
"config": {
"image": "some-savvy-image",
"size": "performance-2x"
}
}'
flyctl을 사용한다면 같은 명령은 이렇게 생겼어요:
fly machine run \
-a my-app-name \
--name savvy-machine \
--vm-size performance-2x \
some-savvy-image
커스텀 크기
Machine을 만들 때 CPU와 메모리 크기를 직접 정의할 수 있어요. 메모리는 shared 크기의 경우 256의 배수, performance 크기의 경우 2048의 배수여야 해요.
여기서는 CPU 2개를 가지되 shared-cpu-2x 크기를 사용할 때 얻는 RAM의 두 배를 가진 Machine을 만들어요.
curl -i -X POST \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
"http://${FLY_API_HOSTNAME}/v1/apps/my-app-name/machines" \
-d '{
"name": "savvy-machine",
"config": {
"image": "some-savvy-image",
"guest": {
"cpu_kind": "shared",
"cpus": 2,
"memory_mb": 1024
}
}
}'
cpu_kind 매개변수는 shared 또는 performance 중 하나일 수 있어요. CPU 유형과 성능에 대해 여기서 자세히 알아보세요.
flyctl을 사용한다면 같은 명령은 이렇게 생겼어요:
fly machine run \
-a my-app-name \
--name savvy-machine \
--vm-cpus 2 \
--vm-memory 1024 \
some-savvy-image
shared와 performance를 위한 CLI 플래그는 아직 없어요. 기본적으로 shared CPU 유형으로 설정돼요.
Machine 크기 조정하기
Machine을 업데이트해 CPU와 메모리를 조정할 수 있어요. Machine을 업데이트하면 VM이 새 것으로 교체되지만, Machine ID는 그대로 유지돼요.
위와 같은 명령으로 Machine을 만들었다면(1024m 메모리 사용), 나중에 이를 512m(허용되는 최소값)로 줄이고 싶을 때 다음 API 호출을 할 수 있어요:
# Updating a machine requires the *entire* config
# so treat this as an example
curl -i -X POST \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
"http://${FLY_API_HOSTNAME}/v1/apps/my-app-name/machines/73d8d46dbee589" \
-d '{
"config": {
"image": "some-savvy-image",
"guest": {
"cpu_kind": "shared",
"cpus": 2,
"memory_mb": 512
}
}
}'
flyctl을 사용한다면 같은 명령은 이렇게 생겼어요:
fly machine update \
-a my-app-name \
-i some-savvy-image \
--vm-cpus 2 \
--vm-memory 512 \
73d8d46dbee589