您可以向现有集群添加备用节点,以扩缩读取工作负载或提高高可用性。您还可以移除特定的数据库节点,以便进行有针对性的维护或永久停用,从而减少集群容量。
准备工作
添加数据库节点
如需向集群添加新的备用数据库节点,您必须同时更新部署规范(也称为清单)和数据库集群资源规范。
如需更新部署规范,请打开
deployment_spec.yaml文件,然后在primary_instance_nodes组下添加新节点的 IP 地址或主机名。alloydbomni: children: primary_instance_nodes: hosts: db-node-1: db-node-2: NEW_NODE:将
NEW_NODE替换为您要添加的新备用节点的 IP 地址或主机名。如需更新资源规范,请打开
DBCluster资源规范文件,并将numberOfStandbys值增加您要添加的节点数:DBCluster: metadata: name: DB_CLUSTER_NAME spec: # Other configurations omitted for brevity. # Modify the availability block in your existing DBCluster resource spec: availability: numberOfStandbys: NEW_STANDBY_COUNT # Remaining configurations omitted.执行以下变量替换操作:
DB_CLUSTER_NAME:您的数据库集群的名称。NEW_STANDBY_COUNT:集群中新的、增加后的备用节点总数。
使用以下任一方法应用更新后的资源规范。RPM 编排器会自动预配新节点:
alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"Ansible
如需使用 Ansible 应用更改,请完成以下步骤:
创建一个包含以下内容的
add.ymlplaybook:--- # Add AlloyDB Omni database nodes - name: Add AlloyDB Omni database nodes hosts: all become: true vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: PRIVATE_SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.add执行以下变量替换操作:
ANSIBLE_USER:可无密码访问所有节点且具有sudo权限的用户。PRIVATE_SSH_KEY_PATH:用于无密码身份验证的 SSH 私钥的路径。
运行创建的 playbook:
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" add.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"
执行以下变量替换操作:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
移除特定数据库节点
如需从集群中移除特定备用节点,您必须从部署规范中移除该节点并减少备用节点数量。
如需更新部署规范,请打开
deployment_spec.yaml文件,然后从primary_instance_nodes组中移除目标节点的 IP 地址或主机名。如需更新资源规范,请打开
DBCluster资源规范文件并减小numberOfStandbys值:DBCluster: metadata: name: DB_CLUSTER_NAME spec: # Other configurations omitted for brevity. # Modify the availability block in your existing DBCluster resource spec: availability: numberOfStandbys: NEW_STANDBY_COUNT # Remaining configurations omitted.执行以下变量替换操作:
DB_CLUSTER_NAME:您的数据库集群的名称。NEW_STANDBY_COUNT:集群中新的递减后的备用节点总数。
使用以下任一方法应用更新后的清单:
alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"Ansible
如需使用 Ansible 应用更改,请完成以下步骤:
创建一个包含以下内容的
remove.ymlplaybook:--- # Scale-in database nodes from AlloyDB Omni cluster - name: Scale-In AlloyDB Omni Cluster (Logical Discovery & De-registration) hosts: all become: true vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: PRIVATE_SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.remove执行以下变量替换操作:
ANSIBLE_USER:可无密码访问所有节点且具有sudo权限的用户。PRIVATE_SSH_KEY_PATH:用于无密码身份验证的 SSH 私钥的路径。
运行策略方案:
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" remove.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"
执行以下变量替换操作:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
可选:清理已移除节点上的组件。
alloydbctl手动卸载 AlloyDB Omni 组件,以清理已移除的节点。
Ansible
Ansible 编排器会自动清理虚拟机上的以下组件(如果存在):
- AlloyDB Omni
- AlloyDB Omni 监控器
- Node Manager
pgBackRestPgBouncerKeepalived