管理 AlloyDB Omni 中的集群节点

选择文档版本:

本页面介绍了如何使用 RPM 编排器在现有 AlloyDB Omni 集群中添加或移除数据库节点。

您可以向现有集群添加备用节点,以扩缩读取工作负载或提高高可用性。您还可以移除特定的数据库节点,以便进行有针对性的维护或永久停用,从而减少集群容量。

准备工作

  • 确保集群处于良好状态,并且 status.phaseReady
  • 如果您添加新节点,请验证该节点是否符合系统要求,以及是否已安装所需的 AlloyDB Omni 组件。

添加数据库节点

如需向集群添加新的备用数据库节点,您必须同时更新部署规范(也称为清单)和数据库集群资源规范。

  1. 如需更新部署规范,请打开 deployment_spec.yaml 文件,然后在 primary_instance_nodes 组下添加新节点的 IP 地址或主机名。

    alloydbomni:
      children:
        primary_instance_nodes:
          hosts:
            db-node-1:
            db-node-2:
            NEW_NODE:
    

    NEW_NODE 替换为您要添加的新备用节点的 IP 地址或主机名。

  2. 如需更新资源规范,请打开 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:集群中新的、增加后的备用节点总数。
  3. 使用以下任一方法应用更新后的资源规范。RPM 编排器会自动预配新节点:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Ansible

    如需使用 Ansible 应用更改,请完成以下步骤:

    1. 创建一个包含以下内容的 add.yml playbook:

      ---
      # 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 私钥的路径。
    2. 运行创建的 playbook:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" add.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

    执行以下变量替换操作:

    • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

移除特定数据库节点

如需从集群中移除特定备用节点,您必须从部署规范中移除该节点并减少备用节点数量。

  1. 如需更新部署规范,请打开 deployment_spec.yaml 文件,然后从 primary_instance_nodes 组中移除目标节点的 IP 地址或主机名。

  2. 如需更新资源规范,请打开 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:集群中新的递减后的备用节点总数。
  3. 使用以下任一方法应用更新后的清单:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Ansible

    如需使用 Ansible 应用更改,请完成以下步骤:

    1. 创建一个包含以下内容的 remove.yml playbook:

      ---
      # 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 私钥的路径。
    2. 运行策略方案:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" remove.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

    执行以下变量替换操作:

    • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。
  4. 可选:清理已移除节点上的组件。

    alloydbctl

    手动卸载 AlloyDB Omni 组件,以清理已移除的节点。

    Ansible

    Ansible 编排器会自动清理虚拟机上的以下组件(如果存在):

    • AlloyDB Omni
    • AlloyDB Omni 监控器
    • Node Manager
    • pgBackRest
    • PgBouncer
    • Keepalived