제한사항
다음과 같은 제한사항이 적용됩니다.
AlloyDB Omni는 포트
5432에서 실행됩니다. 커스텀 포트 구성은 지원되지 않습니다.클러스터를 만들기 전에 모든 데이터베이스 매개변수 구성이 올바른지 확인합니다. 클러스터가 생성되면 데이터베이스 매개변수를 수정할 수 없습니다.
시작하기 전에
클러스터를 만들기 전에 다음을 완료합니다.
오케스트레이터 내에서 프로비저닝된 모든 데이터베이스 노드의 PG_DATA_DIR에 외부 볼륨 (
DataDisk)을 마운트합니다.Ansible 대신
alloydbctl을 사용하려는 경우 필요한policycoreutils-python-utils패키지가 모든 VM에 설치되어 있는지 확인합니다. 이 패키지를 설치하려면 다음 명령어를 실행합니다.sudo dnf install policycoreutils-python-utils환경을 사용하는 경우 Google Cloud 을
ENVIRONMENT_TYPE로 설정합니다.gcp그런 다음root사용자로gcloud auth login을 실행하여 gcloud CLI 계정을 인증해야 합니다. 또한 인증된 계정에는 다음 권한이 있어야 합니다.compute.instances.getcompute.instances.listcompute.instances.updateNetworkInterface
클러스터 사양 준비
클러스터를 만들려면 AlloyDB Omni에서 클러스터를 구성하는 방법을 알아야 합니다. 필요한 사양을 만들려면
DBCluster 형식을 사용하여 YAML 파일을 만듭니다.
Secret:
metadata:
name: db-pw-DBCLUSTER_NAME
spec:
type: Opaque
data:
DBCLUSTER_NAME: BASE64_PASSWORD
---
DBCluster:
metadata:
name: DBCLUSTER_NAME
spec:
databaseVersion: 18.1.0
mode: ""
availability:
numberOfStandbys: NUM_STANDBY_NODES
enableAutoFailover: true
enableAutoHeal: true
autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
replayReplicationSlotsOnStandbys: false
primarySpec:
adminUser:
passwordRef:
name: db-pw-DBCLUSTER_NAME
resources:
cpu: CPU_LIMIT
memory: MEMORY_LIMIT
disks:
- name: DataDisk
path: PG_DATA_DIR
parameters:
max_connections: "MAX_CONNECTIONS"
max_wal_size: "MAX_WAL_SIZE"
max_worker_processes: "MAX_WORKER_PROCESSES"
log_connections: "LOG_CONNECTIONS"
log_disconnections: "LOG_DISCONNECTS"
log_hostname: "LOG_HOSTNAME"
log_statement: "LOG_STATEMENT"
huge_pages: "HUGE_PAGES"
tcp_keepalives_idle: "TCP_KEEPALIVES_IDLE"
tcp_keepalives_interval: "TCP_KEEPALIVES_INTERVAL"
tcp_keepalives_count: "TCP_KEEPALIVES_COUNT"
dbLoadBalancerOptions:
DB_LOAD_BALANCER_TYPE:
loadBalancerIP: "VIRTUAL_IP"
loadBalancerType: "internal"
loadBalancerInterface: "VIRTUAL_IP_INTERFACE"
다음 변수를 바꿉니다.
DBCLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 예를 들면my-dbcluster입니다.BASE64_PASSWORD:postgres관리자 사용자에 사용되는 base64로 인코딩된 비밀번호입니다.NUM_STANDBY_NODES: 클러스터의 대기 노드 수입니다. 예를 들면2입니다.(선택사항)
AUTOFAILOVER_TRIGGER_THRESHOLD: 장애 조치가 발생하기 전에 상태 점검이 실패할 수 있는 횟수입니다. 기본값은3입니다. 최솟값은0이지만 값이0으로 설정된 경우 AlloyDB Omni에서 기본값을 사용합니다.상태 점검이
AUTOFAILOVER_TRIGGER_THRESHOLD번 실패하거나 상태 점검의 누적 기간이HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD초에 도달하면 자동 장애 조치가 발생합니다.(선택사항)
AUTOHEAL_TRIGGER_THRESHOLD: 자동 복구가 시작되기 전에 상태 점검이 실패할 수 있는 횟수입니다. 기본값은3입니다. 최솟값은0이지만 값이0으로 설정된 경우 AlloyDB Omni에서 기본값을 사용합니다.상태 점검이
AUTOHEAL_TRIGGER_THRESHOLD번 실패하거나 상태 점검의 누적 기간이HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD초에 도달하면 자동 복구가 발생합니다.(선택사항)
HEALTHCHECK_PERIOD: 각 상태 점검 사이에 대기할 시간(초)입니다. 기본값은30입니다. 최솟값은1입니다. 최댓값은86400(하루)입니다.CPU_LIMIT: 데이터베이스 컨테이너에 할당할 CPU 수입니다. 예를 들면4입니다.MEMORY_LIMIT: 데이터베이스 컨테이너에 할당할 메모리 양입니다. 예를 들면32Gi,500Mi입니다.PG_DATA_DIR: 데이터베이스 데이터가 저장될 디렉터리의 호스트 경로입니다.(선택사항)
MAX_CONNECTIONS: PostgreSQL 데이터베이스에 대한 동시 연결의 최대 수입니다. 기본값은50입니다. 지원 값의 최솟값도50입니다. 자세한 내용은 PostgreSQLmax_connections참조를 확인하세요.(선택사항)
MAX_WAL_SIZE: 자동 체크포인트 중 미리 쓰기 로그 (WAL)가 증가할 수 있는 최대 크기입니다. 기본값은1GB입니다. 자세한 내용은 PostgreSQLmax_wal_size참조를 확인하세요.(선택사항)
MAX_WORKER_PROCESSES: 단일Gather또는Gather Merge에서 시작할 수 있는 최대 작업자 수입니다. 기본값은64입니다. 자세한 내용은 PostgreSQLmax_worker_processes참조를 확인하세요.(선택사항)
LOG_CONNECTIONS: PostgreSQL 서버에 대한 연결이 로깅되는지 여부를 결정합니다. 기본값은on입니다. 자세한 내용은 PostgreSQLlog_connections참조를 확인하세요.(선택사항)
LOG_DISCONNECTS: PostgreSQL 세션 종료가 로깅되는지 여부를 결정합니다. 기본값은on입니다. 자세한 내용은 PostgreSQLlog_disconnections참조를 확인하세요.(선택사항)
LOG_HOSTNAME: 연결 호스트의 IP 외에 호스트 이름이 로깅되는지 여부를 결정합니다. 기본값은on입니다. 자세한 내용은 다음 PostgreSQLlog_hostname참조를 확인하세요.(선택사항)
LOG_STATEMENT: 로깅되는 SQL 문을 결정합니다. 기본값은none입니다. 자세한 내용은 PostgreSQLlog_statement참조를 확인하세요.(선택사항)
HUGE_PAGES: 기본 공유 메모리 영역에 큰 페이지가 요청되는지 여부를 결정합니다. 기본값은off입니다. 자세한 내용은 PostgreSQLhuge_pages참조를 확인하세요.(선택사항)
TCP_KEEPALIVES_IDLE: OS에서 클라이언트에 TCPkeepalive메시지를 전송하기 전에 네트워크 활동이 없는 시간(초)입니다. 기본값은10입니다. 자세한 내용은 PostgreSQLtcp_keepalives_idle참조를 확인하세요.(선택사항)
TCP_KEEPALIVES_INTERVAL: 클라이언트에서 승인하지 않은 TCPkeepalive메시지를 재전송해야 하는 시간(초)입니다. 기본값은10입니다. 자세한 내용은 PostgreSQLtcp_keepalives_interval참조를 확인하세요.(선택사항)
TCP_KEEPALIVES_COUNT: 서버의 클라이언트 연결이 비활성으로 간주되기 전에 손실될 수 있는 TCPkeepalive메시지 수입니다. 기본값은10입니다. 자세한 내용은 PostgreSQLtcp_keepalives_count참조를 확인하세요.(선택사항)
ENVIRONMENT_TYPE: 클러스터가 설정되는 환경(onprem또는gcp)을 결정합니다.(선택사항)
VIRTUAL_IP: 부하 분산기에서 사용하는 가상 IP 주소입니다.dbLoadBalancerOptions를 정의하는 경우 필수입니다. 자세한 내용은 고가용성 관리를 참조하세요.(선택사항)
VIRTUAL_IP_INTERFACE:VIRTUAL_IP가 구성된 네트워크 인터페이스입니다. 기본값은eth0입니다.
클러스터 만들기
클러스터를 만들려면 환경과 일치하는 탭을 선택하고 안내를 따르세요.
Ansible
클러스터를 만들려면 다음 안내를 따르세요.
데이터베이스 클러스터 사양의 플레이북을 만듭니다.
- name: Create DBCluster hosts: localhost vars: ansible_become: true ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE roles: - role: google.alloydbomni_orchestrator.bootstrap다음 변수를 바꿉니다.
ANSIBLE_USER: Ansible에서 AlloyDB Omni 노드에 로그인하는 데 사용하는 OS 사용자입니다.ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible에서 SSH를 사용하여 AlloyDB Omni 노드에 연결하는 데 사용하는 비공개 키입니다.
플레이북을 실행합니다.
ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \ -e resource_spec="DBCLUSTER_SPECIFICATIONS"다음 변수를 바꿉니다.
DBCLUSTER_PLAYBOOK: 데이터베이스 클러스터에 대해 만든 플레이북의 경로입니다.DEPLOYMENT_SPEC: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.DBCLUSTER_SPECIFICATIONS: 클러스터 사양의 경로입니다.
alloydbctl
클러스터를 만들려면 다음 명령어를 실행합니다.
alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATIONS"다음 변수를 바꿉니다.
DEPLOYMENT_SPEC: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.DBCLUSTER_SPECIFICATIONS: 클러스터 사양의 경로입니다.
클러스터 삭제
클러스터를 삭제하려면 환경과 일치하는 탭을 선택하고 안내를 따르세요.
Ansible
Ansible을 사용하여 클러스터를 삭제하려면 다음을 완료합니다.
teardown.yaml이라는 플레이북을 만듭니다.- name: Tear down AlloyDB Omni cluster hosts: localhost vars: ansible_become: true ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE roles: - role: google.alloydbomni_orchestrator.deleteansible-playbook을 사용하여 플레이북을 실행합니다.DBCluster를resource_type으로 지정하고 삭제할 클러스터의 이름을resource_name으로 지정해야 합니다.ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \ -e `resource_type`=`DBCluster` -e `resource_name`="DBCLUSTER_NAME"
클러스터 상태의 불일치로 인해 정리 프로세스가 실패하는 경우 (예: 노드에 연결할 수 없는 경우) 명령어에 -e force=true를 추가하여 클러스터를 강제 삭제할 수 있습니다. 이렇게 하면 오케스트레이터에서 정리 프로세스 중에 발생하는 오류를 무시하고 최대한 많은 리소스를 삭제하도록 지시합니다.
ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
-e resource_type=DBCluster -e resource_name="DBCLUSTER_NAME" -e force=true alloydbctl
alloydbctl을 사용하여 클러스터를 삭제하려면 다음 명령어를 실행합니다.
alloydbctl delete -d "DEPLOYMENT_SPEC" \
--resource_type DBCluster --resource_name "DBCLUSTER_NAME"다음 변수를 바꿉니다.
DEPLOYMENT_SPEC: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.DBCLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 예를 들면my-dbcluster입니다.