CLI(az 또는 kubectl)를 사용하여 Azure Database for PostgreSQL 서버 스케일 업 및 스케일 다운
서버의 특성 또는 정의를 변경해야 하는 경우가 있습니다. 예시:
- 서버에서 사용하는 vCore 수를 스케일 업하거나 스케일 다운합니다.
- 서버가 사용하는 메모리를 스케일 업 또는 스케일 다운
이 가이드에서는 vCore 및/또는 메모리의 크기를 조정하는 방법을 설명합니다.
서버의 vCore 또는 메모리 설정을 스케일 업하거나 스케일 다운하면 각 vCore 및 메모리 설정에 대해 최소 및/또는 최대를 설정할 수 있습니다. 특정 수의 vCore 또는 특정 양의 메모리를 사용하도록 서버를 구성하려면 최대 설정에 해당하는 최소 설정을 설정합니다. vCore 및 메모리에 대한 값 집합을 늘리기 전에 배포를 호스팅하는 실제 인프라에서
- 사용 가능한 리소스가 충분한지 확인하고 동일한 시스템에 배치된
- 워크로드가 동일한 vCore 또는 메모리를 놓고 경쟁하지 않도록 해야 합니다.
참고 항목
미리 보기 기능으로, 이 문서에 제시된 기술에는 Microsoft Azure 미리 보기에 대한 보충 사용 약관이 적용됩니다.
최신 업데이트는 릴리스 정보에서 확인할 수 있습니다.
서버의 현재 정의 표시
서버의 현재 정의를 표시하고 현재 vCore 및 메모리 설정을 확인하려면 다음 명령 중 하나를 실행합니다.
Azure CLI(az) 사용
az postgres server-arc show -n <server name> --k8s-namespace <namespace> --use-k8s
kubectl을 사용하는 CLI
kubectl describe postgresql/<server name> -n <namespace name>
서버 그룹의 구성을 반환합니다. 기본 설정을 사용하여 서버를 만든 경우 다음과 같은 정의가 표시되어야 합니다.
Spec:
Dev: false
Scheduling:
Default:
Resources:
Requests:
Memory: 256Mi
...
서버 정의 해석
서버의 정의에서 노드당 최소 또는 최대 vCore 및 노드당 최소 또는 최대 메모리 설정을 전달하는 섹션은 "일정" 섹션입니다. 해당 섹션에서 최대 설정은 "제한"이라는 하위 섹션에서 유지되고 최소 설정은 "요청"이라는 하위 섹션에서 유지됩니다.
최대 설정과 다른 최소 설정을 설정하는 경우 구성에서 서버에 요청된 리소스를 할당하는 것을 보장합니다(필요한 경우). 설정한 한도를 초과하지 않습니다.
실제로 서버에서 사용되는 리소스(vCore 및 메모리)는 최대 설정에 따르며 클러스터에서 사용할 수 있는 워크로드 및 리소스에 따라 달라집니다. 설정을 최댓값으로 제한하지 않으면 서버는 Kubernetes 클러스터가 서버에서 예약된 Kubernetes 노드에 할당하는 모든 리소스를 최대로 사용할 수 있습니다.
기본 구성에서는 최소 메모리만 PostgreSQL 서버를 실행하는 데 권장되는 최소 메모리 크기이므로 256Mi로 설정됩니다.
참고 항목
최솟값을 설정한다고 해서 서버가 반드시 해당 최솟값을 사용한다는 의미는 아닙니다. 이는 서버가 필요하면 최소한 이 최소 할당이 보장된다는 것을 의미합니다. 예를 들어 --minCpu 2
를 설정하는 것을 가정해 보겠습니다. 서버가 항상 2개 이상의 vCore를 사용한다는 의미는 아닙니다. 대신 서버가 필요한 양이 많지 않은 경우 2개 미만의 vCore를 사용하여 시작할 수 있으며 이는 나중에 필요할 경우 최소 2개의 vCore를 할당하는 것을 보장합니다. 이는 Kubernetes 클러스터가 필요한 경우 서버에 2개의 vCore를 할당할 수 있도록 이러한 방법으로 다른 워크로드에 리소스를 할당하는 것을 의미합니다. 또한 스케일 업 및 스케일 다운은 kubernetes Pod를 다시 시작해야 하므로 온라인 작업이 아닙니다.
참고 항목
시스템 구성을 수정하기 전에 여기에서 Kubernetes 리소스 모델을 숙지해야 합니다.
서버 스케일 업 및 스케일 다운
스케일 업은 서버의 vCore 및/또는 메모리 설정 값을 늘리는 것을 의미합니다. 스케일 다운은 서버의 vCore 및/또는 메모리 설정 값을 줄이는 것을 의미합니다.
설정하려는 설정은 Kubernetes 클러스터에 대해 설정한 구성 내에서 고려해야 합니다. Kubernetes 클러스터가 충족시킬 수 없는 값을 설정하지 않았는지 확인합니다. 이로 인해 오류가 발생하거나 예측할 수 없는 동작(예: 데이터베이스 인스턴스 사용 불가)이 발생할 수 있습니다. 예를 들어 구성 변경 후 서버의 상태가 오랫동안 업데이트 상태로 유지되는 경우 아래 매개 변수를 Kubernetes 클러스터가 충족하지 못하는 값으로 설정하는 것을 나타낼 수 있습니다. 이 경우 변경 내용을 되돌리거나 _troubleshooting_section을 읽습니다.
어떤 설정을 설정해야 하나요?
- 최소 vCore를 설정하려면
--cores-request
를 설정합니다. - 최대 vCore를 설정하려면
--cores-limit
를 설정합니다. - 최소 메모리를 설정하려면
--memory-request
를 설정합니다. - 최대 메모리를 설정하려면
--memory-limit
를 설정합니다.
주의
Kubernetes를 통해 해당 요청 설정을 구성하지 않고 제한 설정을 구성하면 요청 값이 제한과 동일한 값이 됩니다. 이로 인해 충분한 리소스와 함께 사용할 수 있는 Kubernetes 노드가 없는 경우 해당 Pod가 다시 예약되지 않을 수 있기 때문에 서버를 사용하지 못할 수 있습니다. 따라서 이러한 상황을 방지하기 위해 아래 예제에서는 요청 및 제한 설정을 모두 설정하는 방법을 보여줍니다.
일반 구문은 다음과 같습니다.
az postgres server-arc edit -n <server name> --memory-limit/memory-request/cores-request/cores-limit <val> --k8s-namespace <namespace> --use-k8s
메모리 설정에 대해 나타내는 값은 숫자 뒤에 볼륨 단위가 나옵니다. 예를 들어 1Gb를 나타내려면 1024Mi 또는 1Gi를 나타냅니다. 코어 수를 나타내려면 단위 없이 숫자를 전달하면 됩니다.
Azure CLI를 사용하는 예제
코어가 2개를 초과하지 않도록 서버 구성:
az postgres server-arc edit -n postgres01 --cores-request 1, --cores-limit 2 --k8s-namespace arc --use-k8s
참고 항목
이러한 매개 변수에 대한 자세한 내용은 az postgres server-arc update --help
를 실행합니다.
kubectl
과 같은 Kubernetes 네이티브 도구를 사용하는 예제
다음 명령을 실행합니다.
kubectl edit postgresql/<server name> -n <namespace name>
그러면 vi
편집기에서 구성을 탐색하고 변경할 수 있습니다. 다음을 사용하여 원하는 설정을 사양의 필드 이름에 매핑합니다.
주의
다음은 구성을 편집하는 방법을 보여 주도록 제공된 예제입니다. 구성을 업데이트하기 전에 매개 변수를 Kubernetes 클러스터에서 사용할 수 있는 값으로 설정해야 합니다.
예를 들어 코디네이터와 작업자 역할 모두에 대해 다음 설정을 다음 값으로 설정하려는 경우입니다.
- 최소 vCore =
2
- 최대 vCore =
4
- 최소 메모리 =
512Mb
- 최대 메모리 =
1Gb
아래 구성과 일치하도록 서버 그룹의 정의를 설정합니다.
...
spec:
dev: false
scheduling:
default:
resources:
requests:
cpu: "2"
memory: 256Mi
limits:
cpu: "4"
memory: 1Gi
...
vi
편집기에 익숙하지 않은 경우 여기에서 필요할 수 있는 명령에 대한 설명을 참조하세요.
- 편집 모드:
i
- 화살표를 사용하여 이동
- 편집 중지:
esc
- 저장하지 않고 종료:
:qa!
- 저장 후 종료:
:qw!
기본 값으로 초기화
코어/메모리 제한/요청 매개 변수를 기본값으로 다시 설정하려면 해당 매개 변수를 편집하고 실제 값 대신 빈 문자열을 전달합니다. 예를 들어 코어 제한 매개 변수를 다시 설정하려는 경우 다음 명령을 실행합니다.
az postgres server-arc edit -n postgres01 --cores-request '' --k8s-namespace arc --use-k8s
az postgres server-arc edit -n postgres01 --cores-limit '' --k8s-namespace arc --use-k8s
또는
az postgres server-arc edit -n postgres01 --cores-request '' --cores-limit '' --k8s-namespace arc --use-k8s