准备工作
确保您已部署正常运行的 AlloyDB Omni 集群,并且 编排器已安装 在控制节点上。您还必须确保负载均衡器或数据库节点上的端口 6432 已打开,以允许传入 PgBouncer 的流量。
准备资源规范
创建一个资源规范文件(例如 pgbouncer_spec.yaml),用于定义 PgBouncer 资源。此文件介绍了连接池程序及其与数据库集群的关联。
PgBouncer:
metadata:
name: PGBOUNCER_RESOURCE_NAME
spec:
dbclusterRef: CLUSTER_NAME
allowSuperUserAccess: ALLOW_SUPERUSER_ACCESS
替换以下内容:
PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。CLUSTER_NAME:AlloyDB Omni 数据库集群的名称。使用您在引导集群时声明的同一名称。ALLOW_SUPERUSER_ACCESS:指定是否允许超级用户访问数据库。将此项设置为true或false。
引导 PgBouncer
如需引导 PgBouncer 连接池程序,请使用 Ansible 或 AlloyDB Omni 编排器 CLI (alloydbctl):
Ansible
如需使用 Ansible 引导 PgBouncer,您可以使用一个 playbook,该 playbook 使用 google.alloydbomni_orchestrator.bootstrap 角色:
- 创建一个 Ansible playbook(例如
bootstrap_pgbouncer.yaml),该 playbook 指向您的 部署规范 和资源规范:- name: Bootstrap PgBouncer hosts: localhost vars: ansible_user: SSH_USER ansible_ssh_private_key_file: SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.bootstrap
替换以下内容:
SSH_USER:您用于通过 SSH 连接到集群中节点的用户名。SSH_KEY_PATH:用于连接到节点的 SSH 私钥文件的本地路径。
- 从控制节点运行 playbook,并将资源规范作为额外变量传递:
ansible-playbook PGBOUNCER_BOOTSTRAP_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \ -e resource_spec="PGBOUNCER_SPECIFICATION"
执行以下变量替换操作:
PGBOUNCER_BOOTSTRAP_PLAYBOOK:您为引导 PgBouncer 而创建的 playbook 的路径。DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。PGBOUNCER_SPECIFICATION:您在准备资源规范中创建的资源规范的路径。
alloydbctl
您可以使用 alloydbctl 命令行实用程序直接应用 PgBouncer 配置。
如需应用配置,请执行 apply 命令,并同时指定您的 部署规范 和 PgBouncer 资源规范:
alloydbctl apply -d "DEPLOYMENT_SPECIFICATION" -r "PGBOUNCER_SPECIFICATION"
执行以下变量替换操作:
DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。PGBOUNCER_SPECIFICATION:您在准备资源规范中创建的资源规范的路径。
验证部署
选择要用于验证 PgBouncer 资源的状态和配置的界面:
Ansible
如需使用 Ansible 验证部署,请按以下步骤操作:
-
创建一个验证 playbook(例如
verify_pgbouncer.yaml),该 playbook 使用google.alloydbomni_orchestrator.status角色:- name: Verify PgBouncer hosts: localhost vars: ansible_user: SSH_USER ansible_ssh_private_key_file: SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.status
替换以下内容:
SSH_USER:您用于通过 SSH 连接到集群中节点的用户名。SSH_KEY_PATH:用于连接到节点的 SSH 私钥文件的本地路径。
-
从控制节点运行 playbook,并传递清单文件:
ansible-playbook PGBOUNCER_VERIFY_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \ -e resource_type=PgBouncer -e resource_name="PGBOUNCER_RESOURCE_NAME"
执行以下变量替换操作:
PGBOUNCER_VERIFY_PLAYBOOK:您为验证 PgBouncer 部署而创建的 playbook 的路径。DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。
alloydbctl
您可以使用 get 命令检索 PgBouncer 资源的状态:
alloydbctl get -t PgBouncer -n PGBOUNCER_RESOURCE_NAME -d "DEPLOYMENT_SPECIFICATION"
执行以下变量替换操作:
PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。
验证连接池程序
RPM 编排器完成设置后,验证您是否可以通过连接池程序连接到数据库集群:
psql -h VIRTUAL_IP -p 6432 -U postgres将 VIRTUAL_IP 替换为您在
创建集群时配置的虚拟 IP
地址。
PgBouncer 会将您的连接路由到相应的数据库节点。
删除 PgBouncer 连接池程序
您可以使用 Ansible 或 AlloyDB Omni 编排器命令行界面 (CLI) 删除 PgBouncer 连接池程序:
Ansible
如需使用 Ansible 删除 PgBouncer 连接池程序,请按以下步骤操作:
-
创建一个 Ansible playbook(例如
teardown.yaml),该 playbook 使用google.alloydbomni_orchestrator.delete角色:- name: Delete PgBouncer hosts: localhost vars: ansible_user: SSH_USER ansible_ssh_private_key_file: SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.delete
替换以下内容:
SSH_USER:您用于通过 SSH 连接到集群中节点的用户名。SSH_KEY_PATH:用于连接到节点的 SSH 私钥文件的本地路径。
-
使用
ansible-playbook命令运行 playbook。您必须传递以下resource_name:ansible-playbook PGBOUNCER_DELETE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \ -e resource_type=PgBouncer -e resource_name="PGBOUNCER_RESOURCE_NAME"
执行以下变量替换操作:
PGBOUNCER_DELETE_PLAYBOOK:您为删除 PgBouncer 连接池程序而创建的 playbook 的路径。DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。
alloydbctl
如需删除 PgBouncer 资源,请运行 alloydbctl delete 命令:
alloydbctl delete -d "DEPLOYMENT_SPECIFICATION" -t PgBouncer -n "PGBOUNCER_RESOURCE_NAME"
执行以下变量替换操作:
DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。