合 PG高可用集群之Patroni + etcd + HAProxy + keepalived + Prometheus + Grafana监控 部署
Tags: PG高可用GrafanaPrometheuskeepalivedPatroniHAProxyetcd
patroni配置
安装相应的Python模块
6.71、6.72、6.73操作:
1 2 3 4 5 6 7 8 9 10 | -- -i https://mirrors.aliyun.com/pypi/simple/ -- -ihttp://pypi.douban.com/simple/ python3 -m pip install --upgrade pip python3 -m pip install psycopg2_binary python3 -m pip install patroni[etcd] -- 验证是否安装成功 which patroni patronictl --help |
配置patroni的yml参数文件
1 2 3 | mkdir -p /app/patroni/etc/ mkdir -p /app/patroni/log/ chown postgres.postgres -R /app/patroni/ |
节点lhrpgpatroni71
需要注意python的yml文件格式,有严格的缩进要求,且以空格进行缩进,不要使用Tab键,缩进控制不好的话,参数配置将出现各种问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | cat > /app/patroni/etc/patroni_config.yml <<"EOF" scope: pg_cluster namespace: /service name: lhrpgpatroni71 log: level: INFO traceback_level: ERROR dir: /app/patroni/log file_num: 10 file_size: 104857600 restapi: listen: 0.0.0.0:8008 connect_address: 172.72.6.71:8008 etcd: host: 172.72.6.74:2379 bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 max_timelines_history: 0 master_start_timeout: 300 master_stop_timeout: 0 synchronous_mode: false postgresql: use_pg_rewind: true use_slots: true parameters: max_connections: 3000 superuser_reserved_connections: 100 max_locks_per_transaction: 64 max_worker_processes: 2 max_prepared_transactions: 0 wal_level: logical wal_log_hints: on track_commit_timestamp: off max_wal_senders: 10 max_replication_slots: 10 listen_addresses: "*" port: 5432 cluster_name: "pg_cluster" archive_mode: on archive_command: "test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f" postgresql: listen: 0.0.0.0:5432 connect_address: 172.72.6.71:5432 data_dir: /var/lib/pgsql/13/data pgpass: /home/postgres/.pgpass pg_ctl_timeout: 60 use_pg_rewind: true remove_data_directory_on_rewind_failure: false remove_data_directory_on_diverged_timelines: true authentication: replication: username: replhr password: lhr superuser: username: postgres password: lhr tags: nofailover: false noloadbalance: false clonefrom: false nosync: false EOF |
节点lhrpgpatroni72
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | cat > /app/patroni/etc/patroni_config.yml <<"EOF" scope: pg_cluster namespace: /service name: lhrpgpatroni72 log: level: INFO traceback_level: ERROR dir: /app/patroni/log file_num: 10 file_size: 104857600 restapi: listen: 0.0.0.0:8008 connect_address: 172.72.6.72:8008 etcd: host: 172.72.6.75:2379 bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 max_timelines_history: 0 master_start_timeout: 300 master_stop_timeout: 0 synchronous_mode: false postgresql: use_pg_rewind: true use_slots: true parameters: max_connections: 3000 superuser_reserved_connections: 100 max_locks_per_transaction: 64 max_worker_processes: 2 max_prepared_transactions: 0 wal_level: logical wal_log_hints: on track_commit_timestamp: off max_wal_senders: 10 max_replication_slots: 10 listen_addresses: "*" port: 5432 cluster_name: "pg_cluster" archive_mode: on archive_command: "test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f" postgresql: listen: 0.0.0.0:5432 connect_address: 172.72.6.72:5432 data_dir: /var/lib/pgsql/13/data pgpass: /home/postgres/.pgpass pg_ctl_timeout: 60 use_pg_rewind: true remove_data_directory_on_rewind_failure: false remove_data_directory_on_diverged_timelines: true authentication: replication: username: replhr password: lhr superuser: username: postgres password: lhr tags: nofailover: false noloadbalance: false clonefrom: false nosync: false EOF |
节点lhrpgpatroni73
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | cat > /app/patroni/etc/patroni_config.yml <<"EOF" scope: pg_cluster namespace: /service name: lhrpgpatroni73 log: level: INFO traceback_level: ERROR dir: /app/patroni/log file_num: 10 file_size: 104857600 restapi: listen: 0.0.0.0:8008 connect_address: 172.72.6.73:8008 etcd: host: 172.72.6.76:2379 bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 max_timelines_history: 0 master_start_timeout: 300 master_stop_timeout: 0 synchronous_mode: false postgresql: use_pg_rewind: true use_slots: true parameters: max_connections: 3000 superuser_reserved_connections: 100 max_locks_per_transaction: 64 max_worker_processes: 2 max_prepared_transactions: 0 wal_level: logical wal_log_hints: on track_commit_timestamp: off max_wal_senders: 10 max_replication_slots: 10 listen_addresses: "*" port: 5432 cluster_name: "pg_cluster" archive_mode: on archive_command: "test ! -f /postgresql/archive/%f && cp %p /postgresql/archive/%f" postgresql: listen: 0.0.0.0:5432 connect_address: 172.72.6.73:5432 data_dir: /var/lib/pgsql/13/data pgpass: /home/postgres/.pgpass pg_ctl_timeout: 60 use_pg_rewind: true remove_data_directory_on_rewind_failure: false remove_data_directory_on_diverged_timelines: true authentication: replication: username: replhr password: lhr superuser: username: postgres password: lhr tags: nofailover: false noloadbalance: false clonefrom: false nosync: false EOF |
笔耕不辍,我辈学习楷模。