限制
存在以下限制:
AlloyDB Omni 在端口
5432上运行。不支持配置自定义端口。在创建集群之前,请确保所有数据库参数配置均正确无误。集群创建完毕后,您将无法修改任何数据库参数。
准备工作
在创建集群之前,请完成以下操作:
将外部卷 (
DataDisk) 装载到编排器中预配的所有数据库节点上的 PG_DATA_DIR。如果您计划使用
alloydbctl而不是 Ansible,请确保在所有虚拟机上安装所需的policycoreutils-python-utils软件包。如需安装此软件包,请运行以下命令: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:在操作系统尝试向客户端发送 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
如需创建集群,请完成以下说明:
为数据库集群规范创建 playbook。
- 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 节点的操作系统用户。ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 用于通过 SSH 连接到 AlloyDB Omni 节点的私钥。
运行策略方案。
ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \ -e resource_spec="DBCLUSTER_SPECIFICATIONS"执行以下变量替换操作:
DBCLUSTER_PLAYBOOK:您为数据库集群创建的 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.delete使用
ansible-playbook执行 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。