使用 PgBouncer 連線集區

本頁面說明如何使用 RPM 自動調度管理工具,設定及啟動 AlloyDB Omni 叢集的 PgBouncer 連線集區。

事前準備

請確認您已部署可正常運作的 AlloyDB Omni 叢集,且已在控制節點上安裝 Orchestrator。此外,您也必須確認負載平衡器或資料庫節點上的通訊埠 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:用戶端中斷連線後,資料庫連線會釋回到集區。
  • transaction:交易完成後,資料庫連線會釋回到集區。
  • statement:查詢完成後,資料庫連線會釋回集區。
    在這個模式下,不允許跨多個陳述式的交易。
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 角色的教戰手冊:

  1. 建立 Ansible 應對手冊 (例如 bootstrap_pgbouncer.yaml),指向您的 Deployment 規格和資源規格:
    - 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 私密金鑰檔案的本機路徑,用於連線至節點。
  2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:
    ansible-playbook PGBOUNCER_BOOTSTRAP_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \
        -e resource_spec="PGBOUNCER_SPECIFICATION"

    請替換下列變數:

    • PGBOUNCER_BOOTSTRAP_PLAYBOOK:您建立用來啟動 PgBouncer 的教戰手冊路徑。
    • DEPLOYMENT_SPECIFICATION:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。
    • PGBOUNCER_SPECIFICATION:您在「準備資源規格」中建立的資源規格路徑。

alloydbctl

您可以使用 alloydbctl 指令列公用程式,直接套用 PgBouncer 設定。

如要套用設定,請執行 apply 指令,並指定Deployment 規格和 PgBouncer 資源規格:

alloydbctl apply -d "DEPLOYMENT_SPECIFICATION" -r "PGBOUNCER_SPECIFICATION"

請替換下列變數:

驗證 Deployment

選擇要用來驗證 PgBouncer 資源狀態和設定的介面:

Ansible

如要使用 Ansible 驗證部署作業,請按照下列步驟操作:

  1. 建立驗證應對手冊,例如 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 私密金鑰檔案的本機路徑,用於連線至節點。
  2. 從控制節點執行工作手冊,並傳遞商品目錄檔案:

    ansible-playbook PGBOUNCER_VERIFY_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \
        -e resource_type=PgBouncer -e resource_name="PGBOUNCER_RESOURCE_NAME"

    請替換下列變數:

    • PGBOUNCER_VERIFY_PLAYBOOK:您建立的 Playbook 路徑,用於驗證 PgBouncer 部署作業。
    • DEPLOYMENT_SPECIFICATION:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。
    • 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 元件」中建立的 Deployment 規格路徑。

驗證連線集區

RPM 協調器完成設定後,請確認您可以透過連線集區連線至資料庫叢集:

psql -h VIRTUAL_IP -p 6432 -U postgres

將 VIRTUAL_IP 替換為建立叢集時設定的虛擬 IP 位址。

PgBouncer 會將連線轉送至適當的資料庫節點。

刪除 PgBouncer 連線集區

您可以使用 Ansible 或 AlloyDB Omni 自動調度管理工具指令列介面 (CLI),刪除 PgBouncer 連線集區:

Ansible

如要使用 Ansible 刪除 PgBouncer 連線集區器,請按照下列步驟操作:

  1. 建立使用 google.alloydbomni_orchestrator.delete 角色的 Ansible 應對手冊,例如 teardown.yaml:

    - 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 私密金鑰檔案本機路徑。
  2. 使用 ansible-playbook 指令執行教戰手冊。您必須傳遞下列 resource_name:

    ansible-playbook PGBOUNCER_DELETE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION" \
        -e resource_type=PgBouncer -e resource_name="PGBOUNCER_RESOURCE_NAME"

    請替換下列變數:

    • PGBOUNCER_DELETE_PLAYBOOK:您建立的 Playbook 路徑,用於刪除 PgBouncer 連線集區。
    • DEPLOYMENT_SPECIFICATION:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。
    • PGBOUNCER_RESOURCE_NAME:PgBouncer 資源的名稱。

alloydbctl

如要刪除 PgBouncer 資源,請執行 alloydbctl delete 指令:

alloydbctl delete -d "DEPLOYMENT_SPECIFICATION" -t PgBouncer -n "PGBOUNCER_RESOURCE_NAME"

請替換下列變數:

  • DEPLOYMENT_SPECIFICATION:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。
  • PGBOUNCER_RESOURCE_NAME:PgBouncer 資源的名稱。