웹사이트

Node.js 앱 확장 및 자동 확장

Auto-scaling grows and shrinks the number of instances running your Node.js app as CPU load changes, so busy periods get more capacity and quiet periods cost less. This guide covers the KPanel tab…

Node.js 앱 스케일링 및 자동 스케일링

자동 스케일링은 CPU 로드 변화에 따라 Node.js 앱을 실행하는 인스턴스 수를 늘리거나 줄이므로, 바쁜 시간에는 더 많은 용량을 얻고 한가한 시간에는 비용이 적게 듭니다. 이 가이드는 KPanel 탭, 모든 설정, 청구 대상, 그리고 앱을 안전하게 스케일링하는 방법을 다룹니다.

KPanel에서 스케일링을 찾는 위치

  1. KPanel에 로그인합니다.
  2. 왼쪽 사이드바에서 Websites를 클릭한 다음 사이트를 클릭합니다.
  3. 사이트의 탭 스트립에서 Advanced를 연 다음 Scaling을 선택합니다.

직접 주소는 /websites/<site-id>/autoscale입니다. 이전 /websites/<site-id>/scaling 주소도 여전히 작동하며 같은 장소로 이동합니다.

KPanel의 Node.js 앱에 대한 자동 스케일링 설정

이 탭은 Node.js 사이트에만 나타납니다. WordPress, WooCommerce, 정적, PHP, Python 또는 Ruby 사이트의 경우 메뉴에 표시되지 않습니다. 메커니즘이 Node.js 프로세스 클러스터를 스케일링하기 때문입니다.

하나의 탭, 하나의 구성

KPanel은 이전에 하나의 설정 세트에 대해 ScalingAutoscale 두 개의 탭을 가지고 있었습니다. 이들은 동일한 구성의 두 가지 보기였으며, 이는 혼동을 야기하는 방법일 뿐이므로 이제 단일 Scaling 탭으로 통합되었습니다: 실시간 상태, 설정, 최근 스케일 이벤트, 그리고 현재 청구 기간의 사용량 및 비용 패널이 모두 한 곳에 있습니다.

작동 방식

앱은 프로세스 클러스터로 실행됩니다. 자동 스케일링은 실행 중인 인스턴스 전체의 평균 CPU를 감시하고 설정한 임계값에 따라 인스턴스를 추가하거나 제거합니다.

클러스터 모드가 필요합니다. 앱이 이미 클러스터 모드에서 실행되고 있지 않으면 자동 스케일링을 활성화하면 자동으로 전환되며, 이는 짧은 재시작을 포함합니다. 페이지는 이것이 발생할 때 알려줍니다.

실시간 상태 읽기

상태 카드는 세 가지를 보여줍니다:

  • Instances: 현재 실행 중인 인스턴스 수입니다.
  • Avg CPU: 이 인스턴스들 전체의 평균 CPU입니다.
  • Cluster: 앱이 클러스터 모드에 있는지 여부입니다. 아니오라고 표시되면 자동 스케일링을 활성화하면 전환됩니다.

앱이 전혀 실행되지 않으면 카드는 0을 표시하는 대신 그렇게 표시합니다.

탭은 또한 가장 최근의 스케일 이벤트 시간인 Last scale 또는 never를 표시합니다.

설정

설정범위수행 역할
Min instances1에서 16최소값. 절대 이 값 아래로 스케일링되지 않음
Max instances1에서 16최대값. 절대 이 값 위로 스케일링되지 않음
Scale up at CPU %5에서 99이 값 위의 평균 CPU는 인스턴스 추가
Scale down at CPU %1에서 95이 값 아래의 평균 CPU는 인스턴스 제거
Cooldown (sec)30에서 3600스케일 작업 사이의 최소 대기 시간

마스터 스위치는 설정 카드 헤더의 토글입니다. 자동 스케일링이 꺼져 있으면 설정은 흐리게 표시되고 앱은 현재 인스턴스 수로 유지됩니다.

합리적인 시작값:

  • Min instances 1 또는 2. 단일 인스턴스의 재시작이 앱을 오프라인으로 만드는 것을 견딜 수 없으면 2.
  • Max instances 피크에서 지불할 의향이 있는 값으로, 최대값이 아니라.
  • 70퍼센트 정도로 스케일 업. 사용하지 않는 헤드룸에 대해 비용을 지불하지 않을 만큼 충분히 높지만, 요청이 대기열에 들어가기 전에 용량을 추가할 시간이 있을 만큼 충분히 낮음.
  • 30퍼센트 정도로 스케일 다운. 두 임계값 사이에 넓은 간격을 유지.
  • 몇 분의 Cooldown. 이것이 가장 과소 평가되는 설정입니다.

두 CPU 임계값을 가깝게 설정하면 플래핑이 발생합니다: 클러스터가 스케일 업되고, 로드가 더 넓게 분산되어 있어 즉시 스케일 다운 임계값 아래로 떨어지고, 스케일 다운되고, 다시 스파이크되고, 반복됩니다. 넓은 간격을 유지하고 넉넉한 쿨다운을 사용하세요. 플래핑은 비용이 들고 앱을 불안정화합니다.

스케일 이벤트

탭은 최신 스케일 이벤트를 먼저 나열하며, 각각 방향, 전후의 인스턴스 수, 트리거한 CPU 수치, 그리고 시간을 표시합니다.

