事前準備
請確認您已部署可正常運作的 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 |
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 角色的劇本:
- 建立 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 私密金鑰檔案的本機路徑,用於連線至節點。
- 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:
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_SPECIFICATION:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。PGBOUNCER_SPECIFICATION:您在「準備資源規格」中建立的資源規格路徑。
驗證 Deployment
選擇要用來驗證 PgBouncer 資源狀態和設定的介面:
Ansible
如要使用 Ansible 驗證部署作業,請按照下列步驟操作:
-
建立驗證應對手冊 (例如
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 私密金鑰檔案本機路徑。
-
從控制節點執行工作手冊,並傳遞商品目錄檔案:
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 連線集區,請按照下列步驟操作:
-
建立使用
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 私密金鑰檔案的本機路徑,用於連線至節點。
-
使用
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 資源的名稱。