准备工作
确保您已部署正常运行的 AlloyDB Omni 集群,并且 编排器已安装 在控制节点上。您还必须确保负载均衡器或数据库节点上的端口
6432 已打开,以允许传入 PgBouncer 的流量。
准备资源规范
创建一个资源规范文件(例如 pgbouncer_spec.yaml),用于定义 PgBouncer 资源。此文件介绍了连接池程序及其与数据库集群的关联。
PgBouncer:
metadata:
name: PGBOUNCER_RESOURCE_NAME
spec:
dbclusterRef: CLUSTER_NAME
allowSuperUserAccess: ALLOW_SUPERUSER_ACCESS
parameters:
pool_mode: POOL_MODE
ignore_startup_parameters: IGNORE_STARTUP_PARAMETERS
default_pool_size: "DEFAULT_POOL_SIZE"
max_client_conn: "MAX_CLIENT_CONN"
max_db_connections: "MAX_DB_CONNECTIONS"
替换以下内容:
PGBOUNCER_RESOURCE_NAME:PgBouncer 资源的名称。CLUSTER_NAME:AlloyDB Omni 数据库集群的名称。使用您在启动集群时声明的名称。ALLOW_SUPERUSER_ACCESS:指定是否允许超级用户访问数据库。将其设置为true或false。POOL_MODE:指定其他客户端可以重复使用数据库连接的时间。如需了解详情,请参阅配置 PgBouncer 设置。IGNORE_STARTUP_PARAMETERS:指定 PgBouncer 不允许的参数,以便在启动期间忽略这些参数。DEFAULT_POOL_SIZE:每对用户-数据库允许的数据库连接数上限。MAX_CLIENT_CONN:客户端连接数上限。MAX_DB_CONNECTIONS:每个数据库允许的服务器连接数上限。
配置 PgBouncer 设置
使用以下参数配置 PgBouncer 设置:
| 参数 | 说明 | 默认值 |
|---|---|---|
pool_mode |
指定其他客户端可以重复使用数据库连接的时间。 允许的值如下所示:
|
session |
ignore_startup_parameters |
指定 PgBouncer 不允许的参数,以便在启动期间忽略这些参数。 | |
default_pool_size |
每对用户-数据库允许的数据库连接数上限。 | 20 |
max_client_conn |
客户端连接数上限。 | 100 |
max_db_connections |
每个数据库允许的服务器连接数上限,与用户无关。设置为 0 表示无限制。 | 0 |
启动 PgBouncer
如需启动 PgBouncer 连接池程序,请使用 Ansible 或 AlloyDB Omni 编排器 CLI (alloydbctl):
Ansible
如需使用 Ansible 启动 PgBouncer,请使用一个使用 google.alloydbomni_orchestrator.bootstrap 角色的 playbook:
- 创建一个 Ansible playbook(例如
bootstrap_pgbouncer.yaml),指向您的 部署规范 和资源规范:- 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:您在准备资源规范中创建的资源规范的路径。
验证 Deployment
选择要用于验证 PgBouncer 资源的状态和配置的界面:
Ansible
如需使用 Ansible 验证 Deployment,请按以下步骤操作:
-
创建一个验证 playbook(例如
verify_pgbouncer.yaml),使用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 Deployment 而创建的 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),使用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 资源的名称。