4-node: polar
Categories:
The polar template is based on the 4-node full template.
It replaces the native PostgreSQL kernel with Alibaba Cloud’s PolarDB for PostgreSQL, providing an “cloud-native” Aurora-like PostgreSQL experience.
Check PolarDB for PostgreSQL (POLAR) Kernel for details.
Overview
- Conf Name:
polar - Node Count: 4-node,
pigsty/vagrant/spec/full.rb - Description: Substitutes native PostgreSQL with Alibaba Cloud’s PolarDB for PostgreSQL kernel.
- OS Distro:
el7,el8,el9,u20,u22,u24 - OS Arch:
x86_64 - Related:
full
To enable: Use the -c polar parameter during the configure process:
./configure -c polar This is a 4-node template, you need to modify the IP address of the other 3 nodes after configure
Content
Source: pigsty/conf/polar.yml
all: children: # infra cluster for proxy, monitor, alert, etc.. infra: { hosts: { 10.10.10.10: { infra_seq: 1 } }} # etcd cluster for ha postgres etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } } # postgres example cluster: pg-meta pg-meta: hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } } vars: pg_cluster: pg-meta pg_users: - {name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment: pigsty admin user } - {name: dbuser_view ,password: DBUser.Viewer ,pgbouncer: true ,roles: [dbrole_readonly] ,comment: read-only viewer for meta database } pg_databases: - {name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty]} pg_hba_rules: - {user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: 'allow grafana dashboard access cmdb from infra nodes'} pg_vip_enabled: true pg_vip_address: 10.10.10.2/24 pg_vip_interface: eth1 # pgsql 3 node ha cluster: pg-test pg-test: hosts: 10.10.10.11: { pg_seq: 1, pg_role: primary } # primary instance, leader of cluster 10.10.10.12: { pg_seq: 2, pg_role: replica } # replica instance, follower of leader 10.10.10.13: { pg_seq: 3, pg_role: replica, pg_offline_query: true } # replica with offline access vars: pg_cluster: pg-test # define pgsql cluster name pg_users: [{ name: test , password: test , pgbouncer: true , roles: [ dbrole_admin ] }] pg_databases: [{ name: test }] pg_vip_enabled: true pg_vip_address: 10.10.10.3/24 pg_vip_interface: eth1 vars: # global variables version: v3.3.0 # pigsty version string admin_ip: 10.10.10.10 # admin node ip address region: default # upstream mirror region: default|china|europe node_tune: oltp # node tuning specs: oltp,olap,tiny,crit pg_conf: oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml infra_portal: # domain names and upstream servers home : { domain: h.pigsty } grafana : { domain: g.pigsty ,endpoint: "${admin_ip}:3000" , websocket: true } prometheus : { domain: p.pigsty ,endpoint: "${admin_ip}:9090" } alertmanager : { domain: a.pigsty ,endpoint: "${admin_ip}:9093" } blackbox : { endpoint: "${admin_ip}:9115" } loki : { endpoint: "${admin_ip}:3100" } #----------------------------------# # NODE, PGSQL, PolarDB #----------------------------------# # THIS SPEC REQUIRE AN AVAILABLE POLARDB KERNEL IN THE LOCAL REPO! pg_version: 15 pg_packages: [ 'polardb patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager' ] pg_extensions: [ ] # do not install any vanilla postgresql extensions pg_mode: polar # polardb compatible mode pg_exporter_exclude_database: 'template0,template1,postgres,polardb_admin' pg_default_roles: # default roles and users in postgres cluster - { name: dbrole_readonly ,login: false ,comment: role for global read-only access } - { name: dbrole_offline ,login: false ,comment: role for restricted read-only access } - { name: dbrole_readwrite ,login: false ,roles: [dbrole_readonly] ,comment: role for global read-write access } - { name: dbrole_admin ,login: false ,roles: [pg_monitor, dbrole_readwrite] ,comment: role for object creation } - { name: postgres ,superuser: true ,comment: system superuser } - { name: replicator ,superuser: true ,replication: true ,roles: [pg_monitor, dbrole_readonly] ,comment: system replicator } # <- superuser is required for replication - { name: dbuser_dba ,superuser: true ,roles: [dbrole_admin] ,pgbouncer: true ,pool_mode: session, pool_connlimit: 16 ,comment: pgsql admin user } - { name: dbuser_monitor ,roles: [pg_monitor] ,pgbouncer: true ,parameters: {log_min_duration_statement: 1000 } ,pool_mode: session ,pool_connlimit: 8 ,comment: pgsql monitor user } repo_packages: [ node-bootstrap, infra-package, infra-addons, node-package1, node-package2, pgsql-utility ] repo_extra_packages: [ polardb ] # replace vanilla postgres kernel with polardb kernel Caveat
PolarDB for PostgreSQL does not have ARM architecture packages available at the moment.
It is currently only available on EL 7/8/9 and Ubuntu 20.04/22.04/24.04 systems, and Debian-based operating system support is not currently available.
The latest version of PolarDB is based on the PostgreSQL 15 fork.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.