앱이 오작동했을 때 읽을 수 있는 로그입니다. 몇 분 내에 위아래로 이벤트가 연속으로 발생하는 것은 임계값이 너무 가깝거나 쿨다운이 너무 짧다는 뜻입니다. 다시 돌아오지 않은 단일 스케일 업은 로드가 높게 유지되었다는 뜻이며, 이는 구성 문제보다는 용량 문제입니다. 예상했던 이벤트가 전혀 없으면 CPU가 임계값을 넘지 않았거나 자동 스케일링이 꺼져 있다는 뜻입니다.

자동 스케일링 비용

요금제의 기본 할당량을 초과하는 인스턴스는 초 단위로 측정되고 청구됩니다. 탭은 현재 기간에 대해 다음을 보여줍니다:

  • Instance-time used: 시간 및 분 단위로, 원시 인스턴스-초가 아래에 표시됨.
  • Spent so far: 이 기간에 지금까지 소비한 금액.
  • Projected month-end: 지금까지의 사용량에서 외삽한 금액.
  • Tracking: 기록된 총 개수 중 청구된 사용 윈도우의 개수.
  • Period progress: 월의 일 수 중 경과한 일 수.

초당 요금은 같은 패널의 상단에 표시되므로, 청구되는 수치는 항상 적용되는 사용량 옆에 표시됩니다.

예측값은 주의해야 할 수치입니다. 지금까지 사용한 것에서 외삽하므로 월 초 비정상적으로 바쁜 주는 이를 과대평가합니다. 몇 일 후에 확인한 다음 월중에 다시 확인하세요. 결론을 내리기 전에. 예상한 것보다 높으면 스케일 업 임계값을 올리기보다는 최대 인스턴스 수를 낮추세요: 최대값은 하드 제한이고, 임계값은 단지 힌트일 뿐입니다.

최소값으로 스케일 다운하면 측정이 중단됩니다. 자동 스케일링을 완전히 끄면 앱은 현재 인스턴스 수로 유지되므로, 비용이 이유라면 먼저 최소값으로 낮추세요.

앱을 안전하게 스케일링하기

페이지에는 경고가 있으며, 이것이 페이지에서 가장 중요한 것입니다: Node.js 앱이 인스턴스 전체에서 깔끔하게 스케일링하려면 클러스터 안전해야 합니다.

실제로 이는 다음을 의미합니다:

메모리 내 세션 상태 없음. 로그인한 사용자의 세션이 하나의 인스턴스 메모리에 있으면, 요청이 다른 인스턴스에 도달할 때마다 로그아웃됩니다. 세션을 공유 저장소로 이동하세요.

정확성을 위해 의존하는 메모리 내 캐시 없음. 각 인스턴스는 자체 캐시를 가집니다. 일관성이 있어야 하는 캐시는 공유되어야 합니다.

읽을 것으로 예상하는 로컬 파일시스템 쓰기 없음. 한 인스턴스에 의해 로컬 디스크에 기록된 업로드는 다른 인스턴스에서 보이지 않습니다. 공유 저장소에 쓰세요.

보호되지 않은 예약 작업 없음. 타이머가 앱 내에서 실행되면, 모든 인스턴스가 이를 실행합니다. 따라서 4개 인스턴스에서 밤 4시 작업은 4번 실행됩니다. 예약 작업을 cron 작업으로 이동하거나 락으로 보호하세요. Cron Jobs을 참조하세요.

인스턴스 수가 안정적이라고 가정하지 마세요. 인스턴스 인덱스에 의해 작업을 분할하는 모든 것은 수가 변하는 순간 중단됩니다.

이 중 하나라도 앱에 적용되면, 자동 스케일링을 활성화하기 전에 수정하세요. 클러스터 안전하지 않은 앱은 어느 인스턴스가 어느 요청을 제공했는지에 따라 달라지기 때문에 간헐적이고 재현하기 어려운 방식으로 실패합니다.

문제 해결

토글을 활성화할 수 없습니다. 활성화하려면 사이트 쓰기 권한이 필요합니다. 읽기 전용 역할이 있으면 컨트롤이 비활성화됩니다.

자동 스케일링을 활성화했을 때 앱이 재시작되었습니다. 예상된 것입니다. 클러스터 모드로 전환하려면 재시작이 필요하며, 한 번만 발생합니다.

사용자가 무작위로 로그아웃됩니다. 클래식 클러스터 안전하지 않은 증상입니다. 세션은 메모리에 있고 요청은 다른 인스턴스에 도달하고 있습니다.

인스턴스가 스케일 업되고 절대 내려오지 않았습니다. 로드가 스케일 다운 임계값 이상으로 유지되었거나, 트래픽과 독립적으로 CPU를 높게 유지하는 무언가가 있습니다. 이벤트 목록을 확인하고 앱이 실제로 무엇을 하고 있는지 살펴보세요.

예약 작업이 여러 번 실행되었습니다. 모든 인스턴스가 이를 실행했습니다. 이를 cron 작업으로 이동하거나 락을 추가하세요.

아무것도 스케일링되지 않습니다. 토글이 켜져 있는지, 앱이 실행 중인지, 클러스터 모드가 활성화되어 있는지 확인하세요. 그런 다음 CPU가 실제로 이벤트 목록에서 스케일 업 임계값을 넘었는지 확인하세요.

비용이 예상한 것보다 높습니다. 이벤트 목록에서 플래핑을 확인한 다음 최대 인스턴스 수를 낮추세요.

관련 페이지

여전히 도움이 필요하신가요?

다음 주소로 이메일을 보내주세요 support@kapsulehost.com 또는 KPanel에서 채팅을 시작하세요.

KPanel 열기
Node.js 앱 확장 및 자동 확장